Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/miloyip/rapidjson.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/zh-cn
diff options
context:
space:
mode:
Diffstat (limited to 'zh-cn')
-rw-r--r--zh-cn/allocators_8h_source.html290
-rw-r--r--zh-cn/annotated.html13
-rw-r--r--zh-cn/annotated_dup.js (renamed from zh-cn/annotated.js)2
-rw-r--r--zh-cn/biginteger_8h_source.html307
-rw-r--r--zh-cn/classes.html47
-rw-r--r--zh-cn/classrapidjson_1_1_allocator.html31
-rw-r--r--zh-cn/classrapidjson_1_1_auto_u_t_f_input_stream-members.html19
-rw-r--r--zh-cn/classrapidjson_1_1_auto_u_t_f_input_stream.html51
-rw-r--r--zh-cn/classrapidjson_1_1_auto_u_t_f_input_stream.js8
-rw-r--r--zh-cn/classrapidjson_1_1_auto_u_t_f_output_stream-members.html17
-rw-r--r--zh-cn/classrapidjson_1_1_auto_u_t_f_output_stream.html45
-rw-r--r--zh-cn/classrapidjson_1_1_auto_u_t_f_output_stream.js6
-rw-r--r--zh-cn/classrapidjson_1_1_basic_i_stream_wrapper-members.html17
-rw-r--r--zh-cn/classrapidjson_1_1_basic_i_stream_wrapper.html43
-rw-r--r--zh-cn/classrapidjson_1_1_basic_i_stream_wrapper.js6
-rw-r--r--zh-cn/classrapidjson_1_1_basic_o_stream_wrapper-members.html15
-rw-r--r--zh-cn/classrapidjson_1_1_basic_o_stream_wrapper.html37
-rw-r--r--zh-cn/classrapidjson_1_1_basic_o_stream_wrapper.js4
-rw-r--r--zh-cn/classrapidjson_1_1_crt_allocator-members.html11
-rw-r--r--zh-cn/classrapidjson_1_1_crt_allocator.html19
-rw-r--r--zh-cn/classrapidjson_1_1_encoded_input_stream-members.html15
-rw-r--r--zh-cn/classrapidjson_1_1_encoded_input_stream.html37
-rw-r--r--zh-cn/classrapidjson_1_1_encoded_input_stream.js4
-rw-r--r--zh-cn/classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4-members.html15
-rw-r--r--zh-cn/classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html43
-rw-r--r--zh-cn/classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.js4
-rw-r--r--zh-cn/classrapidjson_1_1_encoded_output_stream-members.html15
-rw-r--r--zh-cn/classrapidjson_1_1_encoded_output_stream.html37
-rw-r--r--zh-cn/classrapidjson_1_1_encoded_output_stream.js4
-rw-r--r--zh-cn/classrapidjson_1_1_encoding.html57
-rw-r--r--zh-cn/classrapidjson_1_1_file_read_stream-members.html17
-rw-r--r--zh-cn/classrapidjson_1_1_file_read_stream.html45
-rw-r--r--zh-cn/classrapidjson_1_1_file_read_stream.js6
-rw-r--r--zh-cn/classrapidjson_1_1_file_write_stream-members.html15
-rw-r--r--zh-cn/classrapidjson_1_1_file_write_stream.html39
-rw-r--r--zh-cn/classrapidjson_1_1_file_write_stream.js4
-rw-r--r--zh-cn/classrapidjson_1_1_generic_array-members.html67
-rw-r--r--zh-cn/classrapidjson_1_1_generic_array.html155
-rw-r--r--zh-cn/classrapidjson_1_1_generic_array.js50
-rw-r--r--zh-cn/classrapidjson_1_1_generic_document-members.html135
-rw-r--r--zh-cn/classrapidjson_1_1_generic_document.html815
-rw-r--r--zh-cn/classrapidjson_1_1_generic_document.js10
-rw-r--r--zh-cn/classrapidjson_1_1_generic_member_iterator-members.html35
-rw-r--r--zh-cn/classrapidjson_1_1_generic_member_iterator.html151
-rw-r--r--zh-cn/classrapidjson_1_1_generic_member_iterator.js24
-rw-r--r--zh-cn/classrapidjson_1_1_generic_object-members.html103
-rw-r--r--zh-cn/classrapidjson_1_1_generic_object.html267
-rw-r--r--zh-cn/classrapidjson_1_1_generic_object.js86
-rw-r--r--zh-cn/classrapidjson_1_1_generic_pointer-members.html91
-rw-r--r--zh-cn/classrapidjson_1_1_generic_pointer.html510
-rw-r--r--zh-cn/classrapidjson_1_1_generic_pointer.js80
-rw-r--r--zh-cn/classrapidjson_1_1_generic_reader-members.html17
-rw-r--r--zh-cn/classrapidjson_1_1_generic_reader.html85
-rw-r--r--zh-cn/classrapidjson_1_1_generic_reader.js6
-rw-r--r--zh-cn/classrapidjson_1_1_generic_schema_document-members.html13
-rw-r--r--zh-cn/classrapidjson_1_1_generic_schema_document.html57
-rw-r--r--zh-cn/classrapidjson_1_1_generic_schema_document.js2
-rw-r--r--zh-cn/classrapidjson_1_1_generic_schema_validator-members.html19
-rw-r--r--zh-cn/classrapidjson_1_1_generic_schema_validator.html121
-rw-r--r--zh-cn/classrapidjson_1_1_generic_schema_validator.js8
-rw-r--r--zh-cn/classrapidjson_1_1_generic_string_buffer-members.html17
-rw-r--r--zh-cn/classrapidjson_1_1_generic_string_buffer.html61
-rw-r--r--zh-cn/classrapidjson_1_1_generic_string_buffer.js6
-rw-r--r--zh-cn/classrapidjson_1_1_generic_value-members.html125
-rw-r--r--zh-cn/classrapidjson_1_1_generic_value.html1004
-rw-r--r--zh-cn/classrapidjson_1_1_generic_value.js114
-rw-r--r--zh-cn/classrapidjson_1_1_handler.html32
-rw-r--r--zh-cn/classrapidjson_1_1_i_generic_remote_schema_document_provider-members.html11
-rw-r--r--zh-cn/classrapidjson_1_1_i_generic_remote_schema_document_provider.html15
-rw-r--r--zh-cn/classrapidjson_1_1_memory_pool_allocator-members.html15
-rw-r--r--zh-cn/classrapidjson_1_1_memory_pool_allocator.html53
-rw-r--r--zh-cn/classrapidjson_1_1_memory_pool_allocator.js4
-rw-r--r--zh-cn/classrapidjson_1_1_pretty_writer-members.html15
-rw-r--r--zh-cn/classrapidjson_1_1_pretty_writer.html223
-rw-r--r--zh-cn/classrapidjson_1_1_schema_validating_reader-members.html21
-rw-r--r--zh-cn/classrapidjson_1_1_schema_validating_reader.html58
-rw-r--r--zh-cn/classrapidjson_1_1_schema_validating_reader.js10
-rw-r--r--zh-cn/classrapidjson_1_1_stream.html41
-rw-r--r--zh-cn/classrapidjson_1_1_writer-members.html15
-rw-r--r--zh-cn/classrapidjson_1_1_writer.html204
-rw-r--r--zh-cn/classrapidjson_1_1_writer.js4
-rw-r--r--zh-cn/dir_0b07344794a20f8375311f92e90cd9a3.html143
-rw-r--r--zh-cn/dir_2e777bb85672ca91d8484c1593fb1d89.js4
-rw-r--r--zh-cn/dir_32fb88e4d38e67d524aa70efbc36f66b.html108
-rw-r--r--zh-cn/dir_32fb88e4d38e67d524aa70efbc36f66b.js (renamed from zh-cn/dir_0b07344794a20f8375311f92e90cd9a3.js)6
-rw-r--r--zh-cn/dir_5167ae66a3a40cb9e5e46c75b7477e81.html121
-rw-r--r--zh-cn/dir_5937892b65cdaf02cc4201f920170bd1.html (renamed from zh-cn/dir_fe9dda5e4327cd9afbdccfe35db969bf.html)17
-rw-r--r--zh-cn/dir_5937892b65cdaf02cc4201f920170bd1.js (renamed from zh-cn/dir_fe9dda5e4327cd9afbdccfe35db969bf.js)2
-rw-r--r--zh-cn/dir_8d7584a8244d286291cd37b99676a43b.html94
-rw-r--r--zh-cn/dir_8d7584a8244d286291cd37b99676a43b.js (renamed from zh-cn/dir_5167ae66a3a40cb9e5e46c75b7477e81.js)2
-rw-r--r--zh-cn/dir_d44c64559bbebec7f509842c48db8b23.html (renamed from zh-cn/dir_2e777bb85672ca91d8484c1593fb1d89.html)17
-rw-r--r--zh-cn/dir_d44c64559bbebec7f509842c48db8b23.js4
-rw-r--r--zh-cn/diyfp_8h_source.html273
-rw-r--r--zh-cn/doc.png (renamed from zh-cn/ftv2doc.png)bin746 -> 746 bytes
-rw-r--r--zh-cn/document_8h.html35
-rw-r--r--zh-cn/document_8h_source.html2744
-rw-r--r--zh-cn/doxygen.css186
-rw-r--r--zh-cn/dtoa_8h_source.html260
-rw-r--r--zh-cn/en_8h_source.html93
-rw-r--r--zh-cn/encodedstream_8h_source.html314
-rw-r--r--zh-cn/encodings_8h_source.html734
-rw-r--r--zh-cn/error_8h.html24
-rw-r--r--zh-cn/error_8h.js2
-rw-r--r--zh-cn/error_8h_source.html186
-rw-r--r--zh-cn/filereadstream_8h_source.html114
-rw-r--r--zh-cn/files.html19
-rw-r--r--zh-cn/files.js2
-rw-r--r--zh-cn/filewritestream_8h_source.html119
-rw-r--r--zh-cn/folderclosed.png (renamed from zh-cn/ftv2folderclosed.png)bin616 -> 616 bytes
-rw-r--r--zh-cn/folderopen.png (renamed from zh-cn/ftv2folderopen.png)bin597 -> 597 bytes
-rw-r--r--zh-cn/ftv2blank.pngbin86 -> 0 bytes
-rw-r--r--zh-cn/ftv2lastnode.pngbin86 -> 0 bytes
-rw-r--r--zh-cn/ftv2link.pngbin746 -> 0 bytes
-rw-r--r--zh-cn/ftv2mlastnode.pngbin246 -> 0 bytes
-rw-r--r--zh-cn/ftv2mnode.pngbin246 -> 0 bytes
-rw-r--r--zh-cn/ftv2node.pngbin86 -> 0 bytes
-rw-r--r--zh-cn/ftv2plastnode.pngbin229 -> 0 bytes
-rw-r--r--zh-cn/ftv2pnode.pngbin229 -> 0 bytes
-rw-r--r--zh-cn/ftv2vertline.pngbin86 -> 0 bytes
-rw-r--r--zh-cn/functions.html17
-rw-r--r--zh-cn/functions_0x7e.html (renamed from zh-cn/functions_~.html)15
-rw-r--r--zh-cn/functions_b.html15
-rw-r--r--zh-cn/functions_c.html21
-rw-r--r--zh-cn/functions_d.html13
-rw-r--r--zh-cn/functions_dup.js2
-rw-r--r--zh-cn/functions_e.html17
-rw-r--r--zh-cn/functions_f.html13
-rw-r--r--zh-cn/functions_func.html17
-rw-r--r--zh-cn/functions_func.js2
-rw-r--r--zh-cn/functions_func_0x7e.html (renamed from zh-cn/functions_func_~.html)15
-rw-r--r--zh-cn/functions_func_b.html13
-rw-r--r--zh-cn/functions_func_c.html21
-rw-r--r--zh-cn/functions_func_d.html13
-rw-r--r--zh-cn/functions_func_e.html17
-rw-r--r--zh-cn/functions_func_f.html13
-rw-r--r--zh-cn/functions_func_g.html55
-rw-r--r--zh-cn/functions_func_h.html19
-rw-r--r--zh-cn/functions_func_i.html23
-rw-r--r--zh-cn/functions_func_m.html19
-rw-r--r--zh-cn/functions_func_o.html33
-rw-r--r--zh-cn/functions_func_p.html13
-rw-r--r--zh-cn/functions_func_r.html13
-rw-r--r--zh-cn/functions_func_s.html25
-rw-r--r--zh-cn/functions_func_t.html13
-rw-r--r--zh-cn/functions_func_v.html13
-rw-r--r--zh-cn/functions_func_w.html13
-rw-r--r--zh-cn/functions_g.html55
-rw-r--r--zh-cn/functions_h.html19
-rw-r--r--zh-cn/functions_i.html23
-rw-r--r--zh-cn/functions_k.html13
-rw-r--r--zh-cn/functions_l.html13
-rw-r--r--zh-cn/functions_m.html15
-rw-r--r--zh-cn/functions_n.html13
-rw-r--r--zh-cn/functions_o.html31
-rw-r--r--zh-cn/functions_p.html13
-rw-r--r--zh-cn/functions_r.html13
-rw-r--r--zh-cn/functions_rela.html11
-rw-r--r--zh-cn/functions_s.html25
-rw-r--r--zh-cn/functions_t.html13
-rw-r--r--zh-cn/functions_type.html13
-rw-r--r--zh-cn/functions_v.html13
-rw-r--r--zh-cn/functions_vars.html11
-rw-r--r--zh-cn/functions_w.html13
-rw-r--r--zh-cn/fwd_8h_source.html172
-rw-r--r--zh-cn/globals.html11
-rw-r--r--zh-cn/globals_defs.html11
-rw-r--r--zh-cn/group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html98
-rw-r--r--zh-cn/group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html254
-rw-r--r--zh-cn/group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.js20
-rw-r--r--zh-cn/group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_structrapidjson_1_1_parse_result.js18
-rw-r--r--zh-cn/hierarchy.html17
-rw-r--r--zh-cn/hierarchy.js4
-rw-r--r--zh-cn/ieee754_8h_source.html93
-rw-r--r--zh-cn/index.html50
-rw-r--r--zh-cn/istreamwrapper_8h_source.html132
-rw-r--r--zh-cn/itoa_8h_source.html319
-rw-r--r--zh-cn/jquery.js45
-rw-r--r--zh-cn/md__c_h_a_n_g_e_l_o_g.html11
-rw-r--r--zh-cn/md_doc_dom_8zh-cn.html133
-rw-r--r--zh-cn/md_doc_encoding_8zh-cn.html71
-rw-r--r--zh-cn/md_doc_faq_8zh-cn.html39
-rw-r--r--zh-cn/md_doc_features_8zh-cn.html17
-rw-r--r--zh-cn/md_doc_internals_8zh-cn.html74
-rw-r--r--zh-cn/md_doc_performance_8zh-cn.html11
-rw-r--r--zh-cn/md_doc_pointer_8zh-cn.html132
-rw-r--r--zh-cn/md_doc_sax_8zh-cn.html202
-rw-r--r--zh-cn/md_doc_schema_8zh-cn.html149
-rw-r--r--zh-cn/md_doc_stream_8zh-cn.html291
-rw-r--r--zh-cn/md_doc_tutorial_8zh-cn.html245
-rw-r--r--zh-cn/memorybuffer_8h_source.html85
-rw-r--r--zh-cn/memorystream_8h_source.html86
-rw-r--r--zh-cn/meta_8h_source.html198
-rw-r--r--zh-cn/modules.html11
-rw-r--r--zh-cn/namespacemembers.html35
-rw-r--r--zh-cn/namespacemembers_enum.html11
-rw-r--r--zh-cn/namespacemembers_eval.html13
-rw-r--r--zh-cn/namespacemembers_func.html11
-rw-r--r--zh-cn/namespacemembers_type.html13
-rw-r--r--zh-cn/namespacerapidjson.html405
-rw-r--r--zh-cn/navtree.css7
-rw-r--r--zh-cn/navtree.js221
-rw-r--r--zh-cn/navtreedata.js171
-rw-r--r--zh-cn/navtreeindex0.js212
-rw-r--r--zh-cn/navtreeindex1.js198
-rw-r--r--zh-cn/navtreeindex2.js70
-rw-r--r--zh-cn/navtreeindex3.js52
-rw-r--r--zh-cn/navtreeindex4.js19
-rw-r--r--zh-cn/ostreamwrapper_8h_source.html96
-rw-r--r--zh-cn/pages.html11
-rw-r--r--zh-cn/pointer_8h_source.html1464
-rw-r--r--zh-cn/pow10_8h_source.html70
-rw-r--r--zh-cn/prettywriter_8h_source.html301
-rw-r--r--zh-cn/rapidjson_8h.html65
-rw-r--r--zh-cn/rapidjson_8h_source.html645
-rw-r--r--zh-cn/reader_8h.html35
-rw-r--r--zh-cn/reader_8h_source.html2268
-rw-r--r--zh-cn/regex_8h_source.html749
-rw-r--r--zh-cn/resize.js153
-rw-r--r--zh-cn/schema_8h_source.html2069
-rw-r--r--zh-cn/search/all_0.html2
-rw-r--r--zh-cn/search/all_0.js10
-rw-r--r--zh-cn/search/all_1.html2
-rw-r--r--zh-cn/search/all_1.js4
-rw-r--r--zh-cn/search/all_10.html2
-rw-r--r--zh-cn/search/all_10.js13
-rw-r--r--zh-cn/search/all_11.html2
-rw-r--r--zh-cn/search/all_12.html2
-rw-r--r--zh-cn/search/all_13.html2
-rw-r--r--zh-cn/search/all_14.html2
-rw-r--r--zh-cn/search/all_14.js3
-rw-r--r--zh-cn/search/all_15.html2
-rw-r--r--zh-cn/search/all_16.html2
-rw-r--r--zh-cn/search/all_17.html2
-rw-r--r--zh-cn/search/all_18.html2
-rw-r--r--zh-cn/search/all_2.html2
-rw-r--r--zh-cn/search/all_2.js6
-rw-r--r--zh-cn/search/all_3.html2
-rw-r--r--zh-cn/search/all_4.html2
-rw-r--r--zh-cn/search/all_4.js6
-rw-r--r--zh-cn/search/all_5.html2
-rw-r--r--zh-cn/search/all_5.js3
-rw-r--r--zh-cn/search/all_6.html2
-rw-r--r--zh-cn/search/all_6.js64
-rw-r--r--zh-cn/search/all_7.html2
-rw-r--r--zh-cn/search/all_7.js4
-rw-r--r--zh-cn/search/all_8.html2
-rw-r--r--zh-cn/search/all_8.js8
-rw-r--r--zh-cn/search/all_9.html2
-rw-r--r--zh-cn/search/all_a.html2
-rw-r--r--zh-cn/search/all_b.html2
-rw-r--r--zh-cn/search/all_b.js9
-rw-r--r--zh-cn/search/all_c.html2
-rw-r--r--zh-cn/search/all_d.html2
-rw-r--r--zh-cn/search/all_d.js16
-rw-r--r--zh-cn/search/all_e.html2
-rw-r--r--zh-cn/search/all_e.js6
-rw-r--r--zh-cn/search/all_f.html2
-rw-r--r--zh-cn/search/classes_0.html2
-rw-r--r--zh-cn/search/classes_1.html2
-rw-r--r--zh-cn/search/classes_2.html2
-rw-r--r--zh-cn/search/classes_3.html2
-rw-r--r--zh-cn/search/classes_4.html2
-rw-r--r--zh-cn/search/classes_5.html2
-rw-r--r--zh-cn/search/classes_6.html2
-rw-r--r--zh-cn/search/classes_7.html2
-rw-r--r--zh-cn/search/classes_8.html2
-rw-r--r--zh-cn/search/classes_9.html2
-rw-r--r--zh-cn/search/classes_a.html2
-rw-r--r--zh-cn/search/classes_b.html2
-rw-r--r--zh-cn/search/classes_c.html2
-rw-r--r--zh-cn/search/classes_d.html2
-rw-r--r--zh-cn/search/classes_e.html2
-rw-r--r--zh-cn/search/defines_0.html2
-rw-r--r--zh-cn/search/enums_0.html2
-rw-r--r--zh-cn/search/enums_1.html2
-rw-r--r--zh-cn/search/enums_2.html2
-rw-r--r--zh-cn/search/enums_3.html2
-rw-r--r--zh-cn/search/enumvalues_0.html2
-rw-r--r--zh-cn/search/files_0.html2
-rw-r--r--zh-cn/search/files_1.html2
-rw-r--r--zh-cn/search/files_2.html2
-rw-r--r--zh-cn/search/functions_0.html2
-rw-r--r--zh-cn/search/functions_0.js4
-rw-r--r--zh-cn/search/functions_1.html2
-rw-r--r--zh-cn/search/functions_1.js2
-rw-r--r--zh-cn/search/functions_10.html2
-rw-r--r--zh-cn/search/functions_11.html2
-rw-r--r--zh-cn/search/functions_2.html2
-rw-r--r--zh-cn/search/functions_2.js6
-rw-r--r--zh-cn/search/functions_3.html2
-rw-r--r--zh-cn/search/functions_4.html2
-rw-r--r--zh-cn/search/functions_4.js6
-rw-r--r--zh-cn/search/functions_5.html2
-rw-r--r--zh-cn/search/functions_6.html2
-rw-r--r--zh-cn/search/functions_6.js38
-rw-r--r--zh-cn/search/functions_7.html2
-rw-r--r--zh-cn/search/functions_7.js4
-rw-r--r--zh-cn/search/functions_8.html2
-rw-r--r--zh-cn/search/functions_8.js8
-rw-r--r--zh-cn/search/functions_9.html2
-rw-r--r--zh-cn/search/functions_9.js6
-rw-r--r--zh-cn/search/functions_a.html2
-rw-r--r--zh-cn/search/functions_a.js16
-rw-r--r--zh-cn/search/functions_b.html2
-rw-r--r--zh-cn/search/functions_c.html2
-rw-r--r--zh-cn/search/functions_d.html2
-rw-r--r--zh-cn/search/functions_d.js10
-rw-r--r--zh-cn/search/functions_e.html2
-rw-r--r--zh-cn/search/functions_f.html2
-rw-r--r--zh-cn/search/groups_0.html2
-rw-r--r--zh-cn/search/namespaces_0.html2
-rw-r--r--zh-cn/search/pages_0.html2
-rw-r--r--zh-cn/search/pages_1.html2
-rw-r--r--zh-cn/search/pages_2.html2
-rw-r--r--zh-cn/search/pages_3.html2
-rw-r--r--zh-cn/search/pages_4.html2
-rw-r--r--zh-cn/search/pages_5.html2
-rw-r--r--zh-cn/search/pages_6.html2
-rw-r--r--zh-cn/search/related_0.html2
-rw-r--r--zh-cn/search/related_1.html2
-rw-r--r--zh-cn/search/search.css10
-rw-r--r--zh-cn/search/search.js106
-rw-r--r--zh-cn/search/searchdata.js51
-rw-r--r--zh-cn/search/typedefs_0.html2
-rw-r--r--zh-cn/search/typedefs_1.html2
-rw-r--r--zh-cn/search/typedefs_1.js2
-rw-r--r--zh-cn/search/typedefs_2.html2
-rw-r--r--zh-cn/search/typedefs_3.html2
-rw-r--r--zh-cn/search/typedefs_4.html2
-rw-r--r--zh-cn/search/typedefs_5.html2
-rw-r--r--zh-cn/search/typedefs_5.js2
-rw-r--r--zh-cn/search/typedefs_6.html2
-rw-r--r--zh-cn/search/typedefs_7.html2
-rw-r--r--zh-cn/search/typedefs_8.html2
-rw-r--r--zh-cn/search/typedefs_9.html2
-rw-r--r--zh-cn/search/typedefs_a.html2
-rw-r--r--zh-cn/search/typedefs_b.html2
-rw-r--r--zh-cn/search/typedefs_c.html2
-rw-r--r--zh-cn/search/variables_0.html2
-rw-r--r--zh-cn/search/variables_1.html2
-rw-r--r--zh-cn/search/variables_2.html2
-rw-r--r--zh-cn/search/variables_3.html2
-rw-r--r--zh-cn/search/variables_4.html2
-rw-r--r--zh-cn/search/variables_5.html2
-rw-r--r--zh-cn/search/variables_6.html2
-rw-r--r--zh-cn/search/variables_7.html2
-rw-r--r--zh-cn/search/variables_8.html2
-rw-r--r--zh-cn/splitbar.png (renamed from zh-cn/ftv2splitbar.png)bin314 -> 314 bytes
-rw-r--r--zh-cn/stack_8h_source.html246
-rw-r--r--zh-cn/stream_8h_source.html194
-rw-r--r--zh-cn/strfunc_8h_source.html84
-rw-r--r--zh-cn/stringbuffer_8h_source.html139
-rw-r--r--zh-cn/strtod_8h_source.html284
-rw-r--r--zh-cn/structrapidjson_1_1_a_s_c_i_i-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_a_s_c_i_i.html31
-rw-r--r--zh-cn/structrapidjson_1_1_auto_u_t_f-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_auto_u_t_f.html23
-rw-r--r--zh-cn/structrapidjson_1_1_base_reader_handler-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_base_reader_handler.html52
-rw-r--r--zh-cn/structrapidjson_1_1_generic_insitu_string_stream-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_generic_insitu_string_stream.html39
-rw-r--r--zh-cn/structrapidjson_1_1_generic_member-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_generic_member.html15
-rw-r--r--zh-cn/structrapidjson_1_1_generic_memory_buffer-members.html15
-rw-r--r--zh-cn/structrapidjson_1_1_generic_memory_buffer.html45
-rw-r--r--zh-cn/structrapidjson_1_1_generic_memory_buffer.js4
-rw-r--r--zh-cn/structrapidjson_1_1_generic_pointer_1_1_token-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_generic_pointer_1_1_token.html19
-rw-r--r--zh-cn/structrapidjson_1_1_generic_string_ref-members.html13
-rw-r--r--zh-cn/structrapidjson_1_1_generic_string_ref.html87
-rw-r--r--zh-cn/structrapidjson_1_1_generic_string_ref.js2
-rw-r--r--zh-cn/structrapidjson_1_1_generic_string_stream-members.html15
-rw-r--r--zh-cn/structrapidjson_1_1_generic_string_stream.html41
-rw-r--r--zh-cn/structrapidjson_1_1_generic_string_stream.js4
-rw-r--r--zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_i-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_i.html15
-rw-r--r--zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_u-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_u.html15
-rw-r--r--zh-cn/structrapidjson_1_1_memory_stream-members.html17
-rw-r--r--zh-cn/structrapidjson_1_1_memory_stream.html51
-rw-r--r--zh-cn/structrapidjson_1_1_memory_stream.js6
-rw-r--r--zh-cn/structrapidjson_1_1_stream_traits-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_stream_traits.html19
-rw-r--r--zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4.html15
-rw-r--r--zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4.html15
-rw-r--r--zh-cn/structrapidjson_1_1_transcoder-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_transcoder.html17
-rw-r--r--zh-cn/structrapidjson_1_1_transcoder_3_01_encoding_00_01_encoding_01_4-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_transcoder_3_01_encoding_00_01_encoding_01_4.html19
-rw-r--r--zh-cn/structrapidjson_1_1_u_t_f16-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_u_t_f16.html29
-rw-r--r--zh-cn/structrapidjson_1_1_u_t_f16_b_e-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_u_t_f16_b_e.html37
-rw-r--r--zh-cn/structrapidjson_1_1_u_t_f16_l_e-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_u_t_f16_l_e.html37
-rw-r--r--zh-cn/structrapidjson_1_1_u_t_f32-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_u_t_f32.html29
-rw-r--r--zh-cn/structrapidjson_1_1_u_t_f32_b_e-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_u_t_f32_b_e.html37
-rw-r--r--zh-cn/structrapidjson_1_1_u_t_f32_l_e-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_u_t_f32_l_e.html37
-rw-r--r--zh-cn/structrapidjson_1_1_u_t_f8-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_u_t_f8.html33
-rw-r--r--zh-cn/structrapidjson_1_1_writer_1_1_level-members.html11
-rw-r--r--zh-cn/structrapidjson_1_1_writer_1_1_level.html23
-rw-r--r--zh-cn/swap_8h_source.html61
-rw-r--r--zh-cn/tabs.css61
-rw-r--r--zh-cn/writer_8h_source.html746
410 files changed, 6414 insertions, 22167 deletions
diff --git a/zh-cn/allocators_8h_source.html b/zh-cn/allocators_8h_source.html
index c10412d4..f417a330 100644
--- a/zh-cn/allocators_8h_source.html
+++ b/zh-cn/allocators_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/allocators.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('allocators_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,282 +81,10 @@ $(document).ready(function(){initNavTree('allocators_8h_source.html','');});
<div class="title">allocators.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ALLOCATORS_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_ALLOCATORS_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rapidjson_8h.html">rapidjson.h</a>&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"></span><span class="comment">// Allocator</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">/*! \class rapidjson::Allocator</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> \brief Concept for allocating, resizing and freeing memory block.</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> </span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> Note that Malloc() and Realloc() are non-static but Free() is static.</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> </span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> So if an allocator need to support Free(), it needs to put its pointer in </span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> the header of memory block.</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">\code</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">concept Allocator {</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> static const bool kNeedFree; //!&lt; Whether this allocator needs to call Free().</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> // Allocate a memory block.</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> // \param size of the memory block in bytes.</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> // \returns pointer to the memory block.</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> void* Malloc(size_t size);</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> // Resize a memory block.</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> // \param originalPtr The pointer to current memory block. Null pointer is permitted.</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> // \param originalSize The current size in bytes. (Design issue: since some allocator may not book-keep this, explicitly pass to it can save memory.)</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> // \param newSize the new size in bytes.</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> void* Realloc(void* originalPtr, size_t originalSize, size_t newSize);</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> // Free a memory block.</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> // \param pointer to the memory block. Null pointer is permitted.</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> static void Free(void *ptr);</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">};</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment">\endcode</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"></span><span class="comment">// CrtAllocator</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment">//! C-runtime library allocator.</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"></span><span class="comment">/*! This class is just wrapper for standard C library memory routines.</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> \note implements Allocator concept</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_crt_allocator.html"> 62</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> {</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> kNeedFree = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">void</span>* Malloc(<span class="keywordtype">size_t</span> size) { </div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (size) <span class="comment">// behavior of malloc(0) is implementation defined.</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> std::malloc(size);</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> NULL; <span class="comment">// standardize to returning NULL.</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">void</span>* Realloc(<span class="keywordtype">void</span>* originalPtr, <span class="keywordtype">size_t</span> originalSize, <span class="keywordtype">size_t</span> newSize) {</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; (void)originalSize;</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span> (newSize == 0) {</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; std::free(originalPtr);</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> std::realloc(originalPtr, newSize);</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Free(<span class="keywordtype">void</span> *ptr) { std::free(ptr); }</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;};</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span><span class="comment">// MemoryPoolAllocator</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment">//! Default memory allocator used by the parser and DOM.</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"></span><span class="comment">/*! This allocator allocate memory blocks from pre-allocated memory chunks. </span></div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> It does not free memory blocks. And Realloc() only allocate new memory.</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> The memory chunks are allocated by BaseAllocator, which is CrtAllocator by default.</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> User may also supply a buffer as the first chunk.</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> If the user-buffer is full then additional chunks are allocated by BaseAllocator.</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> The user-buffer is not deallocated by this allocator.</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> \tparam BaseAllocator the allocator type for allocating memory chunks. Default is CrtAllocator.</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> \note implements Allocator concept</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BaseAllocator = CrtAllocator&gt;</div>
-<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html"> 102</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator</a> {</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#a2606d96e19bcfc9d4bf58aefe55c1b29"> 104</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> kNeedFree = <span class="keyword">false</span>; <span class="comment">//!&lt; Tell users that no need to call Free() with this allocator. (concept Allocator)</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> //! Constructor with chunkSize.</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"></span><span class="comment"> /*! \param chunkSize The size of memory chunk. The default is kDefaultChunkSize.</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> \param baseAllocator The allocator for allocating memory chunks.</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#a59d783f4feba17dcd35d9f25fcbc09f4"> 110</a></span>&#160; <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#a59d783f4feba17dcd35d9f25fcbc09f4">MemoryPoolAllocator</a>(<span class="keywordtype">size_t</span> chunkSize = kDefaultChunkCapacity, BaseAllocator* baseAllocator = 0) : </div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; chunkHead_(0), chunk_capacity_(chunkSize), userBuffer_(0), baseAllocator_(baseAllocator), ownBaseAllocator_(0)</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> //! Constructor with user-supplied buffer.</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"></span><span class="comment"> /*! The user buffer will be used firstly. When it is full, memory pool allocates new chunk with chunk size.</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> The user buffer will not be deallocated when this allocator is destructed.</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> \param buffer User supplied buffer.</span></div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> \param size Size of the buffer in bytes. It must at least larger than sizeof(ChunkHeader).</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> \param chunkSize The size of memory chunk. The default is kDefaultChunkSize.</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> \param baseAllocator The allocator for allocating memory chunks.</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#abcc572bdb6902c9d69711540db5098a7"> 125</a></span>&#160; <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#abcc572bdb6902c9d69711540db5098a7">MemoryPoolAllocator</a>(<span class="keywordtype">void</span> *buffer, <span class="keywordtype">size_t</span> size, <span class="keywordtype">size_t</span> chunkSize = kDefaultChunkCapacity, BaseAllocator* baseAllocator = 0) :</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; chunkHead_(0), chunk_capacity_(chunkSize), userBuffer_(buffer), baseAllocator_(baseAllocator), ownBaseAllocator_(0)</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(buffer != 0);</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(size &gt; <span class="keyword">sizeof</span>(ChunkHeader));</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; chunkHead_ = <span class="keyword">reinterpret_cast&lt;</span>ChunkHeader*<span class="keyword">&gt;</span>(buffer);</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; chunkHead_-&gt;capacity = size - <span class="keyword">sizeof</span>(ChunkHeader);</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; chunkHead_-&gt;size = 0;</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; chunkHead_-&gt;next = 0;</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> //! Destructor.</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"></span><span class="comment"> /*! This deallocates all memory chunks, excluding the user-supplied buffer.</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#aa1d5b36c67611937e8ad6b2be53a483e"> 139</a></span>&#160; <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#aa1d5b36c67611937e8ad6b2be53a483e">~MemoryPoolAllocator</a>() {</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; Clear();</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a>(ownBaseAllocator_);</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"> //! Deallocates all memory chunks, excluding the user-supplied buffer.</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#aa050d52c62503ca6d6f66289ce83a18e"> 145</a></span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#aa050d52c62503ca6d6f66289ce83a18e">Clear</a>() {</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">while</span> (chunkHead_ &amp;&amp; chunkHead_ != userBuffer_) {</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; ChunkHeader* next = chunkHead_-&gt;next;</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; baseAllocator_-&gt;Free(chunkHead_);</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; chunkHead_ = next;</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> (chunkHead_ &amp;&amp; chunkHead_ == userBuffer_)</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; chunkHead_-&gt;size = 0; <span class="comment">// Clear user buffer</span></div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"> //! Computes the total capacity of allocated memory chunks.</span></div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"></span><span class="comment"> /*! \return total capacity in bytes.</span></div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#a7433671a5129289939c3a4f24d173b6e"> 158</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#a7433671a5129289939c3a4f24d173b6e">Capacity</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordtype">size_t</span> capacity = 0;</div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">for</span> (ChunkHeader* c = chunkHead_; c != 0; c = c-&gt;next)</div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; capacity += c-&gt;capacity;</div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> capacity;</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"> //! Computes the memory blocks allocated.</span></div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"></span><span class="comment"> /*! \return total used bytes.</span></div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#aad83829efa77ad26a23f74d6cab3d781"> 168</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#aad83829efa77ad26a23f74d6cab3d781">Size</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">size_t</span> size = 0;</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">for</span> (ChunkHeader* c = chunkHead_; c != 0; c = c-&gt;next)</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; size += c-&gt;size;</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">return</span> size;</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> //! Allocates a memory block. (concept Allocator)</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#a208c29e04b1d748bfe068444b7044344"> 176</a></span>&#160;<span class="comment"></span> <span class="keywordtype">void</span>* <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#a208c29e04b1d748bfe068444b7044344">Malloc</a>(<span class="keywordtype">size_t</span> size) {</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span> (!size)</div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; size = <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242">RAPIDJSON_ALIGN</a>(size);</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (chunkHead_ == 0 || chunkHead_-&gt;size + size &gt; chunkHead_-&gt;capacity)</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span> (!AddChunk(chunk_capacity_ &gt; size ? chunk_capacity_ : size))</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordtype">void</span> *buffer = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span> *<span class="keyword">&gt;</span>(chunkHead_) + <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242">RAPIDJSON_ALIGN</a>(<span class="keyword">sizeof</span>(ChunkHeader)) + chunkHead_-&gt;size;</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; chunkHead_-&gt;size += size;</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> buffer;</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment"> //! Resizes a memory block (concept Allocator)</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#a880524b17bbecb5d2691b8075050d55d"> 191</a></span>&#160;<span class="comment"></span> <span class="keywordtype">void</span>* <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#a880524b17bbecb5d2691b8075050d55d">Realloc</a>(<span class="keywordtype">void</span>* originalPtr, <span class="keywordtype">size_t</span> originalSize, <span class="keywordtype">size_t</span> newSize) {</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> (originalPtr == 0)</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> Malloc(newSize);</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (newSize == 0)</div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; originalSize = <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242">RAPIDJSON_ALIGN</a>(originalSize);</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; newSize = <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242">RAPIDJSON_ALIGN</a>(newSize);</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="comment">// Do not shrink if new size is smaller than original</span></div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (originalSize &gt;= newSize)</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> originalPtr;</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="comment">// Simply expand it if it is the last allocation and there is sufficient space</span></div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (originalPtr == reinterpret_cast&lt;char *&gt;(chunkHead_) + <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242">RAPIDJSON_ALIGN</a>(<span class="keyword">sizeof</span>(ChunkHeader)) + chunkHead_-&gt;size - originalSize) {</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordtype">size_t</span> increment = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(newSize - originalSize);</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">if</span> (chunkHead_-&gt;size + increment &lt;= chunkHead_-&gt;capacity) {</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; chunkHead_-&gt;size += increment;</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">return</span> originalPtr;</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// Realloc process: allocate and copy memory, do not free original buffer.</span></div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span> (<span class="keywordtype">void</span>* newBuffer = Malloc(newSize)) {</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span> (originalSize)</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; std::memcpy(newBuffer, originalPtr, originalSize);</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> newBuffer;</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">return</span> NULL;</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment"> //! Frees a memory block (concept Allocator)</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#a9470dfeaeef3b3775249df2223129a2b"> 225</a></span>&#160;<span class="comment"></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#a9470dfeaeef3b3775249df2223129a2b">Free</a>(<span class="keywordtype">void</span> *ptr) { (void)ptr; } <span class="comment">// Do nothing</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="keyword">private</span>:<span class="comment"></span></div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"> //! Copy constructor is not permitted.</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator</a>&amp; rhs) <span class="comment">/* = delete */</span>;<span class="comment"></span></div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment"> //! Copy assignment operator is not permitted.</span></div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator</a>&amp; rhs) <span class="comment">/* = delete */</span>;</div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment"> //! Creates a new chunk.</span></div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment"></span><span class="comment"> /*! \param capacity Capacity of the chunk in bytes.</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment"> \return true if success.</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordtype">bool</span> AddChunk(<span class="keywordtype">size_t</span> capacity) {</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> (!baseAllocator_)</div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; ownBaseAllocator_ = baseAllocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(BaseAllocator)();</div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span> (ChunkHeader* chunk = reinterpret_cast&lt;ChunkHeader*&gt;(baseAllocator_-&gt;Malloc(<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242">RAPIDJSON_ALIGN</a>(<span class="keyword">sizeof</span>(ChunkHeader)) + capacity))) {</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; chunk-&gt;capacity = capacity;</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; chunk-&gt;size = 0;</div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; chunk-&gt;next = chunkHead_;</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; chunkHead_ = chunk;</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDefaultChunkCapacity = 64 * 1024; <span class="comment">//!&lt; Default chunk capacity.</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment"> //! Chunk header for perpending to each chunk.</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"></span><span class="comment"> /*! Chunks are stored as a singly linked list.</span></div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">struct </span>ChunkHeader {</div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordtype">size_t</span> capacity; <span class="comment">//!&lt; Capacity of the chunk in bytes (excluding the header itself).</span></div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> size; <span class="comment">//!&lt; Current size of allocated memory in bytes.</span></div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"></span> ChunkHeader *next; <span class="comment">//!&lt; Next chunk in the linked list.</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment"></span> };</div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; ChunkHeader *chunkHead_; <span class="comment">//!&lt; Head of the chunk linked-list. Only the head chunk serves allocation.</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> chunk_capacity_; <span class="comment">//!&lt; The minimum capacity of chunk when they are allocated.</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> *userBuffer_; <span class="comment">//!&lt; User supplied buffer.</span></div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"></span> BaseAllocator* baseAllocator_; <span class="comment">//!&lt; base allocator for allocating memory chunks.</span></div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"></span> BaseAllocator* ownBaseAllocator_; <span class="comment">//!&lt; base allocator created by this object.</span></div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"></span>};</div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ENCODINGS_H_</span></div>
-<div class="ttc" id="classrapidjson_1_1_memory_pool_allocator_html_aa1d5b36c67611937e8ad6b2be53a483e"><div class="ttname"><a href="classrapidjson_1_1_memory_pool_allocator.html#aa1d5b36c67611937e8ad6b2be53a483e">rapidjson::MemoryPoolAllocator::~MemoryPoolAllocator</a></div><div class="ttdeci">~MemoryPoolAllocator()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> allocators.h:139</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ALLOCATORS_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_ALLOCATORS_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rapidjson_8h.html">rapidjson.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"></span><span class="comment">// Allocator</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">/*! \class rapidjson::Allocator</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> \brief Concept for allocating, resizing and freeing memory block.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> Note that Malloc() and Realloc() are non-static but Free() is static.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> So if an allocator need to support Free(), it needs to put its pointer in </span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> the header of memory block.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">\code</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">concept Allocator {</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> static const bool kNeedFree; //!&lt; Whether this allocator needs to call Free().</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> // Allocate a memory block.</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> // \param size of the memory block in bytes.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> // \returns pointer to the memory block.</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> void* Malloc(size_t size);</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> // Resize a memory block.</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> // \param originalPtr The pointer to current memory block. Null pointer is permitted.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> // \param originalSize The current size in bytes. (Design issue: since some allocator may not book-keep this, explicitly pass to it can save memory.)</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> // \param newSize the new size in bytes.</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> void* Realloc(void* originalPtr, size_t originalSize, size_t newSize);</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> // Free a memory block.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> // \param pointer to the memory block. Null pointer is permitted.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> static void Free(void *ptr);</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">};</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment">\endcode</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"></span><span class="comment">// CrtAllocator</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment">//! C-runtime library allocator.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"></span><span class="comment">/*! This class is just wrapper for standard C library memory routines.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> \note implements Allocator concept</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_crt_allocator.html"> 62</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> kNeedFree = <span class="keyword">true</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">void</span>* Malloc(<span class="keywordtype">size_t</span> size) { </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (size) <span class="comment">// behavior of malloc(0) is implementation defined.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> std::malloc(size);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> NULL; <span class="comment">// standardize to returning NULL.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">void</span>* Realloc(<span class="keywordtype">void</span>* originalPtr, <span class="keywordtype">size_t</span> originalSize, <span class="keywordtype">size_t</span> newSize) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; (void)originalSize;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span> (newSize == 0) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; std::free(originalPtr);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> std::realloc(originalPtr, newSize);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Free(<span class="keywordtype">void</span> *ptr) { std::free(ptr); }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;};</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span><span class="comment">// MemoryPoolAllocator</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment">//! Default memory allocator used by the parser and DOM.</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"></span><span class="comment">/*! This allocator allocate memory blocks from pre-allocated memory chunks. </span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> It does not free memory blocks. And Realloc() only allocate new memory.</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> The memory chunks are allocated by BaseAllocator, which is CrtAllocator by default.</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> User may also supply a buffer as the first chunk.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> If the user-buffer is full then additional chunks are allocated by BaseAllocator.</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> The user-buffer is not deallocated by this allocator.</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> \tparam BaseAllocator the allocator type for allocating memory chunks. Default is CrtAllocator.</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> \note implements Allocator concept</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BaseAllocator = CrtAllocator&gt;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html"> 102</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator</a> {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#a2606d96e19bcfc9d4bf58aefe55c1b29"> 104</a></span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> kNeedFree = <span class="keyword">false</span>; <span class="comment">//!&lt; Tell users that no need to call Free() with this allocator. (concept Allocator)</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> //! Constructor with chunkSize.</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"></span><span class="comment"> /*! \param chunkSize The size of memory chunk. The default is kDefaultChunkSize.</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> \param baseAllocator The allocator for allocating memory chunks.</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#a59d783f4feba17dcd35d9f25fcbc09f4"> 110</a></span>&#160; <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#a59d783f4feba17dcd35d9f25fcbc09f4">MemoryPoolAllocator</a>(<span class="keywordtype">size_t</span> chunkSize = kDefaultChunkCapacity, BaseAllocator* baseAllocator = 0) : </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; chunkHead_(0), chunk_capacity_(chunkSize), userBuffer_(0), baseAllocator_(baseAllocator), ownBaseAllocator_(0)</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> //! Constructor with user-supplied buffer.</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"></span><span class="comment"> /*! The user buffer will be used firstly. When it is full, memory pool allocates new chunk with chunk size.</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> The user buffer will not be deallocated when this allocator is destructed.</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> \param buffer User supplied buffer.</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> \param size Size of the buffer in bytes. It must at least larger than sizeof(ChunkHeader).</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> \param chunkSize The size of memory chunk. The default is kDefaultChunkSize.</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> \param baseAllocator The allocator for allocating memory chunks.</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#abcc572bdb6902c9d69711540db5098a7"> 125</a></span>&#160; <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#abcc572bdb6902c9d69711540db5098a7">MemoryPoolAllocator</a>(<span class="keywordtype">void</span> *buffer, <span class="keywordtype">size_t</span> size, <span class="keywordtype">size_t</span> chunkSize = kDefaultChunkCapacity, BaseAllocator* baseAllocator = 0) :</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; chunkHead_(0), chunk_capacity_(chunkSize), userBuffer_(buffer), baseAllocator_(baseAllocator), ownBaseAllocator_(0)</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(buffer != 0);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(size &gt; <span class="keyword">sizeof</span>(ChunkHeader));</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; chunkHead_ = <span class="keyword">reinterpret_cast&lt;</span>ChunkHeader*<span class="keyword">&gt;</span>(buffer);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; chunkHead_-&gt;capacity = size - <span class="keyword">sizeof</span>(ChunkHeader);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; chunkHead_-&gt;size = 0;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; chunkHead_-&gt;next = 0;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> //! Destructor.</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"></span><span class="comment"> /*! This deallocates all memory chunks, excluding the user-supplied buffer.</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#aa1d5b36c67611937e8ad6b2be53a483e"> 139</a></span>&#160; <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#aa1d5b36c67611937e8ad6b2be53a483e">~MemoryPoolAllocator</a>() {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; Clear();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a>(ownBaseAllocator_);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"> //! Deallocates all memory chunks, excluding the user-supplied buffer.</span></div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#aa050d52c62503ca6d6f66289ce83a18e"> 145</a></span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#aa050d52c62503ca6d6f66289ce83a18e">Clear</a>() {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">while</span> (chunkHead_ &amp;&amp; chunkHead_ != userBuffer_) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; ChunkHeader* next = chunkHead_-&gt;next;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; baseAllocator_-&gt;Free(chunkHead_);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; chunkHead_ = next;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> (chunkHead_ &amp;&amp; chunkHead_ == userBuffer_)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; chunkHead_-&gt;size = 0; <span class="comment">// Clear user buffer</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"> //! Computes the total capacity of allocated memory chunks.</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"></span><span class="comment"> /*! \return total capacity in bytes.</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#acdf0fc08cbcd940205a0a6289f1c58bd"> 158</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#acdf0fc08cbcd940205a0a6289f1c58bd">Capacity</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordtype">size_t</span> capacity = 0;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">for</span> (ChunkHeader* c = chunkHead_; c != 0; c = c-&gt;next)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; capacity += c-&gt;capacity;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> capacity;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"> //! Computes the memory blocks allocated.</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"></span><span class="comment"> /*! \return total used bytes.</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#aa08b368c54e7643fcd23ef55139b9b40"> 168</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#aa08b368c54e7643fcd23ef55139b9b40">Size</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordtype">size_t</span> size = 0;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">for</span> (ChunkHeader* c = chunkHead_; c != 0; c = c-&gt;next)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; size += c-&gt;size;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">return</span> size;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> //! Allocates a memory block. (concept Allocator)</span></div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#a208c29e04b1d748bfe068444b7044344"> 176</a></span>&#160;<span class="comment"></span> <span class="keywordtype">void</span>* <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#a208c29e04b1d748bfe068444b7044344">Malloc</a>(<span class="keywordtype">size_t</span> size) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span> (!size)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; size = <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242">RAPIDJSON_ALIGN</a>(size);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (chunkHead_ == 0 || chunkHead_-&gt;size + size &gt; chunkHead_-&gt;capacity)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span> (!AddChunk(chunk_capacity_ &gt; size ? chunk_capacity_ : size))</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordtype">void</span> *buffer = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span> *<span class="keyword">&gt;</span>(chunkHead_) + <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242">RAPIDJSON_ALIGN</a>(<span class="keyword">sizeof</span>(ChunkHeader)) + chunkHead_-&gt;size;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; chunkHead_-&gt;size += size;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> buffer;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment"> //! Resizes a memory block (concept Allocator)</span></div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#a880524b17bbecb5d2691b8075050d55d"> 191</a></span>&#160;<span class="comment"></span> <span class="keywordtype">void</span>* <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#a880524b17bbecb5d2691b8075050d55d">Realloc</a>(<span class="keywordtype">void</span>* originalPtr, <span class="keywordtype">size_t</span> originalSize, <span class="keywordtype">size_t</span> newSize) {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">if</span> (originalPtr == 0)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> Malloc(newSize);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (newSize == 0)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; originalSize = <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242">RAPIDJSON_ALIGN</a>(originalSize);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; newSize = <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242">RAPIDJSON_ALIGN</a>(newSize);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="comment">// Do not shrink if new size is smaller than original</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (originalSize &gt;= newSize)</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> originalPtr;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="comment">// Simply expand it if it is the last allocation and there is sufficient space</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (originalPtr == reinterpret_cast&lt;char *&gt;(chunkHead_) + <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242">RAPIDJSON_ALIGN</a>(<span class="keyword">sizeof</span>(ChunkHeader)) + chunkHead_-&gt;size - originalSize) {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordtype">size_t</span> increment = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(newSize - originalSize);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">if</span> (chunkHead_-&gt;size + increment &lt;= chunkHead_-&gt;capacity) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; chunkHead_-&gt;size += increment;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">return</span> originalPtr;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// Realloc process: allocate and copy memory, do not free original buffer.</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span> (<span class="keywordtype">void</span>* newBuffer = Malloc(newSize)) {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span> (originalSize)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; std::memcpy(newBuffer, originalPtr, originalSize);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> newBuffer;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment"> //! Frees a memory block (concept Allocator)</span></div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_memory_pool_allocator.html#a9470dfeaeef3b3775249df2223129a2b"> 225</a></span>&#160;<span class="comment"></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html#a9470dfeaeef3b3775249df2223129a2b">Free</a>(<span class="keywordtype">void</span> *ptr) { (void)ptr; } <span class="comment">// Do nothing</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="keyword">private</span>:<span class="comment"></span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"> //! Copy constructor is not permitted.</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator</a>&amp; rhs) <span class="comment">/* = delete */</span>;<span class="comment"></span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment"> //! Copy assignment operator is not permitted.</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator</a>&amp; rhs) <span class="comment">/* = delete */</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment"> //! Creates a new chunk.</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment"></span><span class="comment"> /*! \param capacity Capacity of the chunk in bytes.</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment"> \return true if success.</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordtype">bool</span> AddChunk(<span class="keywordtype">size_t</span> capacity) {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> (!baseAllocator_)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; ownBaseAllocator_ = baseAllocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(BaseAllocator)();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">if</span> (ChunkHeader* chunk = reinterpret_cast&lt;ChunkHeader*&gt;(baseAllocator_-&gt;Malloc(<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242">RAPIDJSON_ALIGN</a>(<span class="keyword">sizeof</span>(ChunkHeader)) + capacity))) {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; chunk-&gt;capacity = capacity;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; chunk-&gt;size = 0;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; chunk-&gt;next = chunkHead_;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; chunkHead_ = chunk;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDefaultChunkCapacity = 64 * 1024; <span class="comment">//!&lt; Default chunk capacity.</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment"> //! Chunk header for perpending to each chunk.</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"></span><span class="comment"> /*! Chunks are stored as a singly linked list.</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">struct </span>ChunkHeader {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordtype">size_t</span> capacity; <span class="comment">//!&lt; Capacity of the chunk in bytes (excluding the header itself).</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> size; <span class="comment">//!&lt; Current size of allocated memory in bytes.</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"></span> ChunkHeader *next; <span class="comment">//!&lt; Next chunk in the linked list.</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment"></span> };</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; ChunkHeader *chunkHead_; <span class="comment">//!&lt; Head of the chunk linked-list. Only the head chunk serves allocation.</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> chunk_capacity_; <span class="comment">//!&lt; The minimum capacity of chunk when they are allocated.</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> *userBuffer_; <span class="comment">//!&lt; User supplied buffer.</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"></span> BaseAllocator* baseAllocator_; <span class="comment">//!&lt; base allocator for allocating memory chunks.</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"></span> BaseAllocator* ownBaseAllocator_; <span class="comment">//!&lt; base allocator created by this object.</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"></span>};</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ENCODINGS_H_</span></div><div class="ttc" id="classrapidjson_1_1_memory_pool_allocator_html_aa1d5b36c67611937e8ad6b2be53a483e"><div class="ttname"><a href="classrapidjson_1_1_memory_pool_allocator.html#aa1d5b36c67611937e8ad6b2be53a483e">rapidjson::MemoryPoolAllocator::~MemoryPoolAllocator</a></div><div class="ttdeci">~MemoryPoolAllocator()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> allocators.h:139</div></div>
<div class="ttc" id="classrapidjson_1_1_memory_pool_allocator_html_a880524b17bbecb5d2691b8075050d55d"><div class="ttname"><a href="classrapidjson_1_1_memory_pool_allocator.html#a880524b17bbecb5d2691b8075050d55d">rapidjson::MemoryPoolAllocator::Realloc</a></div><div class="ttdeci">void * Realloc(void *originalPtr, size_t originalSize, size_t newSize)</div><div class="ttdoc">Resizes a memory block (concept Allocator) </div><div class="ttdef"><b>Definition:</b> allocators.h:191</div></div>
<div class="ttc" id="classrapidjson_1_1_memory_pool_allocator_html_abcc572bdb6902c9d69711540db5098a7"><div class="ttname"><a href="classrapidjson_1_1_memory_pool_allocator.html#abcc572bdb6902c9d69711540db5098a7">rapidjson::MemoryPoolAllocator::MemoryPoolAllocator</a></div><div class="ttdeci">MemoryPoolAllocator(void *buffer, size_t size, size_t chunkSize=kDefaultChunkCapacity, BaseAllocator *baseAllocator=0)</div><div class="ttdoc">Constructor with user-supplied buffer. </div><div class="ttdef"><b>Definition:</b> allocators.h:125</div></div>
-<div class="ttc" id="classrapidjson_1_1_memory_pool_allocator_html_a7433671a5129289939c3a4f24d173b6e"><div class="ttname"><a href="classrapidjson_1_1_memory_pool_allocator.html#a7433671a5129289939c3a4f24d173b6e">rapidjson::MemoryPoolAllocator::Capacity</a></div><div class="ttdeci">size_t Capacity() const </div><div class="ttdoc">Computes the total capacity of allocated memory chunks. </div><div class="ttdef"><b>Definition:</b> allocators.h:158</div></div>
-<div class="ttc" id="classrapidjson_1_1_memory_pool_allocator_html_aad83829efa77ad26a23f74d6cab3d781"><div class="ttname"><a href="classrapidjson_1_1_memory_pool_allocator.html#aad83829efa77ad26a23f74d6cab3d781">rapidjson::MemoryPoolAllocator::Size</a></div><div class="ttdeci">size_t Size() const </div><div class="ttdoc">Computes the memory blocks allocated. </div><div class="ttdef"><b>Definition:</b> allocators.h:168</div></div>
+<div class="ttc" id="classrapidjson_1_1_memory_pool_allocator_html_acdf0fc08cbcd940205a0a6289f1c58bd"><div class="ttname"><a href="classrapidjson_1_1_memory_pool_allocator.html#acdf0fc08cbcd940205a0a6289f1c58bd">rapidjson::MemoryPoolAllocator::Capacity</a></div><div class="ttdeci">size_t Capacity() const</div><div class="ttdoc">Computes the total capacity of allocated memory chunks. </div><div class="ttdef"><b>Definition:</b> allocators.h:158</div></div>
<div class="ttc" id="classrapidjson_1_1_memory_pool_allocator_html_aa050d52c62503ca6d6f66289ce83a18e"><div class="ttname"><a href="classrapidjson_1_1_memory_pool_allocator.html#aa050d52c62503ca6d6f66289ce83a18e">rapidjson::MemoryPoolAllocator::Clear</a></div><div class="ttdeci">void Clear()</div><div class="ttdoc">Deallocates all memory chunks, excluding the user-supplied buffer. </div><div class="ttdef"><b>Definition:</b> allocators.h:145</div></div>
<div class="ttc" id="classrapidjson_1_1_memory_pool_allocator_html_a59d783f4feba17dcd35d9f25fcbc09f4"><div class="ttname"><a href="classrapidjson_1_1_memory_pool_allocator.html#a59d783f4feba17dcd35d9f25fcbc09f4">rapidjson::MemoryPoolAllocator::MemoryPoolAllocator</a></div><div class="ttdeci">MemoryPoolAllocator(size_t chunkSize=kDefaultChunkCapacity, BaseAllocator *baseAllocator=0)</div><div class="ttdoc">Constructor with chunkSize. </div><div class="ttdef"><b>Definition:</b> allocators.h:110</div></div>
<div class="ttc" id="classrapidjson_1_1_crt_allocator_html"><div class="ttname"><a href="classrapidjson_1_1_crt_allocator.html">rapidjson::CrtAllocator</a></div><div class="ttdoc">C-runtime library allocator. </div><div class="ttdef"><b>Definition:</b> allocators.h:62</div></div>
@@ -364,6 +93,7 @@ $(document).ready(function(){initNavTree('allocators_8h_source.html','');});
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_ga583915242504c7fdb36e826f02f76242"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242">RAPIDJSON_ALIGN</a></div><div class="ttdeci">#define RAPIDJSON_ALIGN(x)</div><div class="ttdoc">Data alignment of the machine. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:280</div></div>
<div class="ttc" id="rapidjson_8h_html_a52c941c3fdd646527cdcd42aa846a28a"><div class="ttname"><a href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a></div><div class="ttdeci">#define RAPIDJSON_DELETE(x)</div><div class="ttdoc">! customization point for global delete </div><div class="ttdef"><b>Definition:</b> rapidjson.h:603</div></div>
<div class="ttc" id="rapidjson_8h_html"><div class="ttname"><a href="rapidjson_8h.html">rapidjson.h</a></div><div class="ttdoc">common definitions and configuration </div></div>
+<div class="ttc" id="classrapidjson_1_1_memory_pool_allocator_html_aa08b368c54e7643fcd23ef55139b9b40"><div class="ttname"><a href="classrapidjson_1_1_memory_pool_allocator.html#aa08b368c54e7643fcd23ef55139b9b40">rapidjson::MemoryPoolAllocator::Size</a></div><div class="ttdeci">size_t Size() const</div><div class="ttdoc">Computes the memory blocks allocated. </div><div class="ttdef"><b>Definition:</b> allocators.h:168</div></div>
<div class="ttc" id="classrapidjson_1_1_memory_pool_allocator_html"><div class="ttname"><a href="classrapidjson_1_1_memory_pool_allocator.html">rapidjson::MemoryPoolAllocator</a></div><div class="ttdoc">Default memory allocator used by the parser and DOM. </div><div class="ttdef"><b>Definition:</b> allocators.h:102</div></div>
<div class="ttc" id="classrapidjson_1_1_memory_pool_allocator_html_a9470dfeaeef3b3775249df2223129a2b"><div class="ttname"><a href="classrapidjson_1_1_memory_pool_allocator.html#a9470dfeaeef3b3775249df2223129a2b">rapidjson::MemoryPoolAllocator::Free</a></div><div class="ttdeci">static void Free(void *ptr)</div><div class="ttdoc">Frees a memory block (concept Allocator) </div><div class="ttdef"><b>Definition:</b> allocators.h:225</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
@@ -373,7 +103,7 @@ $(document).ready(function(){initNavTree('allocators_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>allocators.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>allocators.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/annotated.html b/zh-cn/annotated.html
index c6775f57..79d81091 100644
--- a/zh-cn/annotated.html
+++ b/zh-cn/annotated.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('annotated.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -119,7 +120,7 @@ $(document).ready(function(){initNavTree('annotated.html','');});
<tr id="row_0_32_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html" target="_self">MemoryPoolAllocator</a></td><td class="desc">Default memory allocator used by the parser and DOM </td></tr>
<tr id="row_0_33_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrapidjson_1_1_memory_stream.html" target="_self">MemoryStream</a></td><td class="desc">Represents an in-memory input byte stream </td></tr>
<tr id="row_0_34_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result" target="_self">ParseResult</a></td><td class="desc">Result of parsing (wraps ParseErrorCode) </td></tr>
-<tr id="row_0_35_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_pretty_writer.html" target="_self">PrettyWriter</a></td><td class="desc"><a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer. ">Writer</a> with indentation and spacing </td></tr>
+<tr id="row_0_35_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_pretty_writer.html" target="_self">PrettyWriter</a></td><td class="desc"><a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer ">Writer</a> with indentation and spacing </td></tr>
<tr id="row_0_36_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_schema_validating_reader.html" target="_self">SchemaValidatingReader</a></td><td class="desc">A helper class for parsing with validation </td></tr>
<tr id="row_0_37_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_stream.html" target="_self">Stream</a></td><td class="desc">Concept for reading and writing characters </td></tr>
<tr id="row_0_38_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrapidjson_1_1_stream_traits.html" target="_self">StreamTraits</a></td><td class="desc">Provides additional information for stream </td></tr>
diff --git a/zh-cn/annotated.js b/zh-cn/annotated_dup.js
index 34c092ee..945335b5 100644
--- a/zh-cn/annotated.js
+++ b/zh-cn/annotated_dup.js
@@ -1,4 +1,4 @@
-var annotated =
+var annotated_dup =
[
[ "rapidjson", "namespacerapidjson.html", "namespacerapidjson" ]
]; \ No newline at end of file
diff --git a/zh-cn/biginteger_8h_source.html b/zh-cn/biginteger_8h_source.html
index 515acb8f..9a4384c5 100644
--- a/zh-cn/biginteger_8h_source.html
+++ b/zh-cn/biginteger_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/internal/biginteger.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('biginteger_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,298 +81,8 @@ $(document).ready(function(){initNavTree('biginteger_8h_source.html','');});
<div class="title">biginteger.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_BIGINTEGER_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_BIGINTEGER_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; defined(_M_AMD64)</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;intrin.h&gt;</span> <span class="comment">// for _umul128</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#pragma intrinsic(_umul128)</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">class </span>BigInteger {</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">typedef</span> uint64_t <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>;</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; BigInteger(<span class="keyword">const</span> BigInteger&amp; rhs) : count_(rhs.count_) {</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; std::memcpy(digits_, rhs.digits_, count_ * <span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>));</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">explicit</span> BigInteger(uint64_t u) : count_(1) {</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; digits_[0] = u;</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; BigInteger(<span class="keyword">const</span> <span class="keywordtype">char</span>* decimals, <span class="keywordtype">size_t</span> length) : count_(1) {</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(length &gt; 0);</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; digits_[0] = 0;</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">size_t</span> i = 0;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> kMaxDigitPerIteration = 19; <span class="comment">// 2^64 = 18446744073709551616 &gt; 10^19</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">while</span> (length &gt;= kMaxDigitPerIteration) {</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; AppendDecimal64(decimals + i, decimals + i + kMaxDigitPerIteration);</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; length -= kMaxDigitPerIteration;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; i += kMaxDigitPerIteration;</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (length &gt; 0)</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; AppendDecimal64(decimals + i, decimals + i + length);</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; BigInteger&amp; operator=(<span class="keyword">const</span> BigInteger &amp;rhs)</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">this</span> != &amp;rhs) {</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; count_ = rhs.count_;</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; std::memcpy(digits_, rhs.digits_, count_ * <span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>));</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; BigInteger&amp; operator=(uint64_t u) {</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; digits_[0] = u; </div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; count_ = 1;</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; BigInteger&amp; operator+=(uint64_t u) {</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> backup = digits_[0];</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; digits_[0] += u;</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; count_ - 1; i++) {</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (digits_[i] &gt;= backup)</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>; <span class="comment">// no carry</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; backup = digits_[i + 1];</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; digits_[i + 1] += 1;</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// Last carry</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">if</span> (digits_[count_ - 1] &lt; backup)</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; PushBack(1);</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; BigInteger&amp; operator*=(uint64_t u) {</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">if</span> (u == 0) <span class="keywordflow">return</span> *<span class="keyword">this</span> = 0;</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (u == 1) <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">if</span> (*<span class="keyword">this</span> == 1) <span class="keywordflow">return</span> *<span class="keyword">this</span> = u;</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; uint64_t k = 0;</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; count_; i++) {</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; uint64_t hi;</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; digits_[i] = MulAdd64(digits_[i], u, k, &amp;hi);</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; k = hi;</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; </div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span> (k &gt; 0)</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; PushBack(k);</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; BigInteger&amp; operator*=(uint32_t u) {</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (u == 0) <span class="keywordflow">return</span> *<span class="keyword">this</span> = 0;</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> (u == 1) <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (*<span class="keyword">this</span> == 1) <span class="keywordflow">return</span> *<span class="keyword">this</span> = u;</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; uint64_t k = 0;</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; count_; i++) {</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">const</span> uint64_t c = digits_[i] &gt;&gt; 32;</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> uint64_t d = digits_[i] &amp; 0xFFFFFFFF;</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">const</span> uint64_t uc = u * c;</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">const</span> uint64_t ud = u * d;</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">const</span> uint64_t p0 = ud + k;</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">const</span> uint64_t p1 = uc + (p0 &gt;&gt; 32);</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; digits_[i] = (p0 &amp; 0xFFFFFFFF) | (p1 &lt;&lt; 32);</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; k = p1 &gt;&gt; 32;</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; </div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (k &gt; 0)</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; PushBack(k);</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; BigInteger&amp; operator&lt;&lt;=(<span class="keywordtype">size_t</span> shift) {</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span> (IsZero() || shift == 0) <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordtype">size_t</span> offset = shift / kTypeBit;</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">size_t</span> interShift = shift % kTypeBit;</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(count_ + offset &lt;= kCapacity);</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (interShift == 0) {</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; std::memmove(&amp;digits_[count_ - 1 + offset], &amp;digits_[count_ - 1], count_ * <span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>));</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; count_ += offset;</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; digits_[count_] = 0;</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = count_; i &gt; 0; i--)</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; digits_[i + offset] = (digits_[i] &lt;&lt; interShift) | (digits_[i - 1] &gt;&gt; (kTypeBit - interShift));</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; digits_[offset] = digits_[0] &lt;&lt; interShift;</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; count_ += offset;</div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span> (digits_[count_])</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; count_++;</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; std::memset(digits_, 0, offset * <span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>));</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> BigInteger&amp; rhs)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> count_ == rhs.count_ &amp;&amp; std::memcmp(digits_, rhs.digits_, count_ * <span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>)) == 0;</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> rhs)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> count_ == 1 &amp;&amp; digits_[0] == rhs;</div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; BigInteger&amp; MultiplyPow5(<span class="keywordtype">unsigned</span> exp) {</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint32_t kPow5[12] = {</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; 5,</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; 5 * 5,</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; 5 * 5 * 5,</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; 5 * 5 * 5 * 5,</div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; 5 * 5 * 5 * 5 * 5,</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; 5 * 5 * 5 * 5 * 5 * 5,</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; 5 * 5 * 5 * 5 * 5 * 5 * 5,</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5,</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5,</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5,</div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5,</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5</div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; };</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span> (exp == 0) <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">for</span> (; exp &gt;= 27; exp -= 27) *<span class="keyword">this</span> *= <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0X6765C793, 0XFA10079D); <span class="comment">// 5^27</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">for</span> (; exp &gt;= 13; exp -= 13) *<span class="keyword">this</span> *= static_cast&lt;uint32_t&gt;(1220703125u); <span class="comment">// 5^13</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span> (exp &gt; 0) *<span class="keyword">this</span> *= kPow5[exp - 1];</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="comment">// Compute absolute difference of this and rhs.</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// Assume this != rhs</span></div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordtype">bool</span> Difference(<span class="keyword">const</span> BigInteger&amp; rhs, BigInteger* out)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordtype">int</span> cmp = Compare(rhs);</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(cmp != 0);</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">const</span> BigInteger *a, *b; <span class="comment">// Makes a &gt; b</span></div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordtype">bool</span> ret;</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">if</span> (cmp &lt; 0) { a = &amp;rhs; b = <span class="keyword">this</span>; ret = <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">else</span> { a = <span class="keyword">this</span>; b = &amp;rhs; ret = <span class="keyword">false</span>; }</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> borrow = 0;</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; a-&gt;count_; i++) {</div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> d = a-&gt;digits_[i] - borrow;</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">if</span> (i &lt; b-&gt;count_)</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; d -= b-&gt;digits_[i];</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; borrow = (d &gt; a-&gt;digits_[i]) ? 1 : 0;</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; out-&gt;digits_[i] = d;</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span> (d != 0)</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; out-&gt;count_ = i + 1;</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> ret;</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordtype">int</span> Compare(<span class="keyword">const</span> BigInteger&amp; rhs)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">if</span> (count_ != rhs.count_)</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">return</span> count_ &lt; rhs.count_ ? -1 : 1;</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = count_; i-- &gt; 0;)</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">if</span> (digits_[i] != rhs.digits_[i])</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span> digits_[i] &lt; rhs.digits_[i] ? -1 : 1;</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordtype">size_t</span> GetCount()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> count_; }</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> GetDigit(<span class="keywordtype">size_t</span> index)<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(index &lt; count_); <span class="keywordflow">return</span> digits_[index]; }</div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordtype">bool</span> IsZero()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> count_ == 1 &amp;&amp; digits_[0] == 0; }</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordtype">void</span> AppendDecimal64(<span class="keyword">const</span> <span class="keywordtype">char</span>* begin, <span class="keyword">const</span> <span class="keywordtype">char</span>* end) {</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; uint64_t u = ParseUint64(begin, end);</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (IsZero())</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; *<span class="keyword">this</span> = u;</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordtype">unsigned</span> exp = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(end - begin);</div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; (MultiplyPow5(exp) &lt;&lt;= exp) += u; <span class="comment">// *this = *this * 10^exp + u</span></div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordtype">void</span> PushBack(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> digit) {</div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(count_ &lt; kCapacity);</div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; digits_[count_++] = digit;</div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keyword">static</span> uint64_t ParseUint64(<span class="keyword">const</span> <span class="keywordtype">char</span>* begin, <span class="keyword">const</span> <span class="keywordtype">char</span>* end) {</div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; uint64_t r = 0;</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>* p = begin; p != end; ++p) {</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(*p &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; *p &lt;= <span class="charliteral">&#39;9&#39;</span>);</div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; r = r * 10u + <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(*p - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">return</span> r;</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="comment">// Assume a * b + k &lt; 2^128</span></div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keyword">static</span> uint64_t MulAdd64(uint64_t a, uint64_t b, uint64_t k, uint64_t* outHigh) {</div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; defined(_M_AMD64)</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; uint64_t low = _umul128(a, b, outHigh) + k;</div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">if</span> (low &lt; k)</div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; (*outHigh)++;</div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> low;</div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="preprocessor">#elif (__GNUC__ &gt; 4 || (__GNUC__ == 4 &amp;&amp; __GNUC_MINOR__ &gt;= 6)) &amp;&amp; defined(__x86_64__)</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; __extension__ <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int128 uint128;</div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; uint128 p = <span class="keyword">static_cast&lt;</span>uint128<span class="keyword">&gt;</span>(a) * static_cast&lt;uint128&gt;(b);</div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; p += k;</div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; *outHigh = <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(p &gt;&gt; 64);</div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(p);</div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">const</span> uint64_t a0 = a &amp; 0xFFFFFFFF, a1 = a &gt;&gt; 32, b0 = b &amp; 0xFFFFFFFF, b1 = b &gt;&gt; 32;</div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; uint64_t x0 = a0 * b0, x1 = a0 * b1, x2 = a1 * b0, x3 = a1 * b1;</div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; x1 += (x0 &gt;&gt; 32); <span class="comment">// can&#39;t give carry</span></div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; x1 += x2;</div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (x1 &lt; x2)</div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; x3 += (<span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(1) &lt;&lt; 32);</div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; uint64_t lo = (x1 &lt;&lt; 32) + (x0 &amp; 0xFFFFFFFF);</div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; uint64_t hi = x3 + (x1 &gt;&gt; 32);</div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; lo += k;</div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">if</span> (lo &lt; k)</div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; hi++;</div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; *outHigh = hi;</div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> lo;</div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;</div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kBitCount = 3328; <span class="comment">// 64bit * 54 &gt; 10^1000</span></div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kCapacity = kBitCount / <span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>);</div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kTypeBit = <span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>) * 8;</div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div>
-<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> digits_[kCapacity];</div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordtype">size_t</span> count_;</div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;};</div>
-<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_BIGINTEGER_H_</span></div>
-<div class="ttc" id="rapidjson_8h_html_aaee1245f375a71be1ac9b8a07ba5fb8f"><div class="ttname"><a href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a></div><div class="ttdeci">#define RAPIDJSON_UINT64_C2(high32, low32)</div><div class="ttdoc">Construct a 64-bit literal by a pair of 32-bit integer. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:294</div></div>
-<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_BIGINTEGER_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_BIGINTEGER_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; defined(_M_AMD64)</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;intrin.h&gt;</span> <span class="comment">// for _umul128</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#pragma intrinsic(_umul128)</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">class </span>BigInteger {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keyword">typedef</span> uint64_t <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; BigInteger(<span class="keyword">const</span> BigInteger&amp; rhs) : count_(rhs.count_) {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; std::memcpy(digits_, rhs.digits_, count_ * <span class="keyword">sizeof</span>(Type));</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">explicit</span> BigInteger(uint64_t u) : count_(1) {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; digits_[0] = u;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; BigInteger(<span class="keyword">const</span> <span class="keywordtype">char</span>* decimals, <span class="keywordtype">size_t</span> length) : count_(1) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(length &gt; 0);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; digits_[0] = 0;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">size_t</span> i = 0;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> kMaxDigitPerIteration = 19; <span class="comment">// 2^64 = 18446744073709551616 &gt; 10^19</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">while</span> (length &gt;= kMaxDigitPerIteration) {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; AppendDecimal64(decimals + i, decimals + i + kMaxDigitPerIteration);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; length -= kMaxDigitPerIteration;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; i += kMaxDigitPerIteration;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (length &gt; 0)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; AppendDecimal64(decimals + i, decimals + i + length);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; BigInteger&amp; operator=(<span class="keyword">const</span> BigInteger &amp;rhs)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">this</span> != &amp;rhs) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; count_ = rhs.count_;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; std::memcpy(digits_, rhs.digits_, count_ * <span class="keyword">sizeof</span>(Type));</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; BigInteger&amp; operator=(uint64_t u) {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; digits_[0] = u; </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; count_ = 1;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; BigInteger&amp; operator+=(uint64_t u) {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; Type backup = digits_[0];</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; digits_[0] += u;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; count_ - 1; i++) {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (digits_[i] &gt;= backup)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>; <span class="comment">// no carry</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; backup = digits_[i + 1];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; digits_[i + 1] += 1;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// Last carry</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">if</span> (digits_[count_ - 1] &lt; backup)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; PushBack(1);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; BigInteger&amp; operator*=(uint64_t u) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">if</span> (u == 0) <span class="keywordflow">return</span> *<span class="keyword">this</span> = 0;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">if</span> (u == 1) <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">if</span> (*<span class="keyword">this</span> == 1) <span class="keywordflow">return</span> *<span class="keyword">this</span> = u;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; uint64_t k = 0;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; count_; i++) {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; uint64_t hi;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; digits_[i] = MulAdd64(digits_[i], u, k, &amp;hi);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; k = hi;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span> (k &gt; 0)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; PushBack(k);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; BigInteger&amp; operator*=(uint32_t u) {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (u == 0) <span class="keywordflow">return</span> *<span class="keyword">this</span> = 0;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> (u == 1) <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">if</span> (*<span class="keyword">this</span> == 1) <span class="keywordflow">return</span> *<span class="keyword">this</span> = u;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; uint64_t k = 0;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; count_; i++) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">const</span> uint64_t c = digits_[i] &gt;&gt; 32;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> uint64_t d = digits_[i] &amp; 0xFFFFFFFF;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">const</span> uint64_t uc = u * c;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">const</span> uint64_t ud = u * d;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">const</span> uint64_t p0 = ud + k;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">const</span> uint64_t p1 = uc + (p0 &gt;&gt; 32);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; digits_[i] = (p0 &amp; 0xFFFFFFFF) | (p1 &lt;&lt; 32);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; k = p1 &gt;&gt; 32;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (k &gt; 0)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; PushBack(k);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; BigInteger&amp; operator&lt;&lt;=(<span class="keywordtype">size_t</span> shift) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">if</span> (IsZero() || shift == 0) <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordtype">size_t</span> offset = shift / kTypeBit;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">size_t</span> interShift = shift % kTypeBit;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(count_ + offset &lt;= kCapacity);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (interShift == 0) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; std::memmove(&amp;digits_[count_ - 1 + offset], &amp;digits_[count_ - 1], count_ * <span class="keyword">sizeof</span>(Type));</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; count_ += offset;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; digits_[count_] = 0;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = count_; i &gt; 0; i--)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; digits_[i + offset] = (digits_[i] &lt;&lt; interShift) | (digits_[i - 1] &gt;&gt; (kTypeBit - interShift));</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; digits_[offset] = digits_[0] &lt;&lt; interShift;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; count_ += offset;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span> (digits_[count_])</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; count_++;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; std::memset(digits_, 0, offset * <span class="keyword">sizeof</span>(Type));</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> BigInteger&amp; rhs)<span class="keyword"> const </span>{</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> count_ == rhs.count_ &amp;&amp; std::memcmp(digits_, rhs.digits_, count_ * <span class="keyword">sizeof</span>(Type)) == 0;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> Type rhs)<span class="keyword"> const </span>{</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> count_ == 1 &amp;&amp; digits_[0] == rhs;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; BigInteger&amp; MultiplyPow5(<span class="keywordtype">unsigned</span> exp) {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint32_t kPow5[12] = {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; 5,</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; 5 * 5,</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; 5 * 5 * 5,</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; 5 * 5 * 5 * 5,</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; 5 * 5 * 5 * 5 * 5,</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; 5 * 5 * 5 * 5 * 5 * 5,</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; 5 * 5 * 5 * 5 * 5 * 5 * 5,</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5,</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5,</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5,</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5,</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; };</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span> (exp == 0) <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">for</span> (; exp &gt;= 27; exp -= 27) *<span class="keyword">this</span> *= <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0X6765C793, 0XFA10079D); <span class="comment">// 5^27</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">for</span> (; exp &gt;= 13; exp -= 13) *<span class="keyword">this</span> *= static_cast&lt;uint32_t&gt;(1220703125u); <span class="comment">// 5^13</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span> (exp &gt; 0) *<span class="keyword">this</span> *= kPow5[exp - 1];</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="comment">// Compute absolute difference of this and rhs.</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// Assume this != rhs</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordtype">bool</span> Difference(<span class="keyword">const</span> BigInteger&amp; rhs, BigInteger* out)<span class="keyword"> const </span>{</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordtype">int</span> cmp = Compare(rhs);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(cmp != 0);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keyword">const</span> BigInteger *a, *b; <span class="comment">// Makes a &gt; b</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordtype">bool</span> ret;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">if</span> (cmp &lt; 0) { a = &amp;rhs; b = <span class="keyword">this</span>; ret = <span class="keyword">true</span>; }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">else</span> { a = <span class="keyword">this</span>; b = &amp;rhs; ret = <span class="keyword">false</span>; }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; Type borrow = 0;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; a-&gt;count_; i++) {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; Type d = a-&gt;digits_[i] - borrow;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">if</span> (i &lt; b-&gt;count_)</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; d -= b-&gt;digits_[i];</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; borrow = (d &gt; a-&gt;digits_[i]) ? 1 : 0;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; out-&gt;digits_[i] = d;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span> (d != 0)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; out-&gt;count_ = i + 1;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordtype">int</span> Compare(<span class="keyword">const</span> BigInteger&amp; rhs)<span class="keyword"> const </span>{</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">if</span> (count_ != rhs.count_)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">return</span> count_ &lt; rhs.count_ ? -1 : 1;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = count_; i-- &gt; 0;)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">if</span> (digits_[i] != rhs.digits_[i])</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span> digits_[i] &lt; rhs.digits_[i] ? -1 : 1;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordtype">size_t</span> GetCount()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> count_; }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; Type GetDigit(<span class="keywordtype">size_t</span> index)<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(index &lt; count_); <span class="keywordflow">return</span> digits_[index]; }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordtype">bool</span> IsZero()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> count_ == 1 &amp;&amp; digits_[0] == 0; }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordtype">void</span> AppendDecimal64(<span class="keyword">const</span> <span class="keywordtype">char</span>* begin, <span class="keyword">const</span> <span class="keywordtype">char</span>* end) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; uint64_t u = ParseUint64(begin, end);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (IsZero())</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; *<span class="keyword">this</span> = u;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordtype">unsigned</span> exp = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(end - begin);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; (MultiplyPow5(exp) &lt;&lt;= exp) += u; <span class="comment">// *this = *this * 10^exp + u</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordtype">void</span> PushBack(Type digit) {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(count_ &lt; kCapacity);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; digits_[count_++] = digit;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keyword">static</span> uint64_t ParseUint64(<span class="keyword">const</span> <span class="keywordtype">char</span>* begin, <span class="keyword">const</span> <span class="keywordtype">char</span>* end) {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; uint64_t r = 0;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>* p = begin; p != end; ++p) {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(*p &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; *p &lt;= <span class="charliteral">&#39;9&#39;</span>);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; r = r * 10u + <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(*p - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="comment">// Assume a * b + k &lt; 2^128</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keyword">static</span> uint64_t MulAdd64(uint64_t a, uint64_t b, uint64_t k, uint64_t* outHigh) {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; defined(_M_AMD64)</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; uint64_t low = _umul128(a, b, outHigh) + k;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">if</span> (low &lt; k)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; (*outHigh)++;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> low;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="preprocessor">#elif (__GNUC__ &gt; 4 || (__GNUC__ == 4 &amp;&amp; __GNUC_MINOR__ &gt;= 6)) &amp;&amp; defined(__x86_64__)</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; __extension__ <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int128 uint128;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; uint128 p = <span class="keyword">static_cast&lt;</span>uint128<span class="keyword">&gt;</span>(a) * static_cast&lt;uint128&gt;(b);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; p += k;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; *outHigh = <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(p &gt;&gt; 64);</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(p);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">const</span> uint64_t a0 = a &amp; 0xFFFFFFFF, a1 = a &gt;&gt; 32, b0 = b &amp; 0xFFFFFFFF, b1 = b &gt;&gt; 32;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; uint64_t x0 = a0 * b0, x1 = a0 * b1, x2 = a1 * b0, x3 = a1 * b1;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; x1 += (x0 &gt;&gt; 32); <span class="comment">// can&#39;t give carry</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; x1 += x2;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (x1 &lt; x2)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; x3 += (<span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(1) &lt;&lt; 32);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; uint64_t lo = (x1 &lt;&lt; 32) + (x0 &amp; 0xFFFFFFFF);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; uint64_t hi = x3 + (x1 &gt;&gt; 32);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; lo += k;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">if</span> (lo &lt; k)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; hi++;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; *outHigh = hi;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">return</span> lo;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kBitCount = 3328; <span class="comment">// 64bit * 54 &gt; 10^1000</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kCapacity = kBitCount / <span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kTypeBit = <span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>) * 8;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; Type digits_[kCapacity];</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordtype">size_t</span> count_;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;};</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_BIGINTEGER_H_</span></div><div class="ttc" id="rapidjson_8h_html_aaee1245f375a71be1ac9b8a07ba5fb8f"><div class="ttname"><a href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a></div><div class="ttdeci">#define RAPIDJSON_UINT64_C2(high32, low32)</div><div class="ttdoc">Construct a 64-bit literal by a pair of 32-bit integer. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:294</div></div>
+<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
@@ -379,7 +90,7 @@ $(document).ready(function(){initNavTree('biginteger_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5167ae66a3a40cb9e5e46c75b7477e81.html">internal</a></li><li class="navelem"><b>biginteger.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_8d7584a8244d286291cd37b99676a43b.html">internal</a></li><li class="navelem"><b>biginteger.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/classes.html b/zh-cn/classes.html
index 17740dde..dc33b023 100644
--- a/zh-cn/classes.html
+++ b/zh-cn/classes.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类索引</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classes.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,44 +81,44 @@ $(document).ready(function(){initNavTree('classes.html','');});
<div class="title">类索引</div> </div>
</div><!--header-->
<div class="contents">
-<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_H">H</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a>&#160;|&#160;<a class="qindex" href="#letter_W">W</a></div>
-<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0">
-<tr><td rowspan="2" valign="bottom"><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;A&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_generic_reader.html">GenericReader</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;M&#160;&#160;</div></td></tr></table>
+<div class="qindex"><a class="qindex" href="#letter_a">a</a>&#160;|&#160;<a class="qindex" href="#letter_b">b</a>&#160;|&#160;<a class="qindex" href="#letter_c">c</a>&#160;|&#160;<a class="qindex" href="#letter_e">e</a>&#160;|&#160;<a class="qindex" href="#letter_f">f</a>&#160;|&#160;<a class="qindex" href="#letter_g">g</a>&#160;|&#160;<a class="qindex" href="#letter_h">h</a>&#160;|&#160;<a class="qindex" href="#letter_i">i</a>&#160;|&#160;<a class="qindex" href="#letter_l">l</a>&#160;|&#160;<a class="qindex" href="#letter_m">m</a>&#160;|&#160;<a class="qindex" href="#letter_p">p</a>&#160;|&#160;<a class="qindex" href="#letter_s">s</a>&#160;|&#160;<a class="qindex" href="#letter_t">t</a>&#160;|&#160;<a class="qindex" href="#letter_u">u</a>&#160;|&#160;<a class="qindex" href="#letter_w">w</a></div>
+<table class="classindex">
+<tr><td rowspan="2" valign="bottom"><a name="letter_a"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;a&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_generic_reader.html">GenericReader</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_m"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;m&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structrapidjson_1_1_transcoder.html">Transcoder</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="classrapidjson_1_1_encoded_output_stream.html">EncodedOutputStream</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_transcoder_3_01_encoding_00_01_encoding_01_4.html">Transcoder&lt; Encoding, Encoding &gt;</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;U&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_u"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;u&#160;&#160;</div></td></tr></table>
</td></tr>
-<tr><td valign="top"><a class="el" href="structrapidjson_1_1_a_s_c_i_i.html">ASCII</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;F&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="structrapidjson_1_1_a_s_c_i_i.html">ASCII</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_f"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;f&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="structrapidjson_1_1_auto_u_t_f.html">AutoUTF</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;P&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="structrapidjson_1_1_auto_u_t_f.html">AutoUTF</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_p"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;p&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structrapidjson_1_1_generic_value_1_1_number_1_1_u.html">GenericValue::Number::U</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">AutoUTFInputStream</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_u_t_f16.html">UTF16</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">AutoUTFOutputStream</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_u_t_f16_b_e.html">UTF16BE</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td></tr>
-<tr><td rowspan="2" valign="bottom"><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;B&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_G"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;G&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_H"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;H&#160;&#160;</div></td></tr></table>
+<tr><td rowspan="2" valign="bottom"><a name="letter_b"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;b&#160;&#160;</div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_g"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;g&#160;&#160;</div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_h"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;h&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_u_t_f16_l_e.html">UTF16LE</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td></tr>
-<tr><td rowspan="2" valign="bottom"><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;S&#160;&#160;</div></td></tr></table>
+<tr><td rowspan="2" valign="bottom"><a name="letter_s"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;s&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structrapidjson_1_1_u_t_f32.html">UTF32</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="structrapidjson_1_1_base_reader_handler.html">BaseReaderHandler</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_handler.html">Handler</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_u_t_f32_b_e.html">UTF32BE</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;I&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_i"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;i&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">SchemaValidatingReader</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_u_t_f32_l_e.html">UTF32LE</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td></tr>
<tr><td valign="top"><a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_stream.html">Stream</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td></tr>
-<tr><td rowspan="2" valign="bottom"><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;C&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="structrapidjson_1_1_generic_member.html">GenericMember</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_generic_value_1_1_number_1_1_i.html">GenericValue::Number::I</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_stream_traits.html">StreamTraits</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_W"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;W&#160;&#160;</div></td></tr></table>
+<tr><td rowspan="2" valign="bottom"><a name="letter_c"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;c&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="structrapidjson_1_1_generic_member.html">GenericMember</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_generic_value_1_1_number_1_1_i.html">GenericValue::Number::I</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_stream_traits.html">StreamTraits</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_w"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;w&#160;&#160;</div></td></tr></table>
</td></tr>
<tr><td valign="top"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IGenericRemoteSchemaDocumentProvider</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4.html">StreamTraits&lt; GenericInsituStringStream&lt; Encoding &gt; &gt;</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">GenericMemoryBuffer</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;L&#160;&#160;</div></td></tr></table>
+<tr><td valign="top"><a class="el" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">GenericMemoryBuffer</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_l"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;l&#160;&#160;</div></td></tr></table>
</td><td valign="top"><a class="el" href="structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4.html">StreamTraits&lt; GenericStringStream&lt; Encoding &gt; &gt;</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classrapidjson_1_1_writer.html">Writer</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td></tr>
-<tr><td rowspan="2" valign="bottom"><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;E&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;T&#160;&#160;</div></td></tr></table>
+<tr><td rowspan="2" valign="bottom"><a name="letter_e"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;e&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_t"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;t&#160;&#160;</div></td></tr></table>
</td><td></td></tr>
<tr><td valign="top"><a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structrapidjson_1_1_writer_1_1_level.html">Writer::Level</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td></td></tr>
<tr><td valign="top"><a class="el" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td></td><td></td><td valign="top"><a class="el" href="structrapidjson_1_1_generic_pointer_1_1_token.html">GenericPointer::Token</a> (<a class="el" href="namespacerapidjson.html">rapidjson</a>)&#160;&#160;&#160;</td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td></tr>
</table>
-<div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_G">G</a>&#160;|&#160;<a class="qindex" href="#letter_H">H</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_T">T</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a>&#160;|&#160;<a class="qindex" href="#letter_W">W</a></div>
+<div class="qindex"><a class="qindex" href="#letter_a">a</a>&#160;|&#160;<a class="qindex" href="#letter_b">b</a>&#160;|&#160;<a class="qindex" href="#letter_c">c</a>&#160;|&#160;<a class="qindex" href="#letter_e">e</a>&#160;|&#160;<a class="qindex" href="#letter_f">f</a>&#160;|&#160;<a class="qindex" href="#letter_g">g</a>&#160;|&#160;<a class="qindex" href="#letter_h">h</a>&#160;|&#160;<a class="qindex" href="#letter_i">i</a>&#160;|&#160;<a class="qindex" href="#letter_l">l</a>&#160;|&#160;<a class="qindex" href="#letter_m">m</a>&#160;|&#160;<a class="qindex" href="#letter_p">p</a>&#160;|&#160;<a class="qindex" href="#letter_s">s</a>&#160;|&#160;<a class="qindex" href="#letter_t">t</a>&#160;|&#160;<a class="qindex" href="#letter_u">u</a>&#160;|&#160;<a class="qindex" href="#letter_w">w</a></div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/classrapidjson_1_1_allocator.html b/zh-cn/classrapidjson_1_1_allocator.html
index 89bc4b0f..7ff9e96e 100644
--- a/zh-cn/classrapidjson_1_1_allocator.html
+++ b/zh-cn/classrapidjson_1_1_allocator.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::Allocator类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_allocator.html','')
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -89,25 +90,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_allocator.html','')
<div class="textblock"><p>Concept for allocating, resizing and freeing memory block. </p>
<p>Note that Malloc() and Realloc() are non-static but Free() is static.</p>
<p>So if an allocator need to support Free(), it needs to put its pointer in the header of memory block.</p>
-<div class="fragment"><div class="line">concept Allocator {</div>
-<div class="line"> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> kNeedFree; <span class="comment">//!&lt; Whether this allocator needs to call Free().</span></div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"> <span class="comment">// Allocate a memory block.</span></div>
-<div class="line"> <span class="comment">// \param size of the memory block in bytes.</span></div>
-<div class="line"> <span class="comment">// \returns pointer to the memory block.</span></div>
-<div class="line"> <span class="keywordtype">void</span>* Malloc(<span class="keywordtype">size_t</span> size);</div>
-<div class="line"></div>
-<div class="line"> <span class="comment">// Resize a memory block.</span></div>
-<div class="line"> <span class="comment">// \param originalPtr The pointer to current memory block. Null pointer is permitted.</span></div>
-<div class="line"> <span class="comment">// \param originalSize The current size in bytes. (Design issue: since some allocator may not book-keep this, explicitly pass to it can save memory.)</span></div>
-<div class="line"> <span class="comment">// \param newSize the new size in bytes.</span></div>
-<div class="line"> <span class="keywordtype">void</span>* Realloc(<span class="keywordtype">void</span>* originalPtr, <span class="keywordtype">size_t</span> originalSize, <span class="keywordtype">size_t</span> newSize);</div>
-<div class="line"></div>
-<div class="line"> <span class="comment">// Free a memory block.</span></div>
-<div class="line"> <span class="comment">// \param pointer to the memory block. Null pointer is permitted.</span></div>
-<div class="line"> <span class="keyword">static</span> <span class="keywordtype">void</span> Free(<span class="keywordtype">void</span> *ptr);</div>
-<div class="line">};</div>
-</div><!-- fragment --> </div><hr/>该类的文档由以下文件生成:<ul>
+<div class="fragment"><div class="line">concept Allocator {</div><div class="line"> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> kNeedFree; <span class="comment">//!&lt; Whether this allocator needs to call Free().</span></div><div class="line"><span class="comment"></span></div><div class="line"> <span class="comment">// Allocate a memory block.</span></div><div class="line"> <span class="comment">// \param size of the memory block in bytes.</span></div><div class="line"> <span class="comment">// \returns pointer to the memory block.</span></div><div class="line"> <span class="keywordtype">void</span>* Malloc(<span class="keywordtype">size_t</span> size);</div><div class="line"></div><div class="line"> <span class="comment">// Resize a memory block.</span></div><div class="line"> <span class="comment">// \param originalPtr The pointer to current memory block. Null pointer is permitted.</span></div><div class="line"> <span class="comment">// \param originalSize The current size in bytes. (Design issue: since some allocator may not book-keep this, explicitly pass to it can save memory.)</span></div><div class="line"> <span class="comment">// \param newSize the new size in bytes.</span></div><div class="line"> <span class="keywordtype">void</span>* Realloc(<span class="keywordtype">void</span>* originalPtr, <span class="keywordtype">size_t</span> originalSize, <span class="keywordtype">size_t</span> newSize);</div><div class="line"></div><div class="line"> <span class="comment">// Free a memory block.</span></div><div class="line"> <span class="comment">// \param pointer to the memory block. Null pointer is permitted.</span></div><div class="line"> <span class="keyword">static</span> <span class="keywordtype">void</span> Free(<span class="keywordtype">void</span> *ptr);</div><div class="line">};</div></div><!-- fragment --> </div><hr/>该类的文档由以下文件生成:<ul>
<li>include/rapidjson/<a class="el" href="allocators_8h_source.html">allocators.h</a></li>
</ul>
</div><!-- contents -->
diff --git a/zh-cn/classrapidjson_1_1_auto_u_t_f_input_stream-members.html b/zh-cn/classrapidjson_1_1_auto_u_t_f_input_stream-members.html
index 9b8d4ebb..69469252 100644
--- a/zh-cn/classrapidjson_1_1_auto_u_t_f_input_stream-members.html
+++ b/zh-cn/classrapidjson_1_1_auto_u_t_f_input_stream-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_auto_u_t_f_input_st
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -86,14 +87,14 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_auto_u_t_f_input_st
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html#a5c9f041a3b32bf15bc9be888a8731d35">AutoUTFInputStream</a>(InputByteStream &amp;is, UTFType type=kUTF8)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Ch</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Flush</b>() (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetType</b>() const (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>HasBOM</b>() const (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetType</b>() const (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>HasBOM</b>() const (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Put</b>(Ch) (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>PutBegin</b>() (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PutEnd</b>(Ch *) (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Take</b>() (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/classrapidjson_1_1_auto_u_t_f_input_stream.html b/zh-cn/classrapidjson_1_1_auto_u_t_f_input_stream.html
index 175f6139..bd9d38df 100644
--- a/zh-cn/classrapidjson_1_1_auto_u_t_f_input_stream.html
+++ b/zh-cn/classrapidjson_1_1_auto_u_t_f_input_stream.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_auto_u_t_f_input_st
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,7 +93,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_auto_u_t_f_input_st
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a6d9eca095f7ef8c249ebe43568d66d0e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d9eca095f7ef8c249ebe43568d66d0e"></a>
+<tr class="memitem:a6d9eca095f7ef8c249ebe43568d66d0e"><td class="memItemLeft" align="right" valign="top"><a id="a6d9eca095f7ef8c249ebe43568d66d0e"></a>
typedef CharType&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a6d9eca095f7ef8c249ebe43568d66d0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
@@ -101,31 +102,31 @@ Public 成员函数</h2></td></tr>
<tr class="memitem:a5c9f041a3b32bf15bc9be888a8731d35"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html#a5c9f041a3b32bf15bc9be888a8731d35">AutoUTFInputStream</a> (InputByteStream &amp;is, <a class="el" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> type=<a class="el" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81">kUTF8</a>)</td></tr>
<tr class="memdesc:a5c9f041a3b32bf15bc9be888a8731d35"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="#a5c9f041a3b32bf15bc9be888a8731d35">更多...</a><br /></td></tr>
<tr class="separator:a5c9f041a3b32bf15bc9be888a8731d35"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa7a839dd7b37ef7e09fce3288dd8a554"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7a839dd7b37ef7e09fce3288dd8a554"></a>
-<a class="el" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetType</b> () const </td></tr>
-<tr class="separator:aa7a839dd7b37ef7e09fce3288dd8a554"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a41853ea451467d098fa0034e8e01ac47"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41853ea451467d098fa0034e8e01ac47"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>HasBOM</b> () const </td></tr>
-<tr class="separator:a41853ea451467d098fa0034e8e01ac47"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a21bdc07e3ee29a6c1139cecb748f3720"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21bdc07e3ee29a6c1139cecb748f3720"></a>
-Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const </td></tr>
-<tr class="separator:a21bdc07e3ee29a6c1139cecb748f3720"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abd4074558faa530f19aeeca6339e58e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd4074558faa530f19aeeca6339e58e4"></a>
+<tr class="memitem:a3666311c98787d9ed61b9fed2f3ac983"><td class="memItemLeft" align="right" valign="top"><a id="a3666311c98787d9ed61b9fed2f3ac983"></a>
+<a class="el" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetType</b> () const</td></tr>
+<tr class="separator:a3666311c98787d9ed61b9fed2f3ac983"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9934b27779fad9e36e6a85cbbaf21877"><td class="memItemLeft" align="right" valign="top"><a id="a9934b27779fad9e36e6a85cbbaf21877"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>HasBOM</b> () const</td></tr>
+<tr class="separator:a9934b27779fad9e36e6a85cbbaf21877"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6c5f36399d52fdc8230c25e092d4c357"><td class="memItemLeft" align="right" valign="top"><a id="a6c5f36399d52fdc8230c25e092d4c357"></a>
+Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const</td></tr>
+<tr class="separator:a6c5f36399d52fdc8230c25e092d4c357"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abd4074558faa530f19aeeca6339e58e4"><td class="memItemLeft" align="right" valign="top"><a id="abd4074558faa530f19aeeca6339e58e4"></a>
Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Take</b> ()</td></tr>
<tr class="separator:abd4074558faa530f19aeeca6339e58e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1e513c05b0be76071bfd31d528e8f3ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e513c05b0be76071bfd31d528e8f3ed"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const </td></tr>
-<tr class="separator:a1e513c05b0be76071bfd31d528e8f3ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a407d1e2e7db6a547833e6b0a44162b6e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a407d1e2e7db6a547833e6b0a44162b6e"></a>
+<tr class="memitem:a1e9b3e74895d28625fd184cf8897ed18"><td class="memItemLeft" align="right" valign="top"><a id="a1e9b3e74895d28625fd184cf8897ed18"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const</td></tr>
+<tr class="separator:a1e9b3e74895d28625fd184cf8897ed18"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a407d1e2e7db6a547833e6b0a44162b6e"><td class="memItemLeft" align="right" valign="top"><a id="a407d1e2e7db6a547833e6b0a44162b6e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Put</b> (Ch)</td></tr>
<tr class="separator:a407d1e2e7db6a547833e6b0a44162b6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad148d858b28b501d16d68b5e5af8602e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad148d858b28b501d16d68b5e5af8602e"></a>
+<tr class="memitem:ad148d858b28b501d16d68b5e5af8602e"><td class="memItemLeft" align="right" valign="top"><a id="ad148d858b28b501d16d68b5e5af8602e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Flush</b> ()</td></tr>
<tr class="separator:ad148d858b28b501d16d68b5e5af8602e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae2706e06ffd8666c40c3a51705eef76c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae2706e06ffd8666c40c3a51705eef76c"></a>
+<tr class="memitem:ae2706e06ffd8666c40c3a51705eef76c"><td class="memItemLeft" align="right" valign="top"><a id="ae2706e06ffd8666c40c3a51705eef76c"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>PutBegin</b> ()</td></tr>
<tr class="separator:ae2706e06ffd8666c40c3a51705eef76c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aebead5efecdc51ffd78d95ca6ca1e07b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aebead5efecdc51ffd78d95ca6ca1e07b"></a>
+<tr class="memitem:aebead5efecdc51ffd78d95ca6ca1e07b"><td class="memItemLeft" align="right" valign="top"><a id="aebead5efecdc51ffd78d95ca6ca1e07b"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>PutEnd</b> (Ch *)</td></tr>
<tr class="separator:aebead5efecdc51ffd78d95ca6ca1e07b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@@ -142,7 +143,9 @@ class rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</h3>
</dd>
</dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
-<a class="anchor" id="a5c9f041a3b32bf15bc9be888a8731d35"></a>
+<a id="a5c9f041a3b32bf15bc9be888a8731d35"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5c9f041a3b32bf15bc9be888a8731d35">&#9670;&nbsp;</a></span>AutoUTFInputStream()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
diff --git a/zh-cn/classrapidjson_1_1_auto_u_t_f_input_stream.js b/zh-cn/classrapidjson_1_1_auto_u_t_f_input_stream.js
index ac4d68f7..d7316ea0 100644
--- a/zh-cn/classrapidjson_1_1_auto_u_t_f_input_stream.js
+++ b/zh-cn/classrapidjson_1_1_auto_u_t_f_input_stream.js
@@ -3,12 +3,12 @@ var classrapidjson_1_1_auto_u_t_f_input_stream =
[ "Ch", "classrapidjson_1_1_auto_u_t_f_input_stream.html#a6d9eca095f7ef8c249ebe43568d66d0e", null ],
[ "AutoUTFInputStream", "classrapidjson_1_1_auto_u_t_f_input_stream.html#a5c9f041a3b32bf15bc9be888a8731d35", null ],
[ "Flush", "classrapidjson_1_1_auto_u_t_f_input_stream.html#ad148d858b28b501d16d68b5e5af8602e", null ],
- [ "GetType", "classrapidjson_1_1_auto_u_t_f_input_stream.html#aa7a839dd7b37ef7e09fce3288dd8a554", null ],
- [ "HasBOM", "classrapidjson_1_1_auto_u_t_f_input_stream.html#a41853ea451467d098fa0034e8e01ac47", null ],
- [ "Peek", "classrapidjson_1_1_auto_u_t_f_input_stream.html#a21bdc07e3ee29a6c1139cecb748f3720", null ],
+ [ "GetType", "classrapidjson_1_1_auto_u_t_f_input_stream.html#a3666311c98787d9ed61b9fed2f3ac983", null ],
+ [ "HasBOM", "classrapidjson_1_1_auto_u_t_f_input_stream.html#a9934b27779fad9e36e6a85cbbaf21877", null ],
+ [ "Peek", "classrapidjson_1_1_auto_u_t_f_input_stream.html#a6c5f36399d52fdc8230c25e092d4c357", null ],
[ "Put", "classrapidjson_1_1_auto_u_t_f_input_stream.html#a407d1e2e7db6a547833e6b0a44162b6e", null ],
[ "PutBegin", "classrapidjson_1_1_auto_u_t_f_input_stream.html#ae2706e06ffd8666c40c3a51705eef76c", null ],
[ "PutEnd", "classrapidjson_1_1_auto_u_t_f_input_stream.html#aebead5efecdc51ffd78d95ca6ca1e07b", null ],
[ "Take", "classrapidjson_1_1_auto_u_t_f_input_stream.html#abd4074558faa530f19aeeca6339e58e4", null ],
- [ "Tell", "classrapidjson_1_1_auto_u_t_f_input_stream.html#a1e513c05b0be76071bfd31d528e8f3ed", null ]
+ [ "Tell", "classrapidjson_1_1_auto_u_t_f_input_stream.html#a1e9b3e74895d28625fd184cf8897ed18", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_auto_u_t_f_output_stream-members.html b/zh-cn/classrapidjson_1_1_auto_u_t_f_output_stream-members.html
index 69f31d1c..063640a9 100644
--- a/zh-cn/classrapidjson_1_1_auto_u_t_f_output_stream-members.html
+++ b/zh-cn/classrapidjson_1_1_auto_u_t_f_output_stream-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_auto_u_t_f_output_s
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -86,13 +87,13 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_auto_u_t_f_output_s
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html#a39c828ee4c5b052df7338ec7fda1a17d">AutoUTFOutputStream</a>(OutputByteStream &amp;os, UTFType type, bool putBOM)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Ch</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Flush</b>() (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetType</b>() const (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetType</b>() const (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Put</b>(Ch c) (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PutBegin</b>() (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>PutEnd</b>(Ch *) (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Take</b>() (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/classrapidjson_1_1_auto_u_t_f_output_stream.html b/zh-cn/classrapidjson_1_1_auto_u_t_f_output_stream.html
index 04939d8c..2767ffb9 100644
--- a/zh-cn/classrapidjson_1_1_auto_u_t_f_output_stream.html
+++ b/zh-cn/classrapidjson_1_1_auto_u_t_f_output_stream.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_auto_u_t_f_output_s
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,7 +93,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_auto_u_t_f_output_s
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:aaf40884d8f4fbf24ea040d3363c9967e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf40884d8f4fbf24ea040d3363c9967e"></a>
+<tr class="memitem:aaf40884d8f4fbf24ea040d3363c9967e"><td class="memItemLeft" align="right" valign="top"><a id="aaf40884d8f4fbf24ea040d3363c9967e"></a>
typedef CharType&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:aaf40884d8f4fbf24ea040d3363c9967e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
@@ -101,28 +102,28 @@ Public 成员函数</h2></td></tr>
<tr class="memitem:a39c828ee4c5b052df7338ec7fda1a17d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_auto_u_t_f_output_stream.html#a39c828ee4c5b052df7338ec7fda1a17d">AutoUTFOutputStream</a> (OutputByteStream &amp;os, <a class="el" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> type, bool putBOM)</td></tr>
<tr class="memdesc:a39c828ee4c5b052df7338ec7fda1a17d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="#a39c828ee4c5b052df7338ec7fda1a17d">更多...</a><br /></td></tr>
<tr class="separator:a39c828ee4c5b052df7338ec7fda1a17d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aafdb7398f46838d65f1ea550f124eab0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aafdb7398f46838d65f1ea550f124eab0"></a>
-<a class="el" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetType</b> () const </td></tr>
-<tr class="separator:aafdb7398f46838d65f1ea550f124eab0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a11ab92b78f15ccb20917887f06d6de66"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11ab92b78f15ccb20917887f06d6de66"></a>
+<tr class="memitem:ae01c4c0e6ac78b9bc875a9e73c63fd05"><td class="memItemLeft" align="right" valign="top"><a id="ae01c4c0e6ac78b9bc875a9e73c63fd05"></a>
+<a class="el" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetType</b> () const</td></tr>
+<tr class="separator:ae01c4c0e6ac78b9bc875a9e73c63fd05"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a11ab92b78f15ccb20917887f06d6de66"><td class="memItemLeft" align="right" valign="top"><a id="a11ab92b78f15ccb20917887f06d6de66"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Put</b> (Ch c)</td></tr>
<tr class="separator:a11ab92b78f15ccb20917887f06d6de66"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a04746e5fa16007b2cbe4be5f8d68940d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a04746e5fa16007b2cbe4be5f8d68940d"></a>
+<tr class="memitem:a04746e5fa16007b2cbe4be5f8d68940d"><td class="memItemLeft" align="right" valign="top"><a id="a04746e5fa16007b2cbe4be5f8d68940d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Flush</b> ()</td></tr>
<tr class="separator:a04746e5fa16007b2cbe4be5f8d68940d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a778eedb35104758eafadd9d0deab2913"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a778eedb35104758eafadd9d0deab2913"></a>
-Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const </td></tr>
-<tr class="separator:a778eedb35104758eafadd9d0deab2913"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0fd284bc102b7802bf5541a3169d912e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0fd284bc102b7802bf5541a3169d912e"></a>
+<tr class="memitem:a89e2fba1e92b4f1408744934fcb56881"><td class="memItemLeft" align="right" valign="top"><a id="a89e2fba1e92b4f1408744934fcb56881"></a>
+Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const</td></tr>
+<tr class="separator:a89e2fba1e92b4f1408744934fcb56881"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0fd284bc102b7802bf5541a3169d912e"><td class="memItemLeft" align="right" valign="top"><a id="a0fd284bc102b7802bf5541a3169d912e"></a>
Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Take</b> ()</td></tr>
<tr class="separator:a0fd284bc102b7802bf5541a3169d912e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a78930d33c147ae74c29e4abb362e1c29"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78930d33c147ae74c29e4abb362e1c29"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const </td></tr>
-<tr class="separator:a78930d33c147ae74c29e4abb362e1c29"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad3c65d2c5f94590add9bd743f09c0c63"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3c65d2c5f94590add9bd743f09c0c63"></a>
+<tr class="memitem:ac6c7dadb3851cf9e49c55273dd89937c"><td class="memItemLeft" align="right" valign="top"><a id="ac6c7dadb3851cf9e49c55273dd89937c"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const</td></tr>
+<tr class="separator:ac6c7dadb3851cf9e49c55273dd89937c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad3c65d2c5f94590add9bd743f09c0c63"><td class="memItemLeft" align="right" valign="top"><a id="ad3c65d2c5f94590add9bd743f09c0c63"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>PutBegin</b> ()</td></tr>
<tr class="separator:ad3c65d2c5f94590add9bd743f09c0c63"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0348cb8d01546573894371d60aaaea94"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0348cb8d01546573894371d60aaaea94"></a>
+<tr class="memitem:a0348cb8d01546573894371d60aaaea94"><td class="memItemLeft" align="right" valign="top"><a id="a0348cb8d01546573894371d60aaaea94"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>PutEnd</b> (Ch *)</td></tr>
<tr class="separator:a0348cb8d01546573894371d60aaaea94"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@@ -139,7 +140,9 @@ class rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;</h3>
</dd>
</dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
-<a class="anchor" id="a39c828ee4c5b052df7338ec7fda1a17d"></a>
+<a id="a39c828ee4c5b052df7338ec7fda1a17d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a39c828ee4c5b052df7338ec7fda1a17d">&#9670;&nbsp;</a></span>AutoUTFOutputStream()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
diff --git a/zh-cn/classrapidjson_1_1_auto_u_t_f_output_stream.js b/zh-cn/classrapidjson_1_1_auto_u_t_f_output_stream.js
index 66bcbb62..488f7ccf 100644
--- a/zh-cn/classrapidjson_1_1_auto_u_t_f_output_stream.js
+++ b/zh-cn/classrapidjson_1_1_auto_u_t_f_output_stream.js
@@ -3,11 +3,11 @@ var classrapidjson_1_1_auto_u_t_f_output_stream =
[ "Ch", "classrapidjson_1_1_auto_u_t_f_output_stream.html#aaf40884d8f4fbf24ea040d3363c9967e", null ],
[ "AutoUTFOutputStream", "classrapidjson_1_1_auto_u_t_f_output_stream.html#a39c828ee4c5b052df7338ec7fda1a17d", null ],
[ "Flush", "classrapidjson_1_1_auto_u_t_f_output_stream.html#a04746e5fa16007b2cbe4be5f8d68940d", null ],
- [ "GetType", "classrapidjson_1_1_auto_u_t_f_output_stream.html#aafdb7398f46838d65f1ea550f124eab0", null ],
- [ "Peek", "classrapidjson_1_1_auto_u_t_f_output_stream.html#a778eedb35104758eafadd9d0deab2913", null ],
+ [ "GetType", "classrapidjson_1_1_auto_u_t_f_output_stream.html#ae01c4c0e6ac78b9bc875a9e73c63fd05", null ],
+ [ "Peek", "classrapidjson_1_1_auto_u_t_f_output_stream.html#a89e2fba1e92b4f1408744934fcb56881", null ],
[ "Put", "classrapidjson_1_1_auto_u_t_f_output_stream.html#a11ab92b78f15ccb20917887f06d6de66", null ],
[ "PutBegin", "classrapidjson_1_1_auto_u_t_f_output_stream.html#ad3c65d2c5f94590add9bd743f09c0c63", null ],
[ "PutEnd", "classrapidjson_1_1_auto_u_t_f_output_stream.html#a0348cb8d01546573894371d60aaaea94", null ],
[ "Take", "classrapidjson_1_1_auto_u_t_f_output_stream.html#a0fd284bc102b7802bf5541a3169d912e", null ],
- [ "Tell", "classrapidjson_1_1_auto_u_t_f_output_stream.html#a78930d33c147ae74c29e4abb362e1c29", null ]
+ [ "Tell", "classrapidjson_1_1_auto_u_t_f_output_stream.html#ac6c7dadb3851cf9e49c55273dd89937c", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_basic_i_stream_wrapper-members.html b/zh-cn/classrapidjson_1_1_basic_i_stream_wrapper-members.html
index 31810f2b..02dfdb17 100644
--- a/zh-cn/classrapidjson_1_1_basic_i_stream_wrapper-members.html
+++ b/zh-cn/classrapidjson_1_1_basic_i_stream_wrapper-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_basic_i_stream_wrap
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -86,13 +87,13 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_basic_i_stream_wrap
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BasicIStreamWrapper</b>(StreamType &amp;stream) (定义于 <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Ch</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Flush</b>() (定义于 <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Peek4</b>() const (定义于 <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Peek4</b>() const (定义于 <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Put</b>(Ch) (定义于 <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PutBegin</b>() (定义于 <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>PutEnd</b>(Ch *) (定义于 <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Take</b>() (定义于 <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/classrapidjson_1_1_basic_i_stream_wrapper.html b/zh-cn/classrapidjson_1_1_basic_i_stream_wrapper.html
index d1e9a85a..3dd015bf 100644
--- a/zh-cn/classrapidjson_1_1_basic_i_stream_wrapper.html
+++ b/zh-cn/classrapidjson_1_1_basic_i_stream_wrapper.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::BasicIStreamWrapper&lt; StreamType &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_basic_i_stream_wrap
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,39 +93,39 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_basic_i_stream_wrap
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a5fd972d8cd20b90ba0772aeebf122597"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fd972d8cd20b90ba0772aeebf122597"></a>
+<tr class="memitem:a5fd972d8cd20b90ba0772aeebf122597"><td class="memItemLeft" align="right" valign="top"><a id="a5fd972d8cd20b90ba0772aeebf122597"></a>
typedef StreamType::char_type&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a5fd972d8cd20b90ba0772aeebf122597"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:a2b4e069522fa9119685f1cee836e5cfa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2b4e069522fa9119685f1cee836e5cfa"></a>
+<tr class="memitem:a2b4e069522fa9119685f1cee836e5cfa"><td class="memItemLeft" align="right" valign="top"><a id="a2b4e069522fa9119685f1cee836e5cfa"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>BasicIStreamWrapper</b> (StreamType &amp;stream)</td></tr>
<tr class="separator:a2b4e069522fa9119685f1cee836e5cfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5e758b5c252ec7b4e03e19b7112a03f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e758b5c252ec7b4e03e19b7112a03f3"></a>
-Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const </td></tr>
-<tr class="separator:a5e758b5c252ec7b4e03e19b7112a03f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac803b6494e23a3432c6da1ba9cb9abdc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac803b6494e23a3432c6da1ba9cb9abdc"></a>
+<tr class="memitem:adfae250fbfdf7dda0ee9b3895758e767"><td class="memItemLeft" align="right" valign="top"><a id="adfae250fbfdf7dda0ee9b3895758e767"></a>
+Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const</td></tr>
+<tr class="separator:adfae250fbfdf7dda0ee9b3895758e767"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac803b6494e23a3432c6da1ba9cb9abdc"><td class="memItemLeft" align="right" valign="top"><a id="ac803b6494e23a3432c6da1ba9cb9abdc"></a>
Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Take</b> ()</td></tr>
<tr class="separator:ac803b6494e23a3432c6da1ba9cb9abdc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0e9c8277d08c0896507460805b302dbc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e9c8277d08c0896507460805b302dbc"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const </td></tr>
-<tr class="separator:a0e9c8277d08c0896507460805b302dbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5175c92fadc5278b215bad1822b62267"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5175c92fadc5278b215bad1822b62267"></a>
+<tr class="memitem:a298096361d0d34706ba68af0a68e389f"><td class="memItemLeft" align="right" valign="top"><a id="a298096361d0d34706ba68af0a68e389f"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const</td></tr>
+<tr class="separator:a298096361d0d34706ba68af0a68e389f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5175c92fadc5278b215bad1822b62267"><td class="memItemLeft" align="right" valign="top"><a id="a5175c92fadc5278b215bad1822b62267"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>PutBegin</b> ()</td></tr>
<tr class="separator:a5175c92fadc5278b215bad1822b62267"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af020a73e0739581f784b68c1f5adb385"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af020a73e0739581f784b68c1f5adb385"></a>
+<tr class="memitem:af020a73e0739581f784b68c1f5adb385"><td class="memItemLeft" align="right" valign="top"><a id="af020a73e0739581f784b68c1f5adb385"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Put</b> (Ch)</td></tr>
<tr class="separator:af020a73e0739581f784b68c1f5adb385"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab787ec1bce9ec0e4ddc42cde173d3ab1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab787ec1bce9ec0e4ddc42cde173d3ab1"></a>
+<tr class="memitem:ab787ec1bce9ec0e4ddc42cde173d3ab1"><td class="memItemLeft" align="right" valign="top"><a id="ab787ec1bce9ec0e4ddc42cde173d3ab1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Flush</b> ()</td></tr>
<tr class="separator:ab787ec1bce9ec0e4ddc42cde173d3ab1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a06939b6b8f349a611e6dd8ed82274a76"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06939b6b8f349a611e6dd8ed82274a76"></a>
+<tr class="memitem:a06939b6b8f349a611e6dd8ed82274a76"><td class="memItemLeft" align="right" valign="top"><a id="a06939b6b8f349a611e6dd8ed82274a76"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>PutEnd</b> (Ch *)</td></tr>
<tr class="separator:a06939b6b8f349a611e6dd8ed82274a76"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae48f5624f0eb9ff2d58631d254bb0ab7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae48f5624f0eb9ff2d58631d254bb0ab7"></a>
-const Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>Peek4</b> () const </td></tr>
-<tr class="separator:ae48f5624f0eb9ff2d58631d254bb0ab7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afaece8ea8d7b73abc0d4942070b41f8a"><td class="memItemLeft" align="right" valign="top"><a id="afaece8ea8d7b73abc0d4942070b41f8a"></a>
+const Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>Peek4</b> () const</td></tr>
+<tr class="separator:afaece8ea8d7b73abc0d4942070b41f8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename StreamType&gt;<br />
diff --git a/zh-cn/classrapidjson_1_1_basic_i_stream_wrapper.js b/zh-cn/classrapidjson_1_1_basic_i_stream_wrapper.js
index 75548fc4..0f9f219a 100644
--- a/zh-cn/classrapidjson_1_1_basic_i_stream_wrapper.js
+++ b/zh-cn/classrapidjson_1_1_basic_i_stream_wrapper.js
@@ -3,11 +3,11 @@ var classrapidjson_1_1_basic_i_stream_wrapper =
[ "Ch", "classrapidjson_1_1_basic_i_stream_wrapper.html#a5fd972d8cd20b90ba0772aeebf122597", null ],
[ "BasicIStreamWrapper", "classrapidjson_1_1_basic_i_stream_wrapper.html#a2b4e069522fa9119685f1cee836e5cfa", null ],
[ "Flush", "classrapidjson_1_1_basic_i_stream_wrapper.html#ab787ec1bce9ec0e4ddc42cde173d3ab1", null ],
- [ "Peek", "classrapidjson_1_1_basic_i_stream_wrapper.html#a5e758b5c252ec7b4e03e19b7112a03f3", null ],
- [ "Peek4", "classrapidjson_1_1_basic_i_stream_wrapper.html#ae48f5624f0eb9ff2d58631d254bb0ab7", null ],
+ [ "Peek", "classrapidjson_1_1_basic_i_stream_wrapper.html#adfae250fbfdf7dda0ee9b3895758e767", null ],
+ [ "Peek4", "classrapidjson_1_1_basic_i_stream_wrapper.html#afaece8ea8d7b73abc0d4942070b41f8a", null ],
[ "Put", "classrapidjson_1_1_basic_i_stream_wrapper.html#af020a73e0739581f784b68c1f5adb385", null ],
[ "PutBegin", "classrapidjson_1_1_basic_i_stream_wrapper.html#a5175c92fadc5278b215bad1822b62267", null ],
[ "PutEnd", "classrapidjson_1_1_basic_i_stream_wrapper.html#a06939b6b8f349a611e6dd8ed82274a76", null ],
[ "Take", "classrapidjson_1_1_basic_i_stream_wrapper.html#ac803b6494e23a3432c6da1ba9cb9abdc", null ],
- [ "Tell", "classrapidjson_1_1_basic_i_stream_wrapper.html#a0e9c8277d08c0896507460805b302dbc", null ]
+ [ "Tell", "classrapidjson_1_1_basic_i_stream_wrapper.html#a298096361d0d34706ba68af0a68e389f", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_basic_o_stream_wrapper-members.html b/zh-cn/classrapidjson_1_1_basic_o_stream_wrapper-members.html
index a7fcc501..6d4ff4e6 100644
--- a/zh-cn/classrapidjson_1_1_basic_o_stream_wrapper-members.html
+++ b/zh-cn/classrapidjson_1_1_basic_o_stream_wrapper-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_basic_o_stream_wrap
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -86,12 +87,12 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_basic_o_stream_wrap
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BasicOStreamWrapper</b>(StreamType &amp;stream) (定义于 <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Ch</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Flush</b>() (定义于 <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Put</b>(Ch c) (定义于 <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>PutBegin</b>() (定义于 <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PutEnd</b>(char *) (定义于 <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Take</b>() (定义于 <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper&lt; StreamType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/classrapidjson_1_1_basic_o_stream_wrapper.html b/zh-cn/classrapidjson_1_1_basic_o_stream_wrapper.html
index 9afa9644..635f0d8f 100644
--- a/zh-cn/classrapidjson_1_1_basic_o_stream_wrapper.html
+++ b/zh-cn/classrapidjson_1_1_basic_o_stream_wrapper.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::BasicOStreamWrapper&lt; StreamType &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_basic_o_stream_wrap
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,34 +93,34 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_basic_o_stream_wrap
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a615d4f601af4c039c9087a50578226b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a615d4f601af4c039c9087a50578226b0"></a>
+<tr class="memitem:a615d4f601af4c039c9087a50578226b0"><td class="memItemLeft" align="right" valign="top"><a id="a615d4f601af4c039c9087a50578226b0"></a>
typedef StreamType::char_type&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a615d4f601af4c039c9087a50578226b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:a68222d18ea4a16917b374ca53f78bbcd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a68222d18ea4a16917b374ca53f78bbcd"></a>
+<tr class="memitem:a68222d18ea4a16917b374ca53f78bbcd"><td class="memItemLeft" align="right" valign="top"><a id="a68222d18ea4a16917b374ca53f78bbcd"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>BasicOStreamWrapper</b> (StreamType &amp;stream)</td></tr>
<tr class="separator:a68222d18ea4a16917b374ca53f78bbcd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae4e99bf009dd43c7e760eebae4e732ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae4e99bf009dd43c7e760eebae4e732ac"></a>
+<tr class="memitem:ae4e99bf009dd43c7e760eebae4e732ac"><td class="memItemLeft" align="right" valign="top"><a id="ae4e99bf009dd43c7e760eebae4e732ac"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Put</b> (Ch c)</td></tr>
<tr class="separator:ae4e99bf009dd43c7e760eebae4e732ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4d981433f0df0fbcaed206d11642b183"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d981433f0df0fbcaed206d11642b183"></a>
+<tr class="memitem:a4d981433f0df0fbcaed206d11642b183"><td class="memItemLeft" align="right" valign="top"><a id="a4d981433f0df0fbcaed206d11642b183"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Flush</b> ()</td></tr>
<tr class="separator:a4d981433f0df0fbcaed206d11642b183"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1614c9862e711b62e7df0329410830e5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1614c9862e711b62e7df0329410830e5"></a>
-char&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const </td></tr>
-<tr class="separator:a1614c9862e711b62e7df0329410830e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4ea92ceb4c1fae9cdd1912f2ab07dd73"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ea92ceb4c1fae9cdd1912f2ab07dd73"></a>
+<tr class="memitem:ac3baaf203553871fbd849368e1b5526e"><td class="memItemLeft" align="right" valign="top"><a id="ac3baaf203553871fbd849368e1b5526e"></a>
+char&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const</td></tr>
+<tr class="separator:ac3baaf203553871fbd849368e1b5526e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4ea92ceb4c1fae9cdd1912f2ab07dd73"><td class="memItemLeft" align="right" valign="top"><a id="a4ea92ceb4c1fae9cdd1912f2ab07dd73"></a>
char&#160;</td><td class="memItemRight" valign="bottom"><b>Take</b> ()</td></tr>
<tr class="separator:a4ea92ceb4c1fae9cdd1912f2ab07dd73"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a41654718c87b0db23c17a14d52852b74"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41654718c87b0db23c17a14d52852b74"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const </td></tr>
-<tr class="separator:a41654718c87b0db23c17a14d52852b74"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0d9c9c5d11e53ea486cf555fb43d6fe2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0d9c9c5d11e53ea486cf555fb43d6fe2"></a>
+<tr class="memitem:a6bf51fa9e5692dceaf98b0cceba3f7e2"><td class="memItemLeft" align="right" valign="top"><a id="a6bf51fa9e5692dceaf98b0cceba3f7e2"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const</td></tr>
+<tr class="separator:a6bf51fa9e5692dceaf98b0cceba3f7e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0d9c9c5d11e53ea486cf555fb43d6fe2"><td class="memItemLeft" align="right" valign="top"><a id="a0d9c9c5d11e53ea486cf555fb43d6fe2"></a>
char *&#160;</td><td class="memItemRight" valign="bottom"><b>PutBegin</b> ()</td></tr>
<tr class="separator:a0d9c9c5d11e53ea486cf555fb43d6fe2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8e1c33024d08945a32b85aeba87dca82"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e1c33024d08945a32b85aeba87dca82"></a>
+<tr class="memitem:a8e1c33024d08945a32b85aeba87dca82"><td class="memItemLeft" align="right" valign="top"><a id="a8e1c33024d08945a32b85aeba87dca82"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>PutEnd</b> (char *)</td></tr>
<tr class="separator:a8e1c33024d08945a32b85aeba87dca82"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
diff --git a/zh-cn/classrapidjson_1_1_basic_o_stream_wrapper.js b/zh-cn/classrapidjson_1_1_basic_o_stream_wrapper.js
index 1ea8bc10..d2b3fb86 100644
--- a/zh-cn/classrapidjson_1_1_basic_o_stream_wrapper.js
+++ b/zh-cn/classrapidjson_1_1_basic_o_stream_wrapper.js
@@ -3,10 +3,10 @@ var classrapidjson_1_1_basic_o_stream_wrapper =
[ "Ch", "classrapidjson_1_1_basic_o_stream_wrapper.html#a615d4f601af4c039c9087a50578226b0", null ],
[ "BasicOStreamWrapper", "classrapidjson_1_1_basic_o_stream_wrapper.html#a68222d18ea4a16917b374ca53f78bbcd", null ],
[ "Flush", "classrapidjson_1_1_basic_o_stream_wrapper.html#a4d981433f0df0fbcaed206d11642b183", null ],
- [ "Peek", "classrapidjson_1_1_basic_o_stream_wrapper.html#a1614c9862e711b62e7df0329410830e5", null ],
+ [ "Peek", "classrapidjson_1_1_basic_o_stream_wrapper.html#ac3baaf203553871fbd849368e1b5526e", null ],
[ "Put", "classrapidjson_1_1_basic_o_stream_wrapper.html#ae4e99bf009dd43c7e760eebae4e732ac", null ],
[ "PutBegin", "classrapidjson_1_1_basic_o_stream_wrapper.html#a0d9c9c5d11e53ea486cf555fb43d6fe2", null ],
[ "PutEnd", "classrapidjson_1_1_basic_o_stream_wrapper.html#a8e1c33024d08945a32b85aeba87dca82", null ],
[ "Take", "classrapidjson_1_1_basic_o_stream_wrapper.html#a4ea92ceb4c1fae9cdd1912f2ab07dd73", null ],
- [ "Tell", "classrapidjson_1_1_basic_o_stream_wrapper.html#a41654718c87b0db23c17a14d52852b74", null ]
+ [ "Tell", "classrapidjson_1_1_basic_o_stream_wrapper.html#a6bf51fa9e5692dceaf98b0cceba3f7e2", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_crt_allocator-members.html b/zh-cn/classrapidjson_1_1_crt_allocator-members.html
index 04c17dda..8bbf1019 100644
--- a/zh-cn/classrapidjson_1_1_crt_allocator-members.html
+++ b/zh-cn/classrapidjson_1_1_crt_allocator-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_crt_allocator.html'
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/classrapidjson_1_1_crt_allocator.html b/zh-cn/classrapidjson_1_1_crt_allocator.html
index f9ba2faf..f3a8de3f 100644
--- a/zh-cn/classrapidjson_1_1_crt_allocator.html
+++ b/zh-cn/classrapidjson_1_1_crt_allocator.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::CrtAllocator类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_crt_allocator.html'
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -93,22 +94,22 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_crt_allocator.html'
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:aa3dab0aa1b00fc5b6e6cf29708e6667f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3dab0aa1b00fc5b6e6cf29708e6667f"></a>
+<tr class="memitem:aa3dab0aa1b00fc5b6e6cf29708e6667f"><td class="memItemLeft" align="right" valign="top"><a id="aa3dab0aa1b00fc5b6e6cf29708e6667f"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><b>Malloc</b> (size_t size)</td></tr>
<tr class="separator:aa3dab0aa1b00fc5b6e6cf29708e6667f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5378ce42f3fe244f8826d85757271ed0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5378ce42f3fe244f8826d85757271ed0"></a>
+<tr class="memitem:a5378ce42f3fe244f8826d85757271ed0"><td class="memItemLeft" align="right" valign="top"><a id="a5378ce42f3fe244f8826d85757271ed0"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><b>Realloc</b> (void *originalPtr, size_t originalSize, size_t newSize)</td></tr>
<tr class="separator:a5378ce42f3fe244f8826d85757271ed0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
-<tr class="memitem:aae4f8a67d7815485fa70b0094e8dbc19"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aae4f8a67d7815485fa70b0094e8dbc19"></a>
+<tr class="memitem:aae4f8a67d7815485fa70b0094e8dbc19"><td class="memItemLeft" align="right" valign="top"><a id="aae4f8a67d7815485fa70b0094e8dbc19"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>Free</b> (void *ptr)</td></tr>
<tr class="separator:aae4f8a67d7815485fa70b0094e8dbc19"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
静态 Public 属性</h2></td></tr>
-<tr class="memitem:a86a87b7d63be73268c333a7f70f21d24"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a86a87b7d63be73268c333a7f70f21d24"></a>
+<tr class="memitem:a86a87b7d63be73268c333a7f70f21d24"><td class="memItemLeft" align="right" valign="top"><a id="a86a87b7d63be73268c333a7f70f21d24"></a>
static const bool&#160;</td><td class="memItemRight" valign="bottom"><b>kNeedFree</b> = true</td></tr>
<tr class="separator:a86a87b7d63be73268c333a7f70f21d24"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
diff --git a/zh-cn/classrapidjson_1_1_encoded_input_stream-members.html b/zh-cn/classrapidjson_1_1_encoded_input_stream-members.html
index 2d2ad4ba..d69d124f 100644
--- a/zh-cn/classrapidjson_1_1_encoded_input_stream-members.html
+++ b/zh-cn/classrapidjson_1_1_encoded_input_stream-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_encoded_input_strea
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -86,12 +87,12 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_encoded_input_strea
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Ch</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>EncodedInputStream</b>(InputByteStream &amp;is) (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Flush</b>() (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Put</b>(Ch) (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>PutBegin</b>() (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PutEnd</b>(Ch *) (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Take</b>() (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/classrapidjson_1_1_encoded_input_stream.html b/zh-cn/classrapidjson_1_1_encoded_input_stream.html
index fc131bc4..35bdf8af 100644
--- a/zh-cn/classrapidjson_1_1_encoded_input_stream.html
+++ b/zh-cn/classrapidjson_1_1_encoded_input_stream.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::EncodedInputStream&lt; Encoding, InputByteStream &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_encoded_input_strea
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,34 +93,34 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_encoded_input_strea
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:ac1cf99de822b615beaa5e33ac989a20a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1cf99de822b615beaa5e33ac989a20a"></a>
+<tr class="memitem:ac1cf99de822b615beaa5e33ac989a20a"><td class="memItemLeft" align="right" valign="top"><a id="ac1cf99de822b615beaa5e33ac989a20a"></a>
typedef Encoding::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:ac1cf99de822b615beaa5e33ac989a20a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:a0eec878bbb78d4e672212931dd566eb3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0eec878bbb78d4e672212931dd566eb3"></a>
+<tr class="memitem:a0eec878bbb78d4e672212931dd566eb3"><td class="memItemLeft" align="right" valign="top"><a id="a0eec878bbb78d4e672212931dd566eb3"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>EncodedInputStream</b> (InputByteStream &amp;is)</td></tr>
<tr class="separator:a0eec878bbb78d4e672212931dd566eb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6165120ca88b62a1839dde0566b52828"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6165120ca88b62a1839dde0566b52828"></a>
-Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const </td></tr>
-<tr class="separator:a6165120ca88b62a1839dde0566b52828"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6182dbfa7cf1c5f29e1cc0e9b575c95e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6182dbfa7cf1c5f29e1cc0e9b575c95e"></a>
+<tr class="memitem:a120a6eb51f4e96dc164ffa70659b34f7"><td class="memItemLeft" align="right" valign="top"><a id="a120a6eb51f4e96dc164ffa70659b34f7"></a>
+Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const</td></tr>
+<tr class="separator:a120a6eb51f4e96dc164ffa70659b34f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6182dbfa7cf1c5f29e1cc0e9b575c95e"><td class="memItemLeft" align="right" valign="top"><a id="a6182dbfa7cf1c5f29e1cc0e9b575c95e"></a>
Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Take</b> ()</td></tr>
<tr class="separator:a6182dbfa7cf1c5f29e1cc0e9b575c95e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab2e25998df6a33f8cae7f70cfef9297a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab2e25998df6a33f8cae7f70cfef9297a"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const </td></tr>
-<tr class="separator:ab2e25998df6a33f8cae7f70cfef9297a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a518de4fc2f2da0d55005d6334a93a704"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a518de4fc2f2da0d55005d6334a93a704"></a>
+<tr class="memitem:a6142e8348c47443eddce35bf7203ca29"><td class="memItemLeft" align="right" valign="top"><a id="a6142e8348c47443eddce35bf7203ca29"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const</td></tr>
+<tr class="separator:a6142e8348c47443eddce35bf7203ca29"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a518de4fc2f2da0d55005d6334a93a704"><td class="memItemLeft" align="right" valign="top"><a id="a518de4fc2f2da0d55005d6334a93a704"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Put</b> (Ch)</td></tr>
<tr class="separator:a518de4fc2f2da0d55005d6334a93a704"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a56f9a8c6636976e173f41f88f0028dbb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56f9a8c6636976e173f41f88f0028dbb"></a>
+<tr class="memitem:a56f9a8c6636976e173f41f88f0028dbb"><td class="memItemLeft" align="right" valign="top"><a id="a56f9a8c6636976e173f41f88f0028dbb"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Flush</b> ()</td></tr>
<tr class="separator:a56f9a8c6636976e173f41f88f0028dbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a65d027f1323e1f615b5893c3625cacd0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65d027f1323e1f615b5893c3625cacd0"></a>
+<tr class="memitem:a65d027f1323e1f615b5893c3625cacd0"><td class="memItemLeft" align="right" valign="top"><a id="a65d027f1323e1f615b5893c3625cacd0"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>PutBegin</b> ()</td></tr>
<tr class="separator:a65d027f1323e1f615b5893c3625cacd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4caab7f136c784d2d47539bedb106b35"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4caab7f136c784d2d47539bedb106b35"></a>
+<tr class="memitem:a4caab7f136c784d2d47539bedb106b35"><td class="memItemLeft" align="right" valign="top"><a id="a4caab7f136c784d2d47539bedb106b35"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>PutEnd</b> (Ch *)</td></tr>
<tr class="separator:a4caab7f136c784d2d47539bedb106b35"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
diff --git a/zh-cn/classrapidjson_1_1_encoded_input_stream.js b/zh-cn/classrapidjson_1_1_encoded_input_stream.js
index b92211ca..ae28b96d 100644
--- a/zh-cn/classrapidjson_1_1_encoded_input_stream.js
+++ b/zh-cn/classrapidjson_1_1_encoded_input_stream.js
@@ -3,10 +3,10 @@ var classrapidjson_1_1_encoded_input_stream =
[ "Ch", "classrapidjson_1_1_encoded_input_stream.html#ac1cf99de822b615beaa5e33ac989a20a", null ],
[ "EncodedInputStream", "classrapidjson_1_1_encoded_input_stream.html#a0eec878bbb78d4e672212931dd566eb3", null ],
[ "Flush", "classrapidjson_1_1_encoded_input_stream.html#a56f9a8c6636976e173f41f88f0028dbb", null ],
- [ "Peek", "classrapidjson_1_1_encoded_input_stream.html#a6165120ca88b62a1839dde0566b52828", null ],
+ [ "Peek", "classrapidjson_1_1_encoded_input_stream.html#a120a6eb51f4e96dc164ffa70659b34f7", null ],
[ "Put", "classrapidjson_1_1_encoded_input_stream.html#a518de4fc2f2da0d55005d6334a93a704", null ],
[ "PutBegin", "classrapidjson_1_1_encoded_input_stream.html#a65d027f1323e1f615b5893c3625cacd0", null ],
[ "PutEnd", "classrapidjson_1_1_encoded_input_stream.html#a4caab7f136c784d2d47539bedb106b35", null ],
[ "Take", "classrapidjson_1_1_encoded_input_stream.html#a6182dbfa7cf1c5f29e1cc0e9b575c95e", null ],
- [ "Tell", "classrapidjson_1_1_encoded_input_stream.html#ab2e25998df6a33f8cae7f70cfef9297a", null ]
+ [ "Tell", "classrapidjson_1_1_encoded_input_stream.html#a6142e8348c47443eddce35bf7203ca29", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4-members.html b/zh-cn/classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4-members.html
index 6cd6c78a..0dd66082 100644
--- a/zh-cn/classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4-members.html
+++ b/zh-cn/classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_encoded_input_strea
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -87,12 +88,12 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_encoded_input_strea
<tr bgcolor="#f0f0f0"><td class="entry"><b>EncodedInputStream</b>(MemoryStream &amp;is) (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Flush</b>() (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>is_</b> (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Put</b>(Ch) (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PutBegin</b>() (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>PutEnd</b>(Ch *) (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Take</b>() (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html b/zh-cn/classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html
index 2fa562ca..242a325d 100644
--- a/zh-cn/classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html
+++ b/zh-cn/classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_encoded_input_strea
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -93,40 +94,40 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_encoded_input_strea
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a907f1851cfe76ae1c3eb9e2074bfa507"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a907f1851cfe76ae1c3eb9e2074bfa507"></a>
-typedef UTF8::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
+<tr class="memitem:a907f1851cfe76ae1c3eb9e2074bfa507"><td class="memItemLeft" align="right" valign="top"><a id="a907f1851cfe76ae1c3eb9e2074bfa507"></a>
+typedef <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a> ::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a907f1851cfe76ae1c3eb9e2074bfa507"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:a40adb7c5a368025230a6e0d682f255b6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a40adb7c5a368025230a6e0d682f255b6"></a>
+<tr class="memitem:a40adb7c5a368025230a6e0d682f255b6"><td class="memItemLeft" align="right" valign="top"><a id="a40adb7c5a368025230a6e0d682f255b6"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>EncodedInputStream</b> (<a class="el" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a> &amp;is)</td></tr>
<tr class="separator:a40adb7c5a368025230a6e0d682f255b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adad05fb88d8e3d62fcb0fdd077906753"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adad05fb88d8e3d62fcb0fdd077906753"></a>
-Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const </td></tr>
-<tr class="separator:adad05fb88d8e3d62fcb0fdd077906753"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae9ca9ba461ddaabcc5c82c54bc55bd12"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9ca9ba461ddaabcc5c82c54bc55bd12"></a>
+<tr class="memitem:a4fc3d22ee4c1516066883546c1462c70"><td class="memItemLeft" align="right" valign="top"><a id="a4fc3d22ee4c1516066883546c1462c70"></a>
+Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const</td></tr>
+<tr class="separator:a4fc3d22ee4c1516066883546c1462c70"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae9ca9ba461ddaabcc5c82c54bc55bd12"><td class="memItemLeft" align="right" valign="top"><a id="ae9ca9ba461ddaabcc5c82c54bc55bd12"></a>
Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Take</b> ()</td></tr>
<tr class="separator:ae9ca9ba461ddaabcc5c82c54bc55bd12"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a39fccd84f5f5e421e04d7ca9124ccc5f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39fccd84f5f5e421e04d7ca9124ccc5f"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const </td></tr>
-<tr class="separator:a39fccd84f5f5e421e04d7ca9124ccc5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a69362a93cd4e1ae73beea86848a70689"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69362a93cd4e1ae73beea86848a70689"></a>
+<tr class="memitem:a290e9bc39e7c717652ab5f3f83d5c273"><td class="memItemLeft" align="right" valign="top"><a id="a290e9bc39e7c717652ab5f3f83d5c273"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const</td></tr>
+<tr class="separator:a290e9bc39e7c717652ab5f3f83d5c273"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a69362a93cd4e1ae73beea86848a70689"><td class="memItemLeft" align="right" valign="top"><a id="a69362a93cd4e1ae73beea86848a70689"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Put</b> (Ch)</td></tr>
<tr class="separator:a69362a93cd4e1ae73beea86848a70689"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a87daa0b45556f4e475f39754ba14815a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a87daa0b45556f4e475f39754ba14815a"></a>
+<tr class="memitem:a87daa0b45556f4e475f39754ba14815a"><td class="memItemLeft" align="right" valign="top"><a id="a87daa0b45556f4e475f39754ba14815a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Flush</b> ()</td></tr>
<tr class="separator:a87daa0b45556f4e475f39754ba14815a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa31436be9421373c4269d065883c2068"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa31436be9421373c4269d065883c2068"></a>
+<tr class="memitem:aa31436be9421373c4269d065883c2068"><td class="memItemLeft" align="right" valign="top"><a id="aa31436be9421373c4269d065883c2068"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>PutBegin</b> ()</td></tr>
<tr class="separator:aa31436be9421373c4269d065883c2068"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a954a2404a0b4419ada15d85f87e857c7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a954a2404a0b4419ada15d85f87e857c7"></a>
+<tr class="memitem:a954a2404a0b4419ada15d85f87e857c7"><td class="memItemLeft" align="right" valign="top"><a id="a954a2404a0b4419ada15d85f87e857c7"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>PutEnd</b> (Ch *)</td></tr>
<tr class="separator:a954a2404a0b4419ada15d85f87e857c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
-<tr class="memitem:ac28dccc556d38360434cc36d4b5e7222"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac28dccc556d38360434cc36d4b5e7222"></a>
+<tr class="memitem:ac28dccc556d38360434cc36d4b5e7222"><td class="memItemLeft" align="right" valign="top"><a id="ac28dccc556d38360434cc36d4b5e7222"></a>
<a class="el" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>is_</b></td></tr>
<tr class="separator:ac28dccc556d38360434cc36d4b5e7222"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@@ -144,7 +145,7 @@ class rapidjson::EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</h3>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="namespacerapidjson.html">rapidjson</a></li><li class="navelem"><a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">EncodedInputStream< UTF8<>, MemoryStream ></a></li>
+ <li class="navelem"><a class="el" href="namespacerapidjson.html">rapidjson</a></li><li class="navelem"><a class="el" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html">EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;</a></li>
</ul>
</div>
</body>
diff --git a/zh-cn/classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.js b/zh-cn/classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.js
index 9591f2b4..9f0dce9d 100644
--- a/zh-cn/classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.js
+++ b/zh-cn/classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.js
@@ -3,11 +3,11 @@ var classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_
[ "Ch", "classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a907f1851cfe76ae1c3eb9e2074bfa507", null ],
[ "EncodedInputStream", "classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a40adb7c5a368025230a6e0d682f255b6", null ],
[ "Flush", "classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a87daa0b45556f4e475f39754ba14815a", null ],
- [ "Peek", "classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#adad05fb88d8e3d62fcb0fdd077906753", null ],
+ [ "Peek", "classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a4fc3d22ee4c1516066883546c1462c70", null ],
[ "Put", "classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a69362a93cd4e1ae73beea86848a70689", null ],
[ "PutBegin", "classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#aa31436be9421373c4269d065883c2068", null ],
[ "PutEnd", "classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a954a2404a0b4419ada15d85f87e857c7", null ],
[ "Take", "classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#ae9ca9ba461ddaabcc5c82c54bc55bd12", null ],
- [ "Tell", "classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a39fccd84f5f5e421e04d7ca9124ccc5f", null ],
+ [ "Tell", "classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a290e9bc39e7c717652ab5f3f83d5c273", null ],
[ "is_", "classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#ac28dccc556d38360434cc36d4b5e7222", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_encoded_output_stream-members.html b/zh-cn/classrapidjson_1_1_encoded_output_stream-members.html
index d3aa2eda..a8fd6f92 100644
--- a/zh-cn/classrapidjson_1_1_encoded_output_stream-members.html
+++ b/zh-cn/classrapidjson_1_1_encoded_output_stream-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_encoded_output_stre
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -86,12 +87,12 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_encoded_output_stre
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Ch</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>EncodedOutputStream</b>(OutputByteStream &amp;os, bool putBOM=true) (定义于 <a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Flush</b>() (定义于 <a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Put</b>(Ch c) (定义于 <a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>PutBegin</b>() (定义于 <a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PutEnd</b>(Ch *) (定义于 <a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Take</b>() (定义于 <a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_encoded_output_stream.html">rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/classrapidjson_1_1_encoded_output_stream.html b/zh-cn/classrapidjson_1_1_encoded_output_stream.html
index 66c4abe1..f9eaa57e 100644
--- a/zh-cn/classrapidjson_1_1_encoded_output_stream.html
+++ b/zh-cn/classrapidjson_1_1_encoded_output_stream.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::EncodedOutputStream&lt; Encoding, OutputByteStream &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_encoded_output_stre
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,34 +93,34 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_encoded_output_stre
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:aa96ac761f570fbdbcc2375ad4edd8b6f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa96ac761f570fbdbcc2375ad4edd8b6f"></a>
+<tr class="memitem:aa96ac761f570fbdbcc2375ad4edd8b6f"><td class="memItemLeft" align="right" valign="top"><a id="aa96ac761f570fbdbcc2375ad4edd8b6f"></a>
typedef Encoding::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:aa96ac761f570fbdbcc2375ad4edd8b6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:a1ac9766d0a88f3913762e51512cc90e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1ac9766d0a88f3913762e51512cc90e1"></a>
+<tr class="memitem:a1ac9766d0a88f3913762e51512cc90e1"><td class="memItemLeft" align="right" valign="top"><a id="a1ac9766d0a88f3913762e51512cc90e1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>EncodedOutputStream</b> (OutputByteStream &amp;os, bool putBOM=true)</td></tr>
<tr class="separator:a1ac9766d0a88f3913762e51512cc90e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afe815c555bae4a46cc0c119b695b9d31"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe815c555bae4a46cc0c119b695b9d31"></a>
+<tr class="memitem:afe815c555bae4a46cc0c119b695b9d31"><td class="memItemLeft" align="right" valign="top"><a id="afe815c555bae4a46cc0c119b695b9d31"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Put</b> (Ch c)</td></tr>
<tr class="separator:afe815c555bae4a46cc0c119b695b9d31"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a725ecc2947f20d49b8dc0baf93929923"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a725ecc2947f20d49b8dc0baf93929923"></a>
+<tr class="memitem:a725ecc2947f20d49b8dc0baf93929923"><td class="memItemLeft" align="right" valign="top"><a id="a725ecc2947f20d49b8dc0baf93929923"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Flush</b> ()</td></tr>
<tr class="separator:a725ecc2947f20d49b8dc0baf93929923"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae63eda01064846ee9d04f1f7f3b29a82"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae63eda01064846ee9d04f1f7f3b29a82"></a>
-Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const </td></tr>
-<tr class="separator:ae63eda01064846ee9d04f1f7f3b29a82"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a27f733fa1ba8b35b4fddd2a569ac4ba1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a27f733fa1ba8b35b4fddd2a569ac4ba1"></a>
+<tr class="memitem:a8f7a07f454334646a679afa49c930e8e"><td class="memItemLeft" align="right" valign="top"><a id="a8f7a07f454334646a679afa49c930e8e"></a>
+Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const</td></tr>
+<tr class="separator:a8f7a07f454334646a679afa49c930e8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a27f733fa1ba8b35b4fddd2a569ac4ba1"><td class="memItemLeft" align="right" valign="top"><a id="a27f733fa1ba8b35b4fddd2a569ac4ba1"></a>
Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Take</b> ()</td></tr>
<tr class="separator:a27f733fa1ba8b35b4fddd2a569ac4ba1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a43030332e4e4e08788ae76bc41e1bab7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a43030332e4e4e08788ae76bc41e1bab7"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const </td></tr>
-<tr class="separator:a43030332e4e4e08788ae76bc41e1bab7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af5d5dbcd275de9c9a565f8e01a9cf559"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af5d5dbcd275de9c9a565f8e01a9cf559"></a>
+<tr class="memitem:accd11ac295fedffb5398546fca7138c2"><td class="memItemLeft" align="right" valign="top"><a id="accd11ac295fedffb5398546fca7138c2"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const</td></tr>
+<tr class="separator:accd11ac295fedffb5398546fca7138c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af5d5dbcd275de9c9a565f8e01a9cf559"><td class="memItemLeft" align="right" valign="top"><a id="af5d5dbcd275de9c9a565f8e01a9cf559"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>PutBegin</b> ()</td></tr>
<tr class="separator:af5d5dbcd275de9c9a565f8e01a9cf559"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6739a8fb953962998438c636ff9f05a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6739a8fb953962998438c636ff9f05a3"></a>
+<tr class="memitem:a6739a8fb953962998438c636ff9f05a3"><td class="memItemLeft" align="right" valign="top"><a id="a6739a8fb953962998438c636ff9f05a3"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>PutEnd</b> (Ch *)</td></tr>
<tr class="separator:a6739a8fb953962998438c636ff9f05a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
diff --git a/zh-cn/classrapidjson_1_1_encoded_output_stream.js b/zh-cn/classrapidjson_1_1_encoded_output_stream.js
index edd3f9ce..82777b28 100644
--- a/zh-cn/classrapidjson_1_1_encoded_output_stream.js
+++ b/zh-cn/classrapidjson_1_1_encoded_output_stream.js
@@ -3,10 +3,10 @@ var classrapidjson_1_1_encoded_output_stream =
[ "Ch", "classrapidjson_1_1_encoded_output_stream.html#aa96ac761f570fbdbcc2375ad4edd8b6f", null ],
[ "EncodedOutputStream", "classrapidjson_1_1_encoded_output_stream.html#a1ac9766d0a88f3913762e51512cc90e1", null ],
[ "Flush", "classrapidjson_1_1_encoded_output_stream.html#a725ecc2947f20d49b8dc0baf93929923", null ],
- [ "Peek", "classrapidjson_1_1_encoded_output_stream.html#ae63eda01064846ee9d04f1f7f3b29a82", null ],
+ [ "Peek", "classrapidjson_1_1_encoded_output_stream.html#a8f7a07f454334646a679afa49c930e8e", null ],
[ "Put", "classrapidjson_1_1_encoded_output_stream.html#afe815c555bae4a46cc0c119b695b9d31", null ],
[ "PutBegin", "classrapidjson_1_1_encoded_output_stream.html#af5d5dbcd275de9c9a565f8e01a9cf559", null ],
[ "PutEnd", "classrapidjson_1_1_encoded_output_stream.html#a6739a8fb953962998438c636ff9f05a3", null ],
[ "Take", "classrapidjson_1_1_encoded_output_stream.html#a27f733fa1ba8b35b4fddd2a569ac4ba1", null ],
- [ "Tell", "classrapidjson_1_1_encoded_output_stream.html#a43030332e4e4e08788ae76bc41e1bab7", null ]
+ [ "Tell", "classrapidjson_1_1_encoded_output_stream.html#accd11ac295fedffb5398546fca7138c2", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_encoding.html b/zh-cn/classrapidjson_1_1_encoding.html
index 96485d22..bc391014 100644
--- a/zh-cn/classrapidjson_1_1_encoding.html
+++ b/zh-cn/classrapidjson_1_1_encoding.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::Encoding类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_encoding.html','');
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -87,51 +88,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_encoding.html','');
<p><code>#include &lt;<a class="el" href="encodings_8h_source.html">encodings.h</a>&gt;</code></p>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p>Concept for encoding of Unicode characters. </p>
-<div class="fragment"><div class="line">concept Encoding {</div>
-<div class="line"> <span class="keyword">typename</span> Ch; <span class="comment">//! Type of character. A &quot;character&quot; is actually a code unit in unicode&#39;s definition.</span></div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"> <span class="keyword">enum</span> { supportUnicode = 1 }; <span class="comment">// or 0 if not supporting unicode</span></div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! \brief Encode a Unicode codepoint to an output stream.</span></div>
-<div class="line"><span class="comment"> //! \param os Output stream.</span></div>
-<div class="line"><span class="comment"> //! \param codepoint An unicode codepoint, ranging from 0x0 to 0x10FFFF inclusively.</span></div>
-<div class="line"><span class="comment"></span> <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"> <span class="keyword">static</span> <span class="keywordtype">void</span> Encode(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint);</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! \brief Decode a Unicode codepoint from an input stream.</span></div>
-<div class="line"><span class="comment"> //! \param is Input stream.</span></div>
-<div class="line"><span class="comment"> //! \param codepoint Output of the unicode codepoint.</span></div>
-<div class="line"><span class="comment"> //! \return true if a valid codepoint can be decoded from the stream.</span></div>
-<div class="line"><span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"> <span class="keyword">static</span> <span class="keywordtype">bool</span> Decode(InputStream&amp; is, <span class="keywordtype">unsigned</span>* codepoint);</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! \brief Validate one Unicode codepoint from an encoded stream.</span></div>
-<div class="line"><span class="comment"> //! \param is Input stream to obtain codepoint.</span></div>
-<div class="line"><span class="comment"> //! \param os Output for copying one codepoint.</span></div>
-<div class="line"><span class="comment"> //! \return true if it is valid.</span></div>
-<div class="line"><span class="comment"> //! \note This function just validating and copying the codepoint without actually decode it.</span></div>
-<div class="line"><span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"> <span class="keyword">static</span> <span class="keywordtype">bool</span> Validate(InputStream&amp; is, OutputStream&amp; os);</div>
-<div class="line"></div>
-<div class="line"> <span class="comment">// The following functions are deal with byte streams.</span></div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! Take a character from input byte stream, skip BOM if exist.</span></div>
-<div class="line"><span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"> <span class="keyword">static</span> CharType TakeBOM(InputByteStream&amp; is);</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! Take a character from input byte stream.</span></div>
-<div class="line"><span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"> <span class="keyword">static</span> Ch Take(InputByteStream&amp; is);</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! Put BOM to output byte stream.</span></div>
-<div class="line"><span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"> <span class="keyword">static</span> <span class="keywordtype">void</span> PutBOM(OutputByteStream&amp; os);</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! Put a character to output byte stream.</span></div>
-<div class="line"><span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"> <span class="keyword">static</span> <span class="keywordtype">void</span> Put(OutputByteStream&amp; os, Ch c);</div>
-<div class="line">};</div>
-</div><!-- fragment --> </div><hr/>该类的文档由以下文件生成:<ul>
+<div class="fragment"><div class="line">concept Encoding {</div><div class="line"> <span class="keyword">typename</span> Ch; <span class="comment">//! Type of character. A &quot;character&quot; is actually a code unit in unicode&#39;s definition.</span></div><div class="line"><span class="comment"></span></div><div class="line"> <span class="keyword">enum</span> { supportUnicode = 1 }; <span class="comment">// or 0 if not supporting unicode</span></div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! \brief Encode a Unicode codepoint to an output stream.</span></div><div class="line"><span class="comment"> //! \param os Output stream.</span></div><div class="line"><span class="comment"> //! \param codepoint An unicode codepoint, ranging from 0x0 to 0x10FFFF inclusively.</span></div><div class="line"><span class="comment"></span> <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div><div class="line"> <span class="keyword">static</span> <span class="keywordtype">void</span> Encode(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint);</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! \brief Decode a Unicode codepoint from an input stream.</span></div><div class="line"><span class="comment"> //! \param is Input stream.</span></div><div class="line"><span class="comment"> //! \param codepoint Output of the unicode codepoint.</span></div><div class="line"><span class="comment"> //! \return true if a valid codepoint can be decoded from the stream.</span></div><div class="line"><span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"> <span class="keyword">static</span> <span class="keywordtype">bool</span> Decode(InputStream&amp; is, <span class="keywordtype">unsigned</span>* codepoint);</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! \brief Validate one Unicode codepoint from an encoded stream.</span></div><div class="line"><span class="comment"> //! \param is Input stream to obtain codepoint.</span></div><div class="line"><span class="comment"> //! \param os Output for copying one codepoint.</span></div><div class="line"><span class="comment"> //! \return true if it is valid.</span></div><div class="line"><span class="comment"> //! \note This function just validating and copying the codepoint without actually decode it.</span></div><div class="line"><span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div><div class="line"> <span class="keyword">static</span> <span class="keywordtype">bool</span> Validate(InputStream&amp; is, OutputStream&amp; os);</div><div class="line"></div><div class="line"> <span class="comment">// The following functions are deal with byte streams.</span></div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! Take a character from input byte stream, skip BOM if exist.</span></div><div class="line"><span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"> <span class="keyword">static</span> CharType TakeBOM(InputByteStream&amp; is);</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! Take a character from input byte stream.</span></div><div class="line"><span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"> <span class="keyword">static</span> Ch Take(InputByteStream&amp; is);</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! Put BOM to output byte stream.</span></div><div class="line"><span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"> <span class="keyword">static</span> <span class="keywordtype">void</span> PutBOM(OutputByteStream&amp; os);</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! Put a character to output byte stream.</span></div><div class="line"><span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"> <span class="keyword">static</span> <span class="keywordtype">void</span> Put(OutputByteStream&amp; os, Ch c);</div><div class="line">};</div></div><!-- fragment --> </div><hr/>该类的文档由以下文件生成:<ul>
<li>include/rapidjson/<a class="el" href="encodings_8h_source.html">encodings.h</a></li>
</ul>
</div><!-- contents -->
diff --git a/zh-cn/classrapidjson_1_1_file_read_stream-members.html b/zh-cn/classrapidjson_1_1_file_read_stream-members.html
index f5d70224..d5ca43ff 100644
--- a/zh-cn/classrapidjson_1_1_file_read_stream-members.html
+++ b/zh-cn/classrapidjson_1_1_file_read_stream-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_file_read_stream.ht
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -86,13 +87,13 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_file_read_stream.ht
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929">Ch</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_file_read_stream.html#a72b610ada5d86e8977a2bc1f2f4c0808">FileReadStream</a>(std::FILE *fp, char *buffer, size_t bufferSize)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Flush</b>() (定义于 <a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Peek4</b>() const (定义于 <a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Peek4</b>() const (定义于 <a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Put</b>(Ch) (定义于 <a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PutBegin</b>() (定义于 <a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>PutEnd</b>(Ch *) (定义于 <a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Take</b>() (定义于 <a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/classrapidjson_1_1_file_read_stream.html b/zh-cn/classrapidjson_1_1_file_read_stream.html
index 2f9b1852..5bd31e7a 100644
--- a/zh-cn/classrapidjson_1_1_file_read_stream.html
+++ b/zh-cn/classrapidjson_1_1_file_read_stream.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::FileReadStream类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_file_read_stream.ht
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,7 +93,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_file_read_stream.ht
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a4a5f34875b40d22def206c9a09ecd929"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a5f34875b40d22def206c9a09ecd929"></a>
+<tr class="memitem:a4a5f34875b40d22def206c9a09ecd929"><td class="memItemLeft" align="right" valign="top"><a id="a4a5f34875b40d22def206c9a09ecd929"></a>
typedef char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929">Ch</a></td></tr>
<tr class="memdesc:a4a5f34875b40d22def206c9a09ecd929"><td class="mdescLeft">&#160;</td><td class="mdescRight">Character type (byte). <br /></td></tr>
<tr class="separator:a4a5f34875b40d22def206c9a09ecd929"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -102,36 +103,38 @@ Public 成员函数</h2></td></tr>
<tr class="memitem:a72b610ada5d86e8977a2bc1f2f4c0808"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_file_read_stream.html#a72b610ada5d86e8977a2bc1f2f4c0808">FileReadStream</a> (std::FILE *fp, char *buffer, size_t bufferSize)</td></tr>
<tr class="memdesc:a72b610ada5d86e8977a2bc1f2f4c0808"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="#a72b610ada5d86e8977a2bc1f2f4c0808">更多...</a><br /></td></tr>
<tr class="separator:a72b610ada5d86e8977a2bc1f2f4c0808"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acd66b37d543e380c1a0b439210762b7b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd66b37d543e380c1a0b439210762b7b"></a>
-<a class="el" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929">Ch</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const </td></tr>
-<tr class="separator:acd66b37d543e380c1a0b439210762b7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a96ccdf2feca81ad57ccfd489ffeaf84b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96ccdf2feca81ad57ccfd489ffeaf84b"></a>
+<tr class="memitem:ac1ae71d3abf9de0da0fcd02f4a4a91e1"><td class="memItemLeft" align="right" valign="top"><a id="ac1ae71d3abf9de0da0fcd02f4a4a91e1"></a>
+<a class="el" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929">Ch</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const</td></tr>
+<tr class="separator:ac1ae71d3abf9de0da0fcd02f4a4a91e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a96ccdf2feca81ad57ccfd489ffeaf84b"><td class="memItemLeft" align="right" valign="top"><a id="a96ccdf2feca81ad57ccfd489ffeaf84b"></a>
<a class="el" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929">Ch</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Take</b> ()</td></tr>
<tr class="separator:a96ccdf2feca81ad57ccfd489ffeaf84b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4906a871babb1f99ab583cf1c20dfc8d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4906a871babb1f99ab583cf1c20dfc8d"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const </td></tr>
-<tr class="separator:a4906a871babb1f99ab583cf1c20dfc8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a581c9287a3d0df4db997276be40c1d29"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a581c9287a3d0df4db997276be40c1d29"></a>
+<tr class="memitem:a100ae611dab44b2533e3a13d409c8234"><td class="memItemLeft" align="right" valign="top"><a id="a100ae611dab44b2533e3a13d409c8234"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const</td></tr>
+<tr class="separator:a100ae611dab44b2533e3a13d409c8234"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a581c9287a3d0df4db997276be40c1d29"><td class="memItemLeft" align="right" valign="top"><a id="a581c9287a3d0df4db997276be40c1d29"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Put</b> (<a class="el" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929">Ch</a>)</td></tr>
<tr class="separator:a581c9287a3d0df4db997276be40c1d29"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1b3ae0fe7ad88d8c9c1fac7854d1d7ec"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b3ae0fe7ad88d8c9c1fac7854d1d7ec"></a>
+<tr class="memitem:a1b3ae0fe7ad88d8c9c1fac7854d1d7ec"><td class="memItemLeft" align="right" valign="top"><a id="a1b3ae0fe7ad88d8c9c1fac7854d1d7ec"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Flush</b> ()</td></tr>
<tr class="separator:a1b3ae0fe7ad88d8c9c1fac7854d1d7ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5230a74fccebd3bc41f5e455e3cf7777"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5230a74fccebd3bc41f5e455e3cf7777"></a>
+<tr class="memitem:a5230a74fccebd3bc41f5e455e3cf7777"><td class="memItemLeft" align="right" valign="top"><a id="a5230a74fccebd3bc41f5e455e3cf7777"></a>
<a class="el" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929">Ch</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>PutBegin</b> ()</td></tr>
<tr class="separator:a5230a74fccebd3bc41f5e455e3cf7777"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3160ea8b9906840ef690a07784b97acf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3160ea8b9906840ef690a07784b97acf"></a>
+<tr class="memitem:a3160ea8b9906840ef690a07784b97acf"><td class="memItemLeft" align="right" valign="top"><a id="a3160ea8b9906840ef690a07784b97acf"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>PutEnd</b> (<a class="el" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929">Ch</a> *)</td></tr>
<tr class="separator:a3160ea8b9906840ef690a07784b97acf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae40bad01efd692ce99ef08031a9a1b4b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae40bad01efd692ce99ef08031a9a1b4b"></a>
-const <a class="el" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929">Ch</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>Peek4</b> () const </td></tr>
-<tr class="separator:ae40bad01efd692ce99ef08031a9a1b4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a905873a05053d1415f73c5c05c732b32"><td class="memItemLeft" align="right" valign="top"><a id="a905873a05053d1415f73c5c05c732b32"></a>
+const <a class="el" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929">Ch</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>Peek4</b> () const</td></tr>
+<tr class="separator:a905873a05053d1415f73c5c05c732b32"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p>File byte stream for input using fread(). </p>
<dl class="section note"><dt>注解</dt><dd>implements <a class="el" href="classrapidjson_1_1_stream.html" title="Concept for reading and writing characters. ">Stream</a> concept </dd></dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
-<a class="anchor" id="a72b610ada5d86e8977a2bc1f2f4c0808"></a>
+<a id="a72b610ada5d86e8977a2bc1f2f4c0808"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a72b610ada5d86e8977a2bc1f2f4c0808">&#9670;&nbsp;</a></span>FileReadStream()</h2>
+
<div class="memitem">
<div class="memproto">
<table class="mlabels">
diff --git a/zh-cn/classrapidjson_1_1_file_read_stream.js b/zh-cn/classrapidjson_1_1_file_read_stream.js
index f59916ac..24d24216 100644
--- a/zh-cn/classrapidjson_1_1_file_read_stream.js
+++ b/zh-cn/classrapidjson_1_1_file_read_stream.js
@@ -3,11 +3,11 @@ var classrapidjson_1_1_file_read_stream =
[ "Ch", "classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929", null ],
[ "FileReadStream", "classrapidjson_1_1_file_read_stream.html#a72b610ada5d86e8977a2bc1f2f4c0808", null ],
[ "Flush", "classrapidjson_1_1_file_read_stream.html#a1b3ae0fe7ad88d8c9c1fac7854d1d7ec", null ],
- [ "Peek", "classrapidjson_1_1_file_read_stream.html#acd66b37d543e380c1a0b439210762b7b", null ],
- [ "Peek4", "classrapidjson_1_1_file_read_stream.html#ae40bad01efd692ce99ef08031a9a1b4b", null ],
+ [ "Peek", "classrapidjson_1_1_file_read_stream.html#ac1ae71d3abf9de0da0fcd02f4a4a91e1", null ],
+ [ "Peek4", "classrapidjson_1_1_file_read_stream.html#a905873a05053d1415f73c5c05c732b32", null ],
[ "Put", "classrapidjson_1_1_file_read_stream.html#a581c9287a3d0df4db997276be40c1d29", null ],
[ "PutBegin", "classrapidjson_1_1_file_read_stream.html#a5230a74fccebd3bc41f5e455e3cf7777", null ],
[ "PutEnd", "classrapidjson_1_1_file_read_stream.html#a3160ea8b9906840ef690a07784b97acf", null ],
[ "Take", "classrapidjson_1_1_file_read_stream.html#a96ccdf2feca81ad57ccfd489ffeaf84b", null ],
- [ "Tell", "classrapidjson_1_1_file_read_stream.html#a4906a871babb1f99ab583cf1c20dfc8d", null ]
+ [ "Tell", "classrapidjson_1_1_file_read_stream.html#a100ae611dab44b2533e3a13d409c8234", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_file_write_stream-members.html b/zh-cn/classrapidjson_1_1_file_write_stream-members.html
index a00fec22..2b8c603f 100644
--- a/zh-cn/classrapidjson_1_1_file_write_stream-members.html
+++ b/zh-cn/classrapidjson_1_1_file_write_stream-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_file_write_stream.h
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -86,13 +87,13 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_file_write_stream.h
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_file_write_stream.html#afc606cc81f6c3709d81bf99b30566330">Ch</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>FileWriteStream</b>(std::FILE *fp, char *buffer, size_t bufferSize) (定义于 <a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Flush</b>() (定义于 <a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Put</b>(char c) (定义于 <a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>PutBegin</b>() (定义于 <a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PutEnd</b>(char *) (定义于 <a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>PutN</b>(char c, size_t n) (定义于 <a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Take</b>() (定义于 <a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/classrapidjson_1_1_file_write_stream.html b/zh-cn/classrapidjson_1_1_file_write_stream.html
index f5790c68..fc441745 100644
--- a/zh-cn/classrapidjson_1_1_file_write_stream.html
+++ b/zh-cn/classrapidjson_1_1_file_write_stream.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::FileWriteStream类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_file_write_stream.h
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,38 +93,38 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_file_write_stream.h
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:afc606cc81f6c3709d81bf99b30566330"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afc606cc81f6c3709d81bf99b30566330"></a>
+<tr class="memitem:afc606cc81f6c3709d81bf99b30566330"><td class="memItemLeft" align="right" valign="top"><a id="afc606cc81f6c3709d81bf99b30566330"></a>
typedef char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_file_write_stream.html#afc606cc81f6c3709d81bf99b30566330">Ch</a></td></tr>
<tr class="memdesc:afc606cc81f6c3709d81bf99b30566330"><td class="mdescLeft">&#160;</td><td class="mdescRight">Character type. Only support char. <br /></td></tr>
<tr class="separator:afc606cc81f6c3709d81bf99b30566330"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:a9abf2078f78a30c7ad868f480e4221be"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9abf2078f78a30c7ad868f480e4221be"></a>
+<tr class="memitem:a9abf2078f78a30c7ad868f480e4221be"><td class="memItemLeft" align="right" valign="top"><a id="a9abf2078f78a30c7ad868f480e4221be"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>FileWriteStream</b> (std::FILE *fp, char *buffer, size_t bufferSize)</td></tr>
<tr class="separator:a9abf2078f78a30c7ad868f480e4221be"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5a3b2b270c90f4672400d36a4f056fbc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a3b2b270c90f4672400d36a4f056fbc"></a>
+<tr class="memitem:a5a3b2b270c90f4672400d36a4f056fbc"><td class="memItemLeft" align="right" valign="top"><a id="a5a3b2b270c90f4672400d36a4f056fbc"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Put</b> (char c)</td></tr>
<tr class="separator:a5a3b2b270c90f4672400d36a4f056fbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6e66d814422fd311a908cf2145535b99"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6e66d814422fd311a908cf2145535b99"></a>
+<tr class="memitem:a6e66d814422fd311a908cf2145535b99"><td class="memItemLeft" align="right" valign="top"><a id="a6e66d814422fd311a908cf2145535b99"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>PutN</b> (char c, size_t n)</td></tr>
<tr class="separator:a6e66d814422fd311a908cf2145535b99"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad21fb3d1318a91a1d32ce971378981e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad21fb3d1318a91a1d32ce971378981e1"></a>
+<tr class="memitem:ad21fb3d1318a91a1d32ce971378981e1"><td class="memItemLeft" align="right" valign="top"><a id="ad21fb3d1318a91a1d32ce971378981e1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Flush</b> ()</td></tr>
<tr class="separator:ad21fb3d1318a91a1d32ce971378981e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa29c9e8cf63110d93ff7efd3c9878ff5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa29c9e8cf63110d93ff7efd3c9878ff5"></a>
-char&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const </td></tr>
-<tr class="separator:aa29c9e8cf63110d93ff7efd3c9878ff5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6b3d198633b02a7d016b8833b4615b33"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6b3d198633b02a7d016b8833b4615b33"></a>
+<tr class="memitem:a8a9816245140dac55d66c24d5f21e231"><td class="memItemLeft" align="right" valign="top"><a id="a8a9816245140dac55d66c24d5f21e231"></a>
+char&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const</td></tr>
+<tr class="separator:a8a9816245140dac55d66c24d5f21e231"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6b3d198633b02a7d016b8833b4615b33"><td class="memItemLeft" align="right" valign="top"><a id="a6b3d198633b02a7d016b8833b4615b33"></a>
char&#160;</td><td class="memItemRight" valign="bottom"><b>Take</b> ()</td></tr>
<tr class="separator:a6b3d198633b02a7d016b8833b4615b33"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac98579a05c02fb64eee509860bc9b989"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac98579a05c02fb64eee509860bc9b989"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const </td></tr>
-<tr class="separator:ac98579a05c02fb64eee509860bc9b989"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a330ab2dff49aca7015f92e699a675f11"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a330ab2dff49aca7015f92e699a675f11"></a>
+<tr class="memitem:ab57d1149f396b095b1eab2154974983d"><td class="memItemLeft" align="right" valign="top"><a id="ab57d1149f396b095b1eab2154974983d"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const</td></tr>
+<tr class="separator:ab57d1149f396b095b1eab2154974983d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a330ab2dff49aca7015f92e699a675f11"><td class="memItemLeft" align="right" valign="top"><a id="a330ab2dff49aca7015f92e699a675f11"></a>
char *&#160;</td><td class="memItemRight" valign="bottom"><b>PutBegin</b> ()</td></tr>
<tr class="separator:a330ab2dff49aca7015f92e699a675f11"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac755d1f640dc82a2359b2867ce09ac0c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac755d1f640dc82a2359b2867ce09ac0c"></a>
+<tr class="memitem:ac755d1f640dc82a2359b2867ce09ac0c"><td class="memItemLeft" align="right" valign="top"><a id="ac755d1f640dc82a2359b2867ce09ac0c"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>PutEnd</b> (char *)</td></tr>
<tr class="separator:ac755d1f640dc82a2359b2867ce09ac0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
diff --git a/zh-cn/classrapidjson_1_1_file_write_stream.js b/zh-cn/classrapidjson_1_1_file_write_stream.js
index ff39f0a3..224e0a99 100644
--- a/zh-cn/classrapidjson_1_1_file_write_stream.js
+++ b/zh-cn/classrapidjson_1_1_file_write_stream.js
@@ -3,11 +3,11 @@ var classrapidjson_1_1_file_write_stream =
[ "Ch", "classrapidjson_1_1_file_write_stream.html#afc606cc81f6c3709d81bf99b30566330", null ],
[ "FileWriteStream", "classrapidjson_1_1_file_write_stream.html#a9abf2078f78a30c7ad868f480e4221be", null ],
[ "Flush", "classrapidjson_1_1_file_write_stream.html#ad21fb3d1318a91a1d32ce971378981e1", null ],
- [ "Peek", "classrapidjson_1_1_file_write_stream.html#aa29c9e8cf63110d93ff7efd3c9878ff5", null ],
+ [ "Peek", "classrapidjson_1_1_file_write_stream.html#a8a9816245140dac55d66c24d5f21e231", null ],
[ "Put", "classrapidjson_1_1_file_write_stream.html#a5a3b2b270c90f4672400d36a4f056fbc", null ],
[ "PutBegin", "classrapidjson_1_1_file_write_stream.html#a330ab2dff49aca7015f92e699a675f11", null ],
[ "PutEnd", "classrapidjson_1_1_file_write_stream.html#ac755d1f640dc82a2359b2867ce09ac0c", null ],
[ "PutN", "classrapidjson_1_1_file_write_stream.html#a6e66d814422fd311a908cf2145535b99", null ],
[ "Take", "classrapidjson_1_1_file_write_stream.html#a6b3d198633b02a7d016b8833b4615b33", null ],
- [ "Tell", "classrapidjson_1_1_file_write_stream.html#ac98579a05c02fb64eee509860bc9b989", null ]
+ [ "Tell", "classrapidjson_1_1_file_write_stream.html#ab57d1149f396b095b1eab2154974983d", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_generic_array-members.html b/zh-cn/classrapidjson_1_1_generic_array-members.html
index 2e009133..1f23dcb4 100644
--- a/zh-cn/classrapidjson_1_1_generic_array-members.html
+++ b/zh-cn/classrapidjson_1_1_generic_array-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_array.html'
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -77,38 +78,38 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_array.html'
<div class="header">
<div class="headertitle">
-<div class="title">rapidjson::GenericArray&lt; bool, typename &gt; 成员列表</div> </div>
+<div class="title">rapidjson::GenericArray&lt; Const, ValueT &gt; 成员列表</div> </div>
</div><!--header-->
<div class="contents">
-<p>成员的完整列表,这些成员属于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>,包括所有继承而来的类成员</p>
+<p>成员的完整列表,这些成员属于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>,包括所有继承而来的类成员</p>
<table class="directory">
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AllocatorType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Array</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Begin</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Capacity</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Clear</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>ConstArray</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ConstValueIterator</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Empty</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>End</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Erase</b>(ConstValueIterator pos) const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Erase</b>(ConstValueIterator first, ConstValueIterator last) const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GenericArray</b>(const GenericArray &amp;rhs) (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GenericValue</b> (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const GenericArray &amp;rhs) (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(SizeType index) const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>PlainType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PopBack</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>PushBack</b>(ValueType &amp;value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PushBack</b>(StringRefType value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>PushBack</b>(T value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Reserve</b>(SizeType newCapacity, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Size</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>StringRefType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>ValueIterator</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ValueType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>~GenericArray</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AllocatorType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Array</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Begin</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Capacity</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Clear</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>ConstArray</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ConstValueIterator</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Empty</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>End</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Erase</b>(ConstValueIterator pos) const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Erase</b>(ConstValueIterator first, ConstValueIterator last) const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GenericArray</b>(const GenericArray &amp;rhs) (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GenericValue</b> (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const GenericArray &amp;rhs) (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(SizeType index) const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>PlainType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PopBack</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>PushBack</b>(ValueType &amp;value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PushBack</b>(StringRefType value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>PushBack</b>(T value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Reserve</b>(SizeType newCapacity, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Size</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>StringRefType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>ValueIterator</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ValueType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>~GenericArray</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/classrapidjson_1_1_generic_array.html b/zh-cn/classrapidjson_1_1_generic_array.html
index ef55f3eb..c8e22dd4 100644
--- a/zh-cn/classrapidjson_1_1_generic_array.html
+++ b/zh-cn/classrapidjson_1_1_generic_array.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
-<title>RapidJSON: rapidjson::GenericArray&lt; bool, typename &gt; 模板类 参考</title>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<title>RapidJSON: rapidjson::GenericArray&lt; Const, ValueT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_array.html'
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -82,7 +83,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_array.html'
<a href="#friends">友元</a> &#124;
<a href="classrapidjson_1_1_generic_array-members.html">所有成员列表</a> </div>
<div class="headertitle">
-<div class="title">rapidjson::GenericArray&lt; bool, typename &gt; 模板类 参考</div> </div>
+<div class="title">rapidjson::GenericArray&lt; Const, ValueT &gt; 模板类 参考</div> </div>
</div><!--header-->
<div class="contents">
@@ -93,97 +94,93 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_array.html'
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a8f15375c676103c3ad0dac92f3d17a90"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8f15375c676103c3ad0dac92f3d17a90"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&lt; true, <br class="typebreak" />
-ValueT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstArray</b></td></tr>
-<tr class="separator:a8f15375c676103c3ad0dac92f3d17a90"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af544f625293fc10256dad72172743ed3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af544f625293fc10256dad72172743ed3"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&lt; false, <br class="typebreak" />
-ValueT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Array</b></td></tr>
-<tr class="separator:af544f625293fc10256dad72172743ed3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a92a199e5417ad39a993e8d1c36b5aa3f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92a199e5417ad39a993e8d1c36b5aa3f"></a>
+<tr class="memitem:a6f2b607cc4e648e5b250dea147843476"><td class="memItemLeft" align="right" valign="top"><a id="a6f2b607cc4e648e5b250dea147843476"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&lt; true, ValueT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstArray</b></td></tr>
+<tr class="separator:a6f2b607cc4e648e5b250dea147843476"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae82a8e56892743f606ae07da8f9a2f5a"><td class="memItemLeft" align="right" valign="top"><a id="ae82a8e56892743f606ae07da8f9a2f5a"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&lt; false, ValueT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Array</b></td></tr>
+<tr class="separator:ae82a8e56892743f606ae07da8f9a2f5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a417eefa7bd2a3d357e947e64044f0bd9"><td class="memItemLeft" align="right" valign="top"><a id="a417eefa7bd2a3d357e947e64044f0bd9"></a>
typedef ValueT&#160;</td><td class="memItemRight" valign="bottom"><b>PlainType</b></td></tr>
-<tr class="separator:a92a199e5417ad39a993e8d1c36b5aa3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a217cd30de86c6088fd4235652f2d2dd1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a217cd30de86c6088fd4235652f2d2dd1"></a>
-typedef <br class="typebreak" />
-internal::MaybeAddConst&lt; Const, <br class="typebreak" />
-PlainType &gt;::<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>&#160;</td><td class="memItemRight" valign="bottom"><b>ValueType</b></td></tr>
-<tr class="separator:a217cd30de86c6088fd4235652f2d2dd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a36ac5aaa10bd2b76bd86818301e553a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a36ac5aaa10bd2b76bd86818301e553a2"></a>
+<tr class="separator:a417eefa7bd2a3d357e947e64044f0bd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aebd828a2f020262b41af908fbb28a571"><td class="memItemLeft" align="right" valign="top"><a id="aebd828a2f020262b41af908fbb28a571"></a>
+typedef internal::MaybeAddConst&lt; Const, PlainType &gt;::<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>&#160;</td><td class="memItemRight" valign="bottom"><b>ValueType</b></td></tr>
+<tr class="separator:aebd828a2f020262b41af908fbb28a571"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae94140e6dbab05cd3918d3e75819dc0a"><td class="memItemLeft" align="right" valign="top"><a id="ae94140e6dbab05cd3918d3e75819dc0a"></a>
typedef ValueType *&#160;</td><td class="memItemRight" valign="bottom"><b>ValueIterator</b></td></tr>
-<tr class="separator:a36ac5aaa10bd2b76bd86818301e553a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3547e50ff64b4cf3c747d8f5e3dae32b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3547e50ff64b4cf3c747d8f5e3dae32b"></a>
+<tr class="separator:ae94140e6dbab05cd3918d3e75819dc0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0308428814ba3ee5094114e2ccfa2572"><td class="memItemLeft" align="right" valign="top"><a id="a0308428814ba3ee5094114e2ccfa2572"></a>
typedef const ValueT *&#160;</td><td class="memItemRight" valign="bottom"><b>ConstValueIterator</b></td></tr>
-<tr class="separator:a3547e50ff64b4cf3c747d8f5e3dae32b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad07fbe50d88d061dbe0c2c794db80a30"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad07fbe50d88d061dbe0c2c794db80a30"></a>
+<tr class="separator:a0308428814ba3ee5094114e2ccfa2572"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a82298d507b2b15c9d909c25a32f5afeb"><td class="memItemLeft" align="right" valign="top"><a id="a82298d507b2b15c9d909c25a32f5afeb"></a>
typedef ValueType::AllocatorType&#160;</td><td class="memItemRight" valign="bottom"><b>AllocatorType</b></td></tr>
-<tr class="separator:ad07fbe50d88d061dbe0c2c794db80a30"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa50b701c3115897bf0fd8bdf668235fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa50b701c3115897bf0fd8bdf668235fe"></a>
+<tr class="separator:a82298d507b2b15c9d909c25a32f5afeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad52689025256c94097a0e7bb1c70620e"><td class="memItemLeft" align="right" valign="top"><a id="ad52689025256c94097a0e7bb1c70620e"></a>
typedef ValueType::StringRefType&#160;</td><td class="memItemRight" valign="bottom"><b>StringRefType</b></td></tr>
-<tr class="separator:aa50b701c3115897bf0fd8bdf668235fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="separator:ad52689025256c94097a0e7bb1c70620e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:a322ae35485b05197a24820bbd58b71aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a322ae35485b05197a24820bbd58b71aa"></a>
+<tr class="memitem:ae59cd71ac1e26cc66ae0269991f82f26"><td class="memItemLeft" align="right" valign="top"><a id="ae59cd71ac1e26cc66ae0269991f82f26"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>GenericArray</b> (const <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a> &amp;rhs)</td></tr>
-<tr class="separator:a322ae35485b05197a24820bbd58b71aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afcc807b170fa40a0e7a5d7eaba19cdb4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afcc807b170fa40a0e7a5d7eaba19cdb4"></a>
+<tr class="separator:ae59cd71ac1e26cc66ae0269991f82f26"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab9c9bffca8056d6b20b9f92334d35798"><td class="memItemLeft" align="right" valign="top"><a id="ab9c9bffca8056d6b20b9f92334d35798"></a>
<a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a> &amp;rhs)</td></tr>
-<tr class="separator:afcc807b170fa40a0e7a5d7eaba19cdb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aaaa24a40bd60cb89ef67e172d73f6eac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaaa24a40bd60cb89ef67e172d73f6eac"></a>
-<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Size</b> () const </td></tr>
-<tr class="separator:aaaa24a40bd60cb89ef67e172d73f6eac"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a88a62a594b5830293dacde8db609ba6a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88a62a594b5830293dacde8db609ba6a"></a>
-<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Capacity</b> () const </td></tr>
-<tr class="separator:a88a62a594b5830293dacde8db609ba6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4cb1ce26601d5cce7d512c70abacc395"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4cb1ce26601d5cce7d512c70abacc395"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>Empty</b> () const </td></tr>
-<tr class="separator:a4cb1ce26601d5cce7d512c70abacc395"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adcd89fca44ecf2a92118e4d46ead180a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adcd89fca44ecf2a92118e4d46ead180a"></a>
-void&#160;</td><td class="memItemRight" valign="bottom"><b>Clear</b> () const </td></tr>
-<tr class="separator:adcd89fca44ecf2a92118e4d46ead180a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad607ccb1b90fbb73ce8c428a36b1f1a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad607ccb1b90fbb73ce8c428a36b1f1a4"></a>
-ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) const </td></tr>
-<tr class="separator:ad607ccb1b90fbb73ce8c428a36b1f1a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acde662d9993be651a69b9ccd188a2df7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acde662d9993be651a69b9ccd188a2df7"></a>
-ValueIterator&#160;</td><td class="memItemRight" valign="bottom"><b>Begin</b> () const </td></tr>
-<tr class="separator:acde662d9993be651a69b9ccd188a2df7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0f01edc26dc5a8843dfc1c59579324a7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f01edc26dc5a8843dfc1c59579324a7"></a>
-ValueIterator&#160;</td><td class="memItemRight" valign="bottom"><b>End</b> () const </td></tr>
-<tr class="separator:a0f01edc26dc5a8843dfc1c59579324a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5a52218e3b47904c19339aec9249e1c8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a52218e3b47904c19339aec9249e1c8"></a>
-<a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Reserve</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> newCapacity, AllocatorType &amp;allocator) const </td></tr>
-<tr class="separator:a5a52218e3b47904c19339aec9249e1c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa6b6a24f9e2bb2b1f41972c949f6b54b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa6b6a24f9e2bb2b1f41972c949f6b54b"></a>
-<a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&#160;</td><td class="memItemRight" valign="bottom"><b>PushBack</b> (ValueType &amp;value, AllocatorType &amp;allocator) const </td></tr>
-<tr class="separator:aa6b6a24f9e2bb2b1f41972c949f6b54b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2ab0b1e708e7a4a2eeb4714e5762ca19"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ab0b1e708e7a4a2eeb4714e5762ca19"></a>
-<a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&#160;</td><td class="memItemRight" valign="bottom"><b>PushBack</b> (StringRefType value, AllocatorType &amp;allocator) const </td></tr>
-<tr class="separator:a2ab0b1e708e7a4a2eeb4714e5762ca19"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a38b9056be3e83beb4de3332ecb8b3c8a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a38b9056be3e83beb4de3332ecb8b3c8a"></a>
+<tr class="separator:ab9c9bffca8056d6b20b9f92334d35798"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad0473410a03268bbc25cb6d95ecc9925"><td class="memItemLeft" align="right" valign="top"><a id="ad0473410a03268bbc25cb6d95ecc9925"></a>
+<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Size</b> () const</td></tr>
+<tr class="separator:ad0473410a03268bbc25cb6d95ecc9925"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a78052c2a7bb54ee4ea7579df5eab480c"><td class="memItemLeft" align="right" valign="top"><a id="a78052c2a7bb54ee4ea7579df5eab480c"></a>
+<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Capacity</b> () const</td></tr>
+<tr class="separator:a78052c2a7bb54ee4ea7579df5eab480c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaa816f9b2ab65c842c343e5dbe99d876"><td class="memItemLeft" align="right" valign="top"><a id="aaa816f9b2ab65c842c343e5dbe99d876"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>Empty</b> () const</td></tr>
+<tr class="separator:aaa816f9b2ab65c842c343e5dbe99d876"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1b671cc963732398d9234cf01aa339ab"><td class="memItemLeft" align="right" valign="top"><a id="a1b671cc963732398d9234cf01aa339ab"></a>
+void&#160;</td><td class="memItemRight" valign="bottom"><b>Clear</b> () const</td></tr>
+<tr class="separator:a1b671cc963732398d9234cf01aa339ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae3455ca0429fa330cb981c78fab473c0"><td class="memItemLeft" align="right" valign="top"><a id="ae3455ca0429fa330cb981c78fab473c0"></a>
+ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) const</td></tr>
+<tr class="separator:ae3455ca0429fa330cb981c78fab473c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a32299e51f24648e04757de26d952ffe7"><td class="memItemLeft" align="right" valign="top"><a id="a32299e51f24648e04757de26d952ffe7"></a>
+ValueIterator&#160;</td><td class="memItemRight" valign="bottom"><b>Begin</b> () const</td></tr>
+<tr class="separator:a32299e51f24648e04757de26d952ffe7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a27e2a9f13adcca6e0f191495cdce9689"><td class="memItemLeft" align="right" valign="top"><a id="a27e2a9f13adcca6e0f191495cdce9689"></a>
+ValueIterator&#160;</td><td class="memItemRight" valign="bottom"><b>End</b> () const</td></tr>
+<tr class="separator:a27e2a9f13adcca6e0f191495cdce9689"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad1110e43990424e416555541731f229f"><td class="memItemLeft" align="right" valign="top"><a id="ad1110e43990424e416555541731f229f"></a>
+<a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Reserve</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> newCapacity, AllocatorType &amp;allocator) const</td></tr>
+<tr class="separator:ad1110e43990424e416555541731f229f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0bcd130448a9d68303523df7b22dc452"><td class="memItemLeft" align="right" valign="top"><a id="a0bcd130448a9d68303523df7b22dc452"></a>
+<a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&#160;</td><td class="memItemRight" valign="bottom"><b>PushBack</b> (ValueType &amp;value, AllocatorType &amp;allocator) const</td></tr>
+<tr class="separator:a0bcd130448a9d68303523df7b22dc452"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a673eda4c52685461b5bbeccf2f2b5c88"><td class="memItemLeft" align="right" valign="top"><a id="a673eda4c52685461b5bbeccf2f2b5c88"></a>
+<a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&#160;</td><td class="memItemRight" valign="bottom"><b>PushBack</b> (StringRefType value, AllocatorType &amp;allocator) const</td></tr>
+<tr class="separator:a673eda4c52685461b5bbeccf2f2b5c88"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9d3851894eaea693572b934541ee3563"><td class="memTemplParams" colspan="2"><a id="a9d3851894eaea693572b934541ee3563"></a>
template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a38b9056be3e83beb4de3332ecb8b3c8a"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>PushBack</b> (T value, AllocatorType &amp;allocator) const </td></tr>
-<tr class="separator:a38b9056be3e83beb4de3332ecb8b3c8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a61f0b8d0a91e9b48fcddb43bff9ab333"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61f0b8d0a91e9b48fcddb43bff9ab333"></a>
-<a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&#160;</td><td class="memItemRight" valign="bottom"><b>PopBack</b> () const </td></tr>
-<tr class="separator:a61f0b8d0a91e9b48fcddb43bff9ab333"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a406fbe61840670c49b6d1e567f748e98"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a406fbe61840670c49b6d1e567f748e98"></a>
-ValueIterator&#160;</td><td class="memItemRight" valign="bottom"><b>Erase</b> (ConstValueIterator pos) const </td></tr>
-<tr class="separator:a406fbe61840670c49b6d1e567f748e98"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adfd9f67611fbd6297acb5b8c70fadacd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adfd9f67611fbd6297acb5b8c70fadacd"></a>
-ValueIterator&#160;</td><td class="memItemRight" valign="bottom"><b>Erase</b> (ConstValueIterator first, ConstValueIterator last) const </td></tr>
-<tr class="separator:adfd9f67611fbd6297acb5b8c70fadacd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9d3851894eaea693572b934541ee3563"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>PushBack</b> (T value, AllocatorType &amp;allocator) const</td></tr>
+<tr class="separator:a9d3851894eaea693572b934541ee3563"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a50ccee2eea89c21fcd29363506e5ed3f"><td class="memItemLeft" align="right" valign="top"><a id="a50ccee2eea89c21fcd29363506e5ed3f"></a>
+<a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&#160;</td><td class="memItemRight" valign="bottom"><b>PopBack</b> () const</td></tr>
+<tr class="separator:a50ccee2eea89c21fcd29363506e5ed3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a13d2a18801a80add6e1bd9ad167822a5"><td class="memItemLeft" align="right" valign="top"><a id="a13d2a18801a80add6e1bd9ad167822a5"></a>
+ValueIterator&#160;</td><td class="memItemRight" valign="bottom"><b>Erase</b> (ConstValueIterator pos) const</td></tr>
+<tr class="separator:a13d2a18801a80add6e1bd9ad167822a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af8fb2a13a98c62a284de0005850d624c"><td class="memItemLeft" align="right" valign="top"><a id="af8fb2a13a98c62a284de0005850d624c"></a>
+ValueIterator&#160;</td><td class="memItemRight" valign="bottom"><b>Erase</b> (ConstValueIterator first, ConstValueIterator last) const</td></tr>
+<tr class="separator:af8fb2a13a98c62a284de0005850d624c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
友元</h2></td></tr>
-<tr class="memitem:a899449e1a645b5e377af059fb61113d8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a899449e1a645b5e377af059fb61113d8"></a>
+<tr class="memitem:a899449e1a645b5e377af059fb61113d8"><td class="memTemplParams" colspan="2"><a id="a899449e1a645b5e377af059fb61113d8"></a>
template&lt;typename , typename &gt; </td></tr>
<tr class="memitem:a899449e1a645b5e377af059fb61113d8"><td class="memTemplItemLeft" align="right" valign="top">class&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GenericValue</b></td></tr>
<tr class="separator:a899449e1a645b5e377af059fb61113d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<div class="textblock"><h3>template&lt;bool, typename&gt;<br />
-class rapidjson::GenericArray&lt; bool, typename &gt;</h3>
+<div class="textblock"><h3>template&lt;bool Const, typename ValueT&gt;<br />
+class rapidjson::GenericArray&lt; Const, ValueT &gt;</h3>
<p>Helper class for accessing Value of array type. </p>
<p>Instance of this helper class is obtained by <code>GenericValue::GetArray()</code>. In addition to all APIs for array type, it provides range-based for loop if <code>RAPIDJSON_HAS_CXX11_RANGE_FOR=1</code>. </p>
diff --git a/zh-cn/classrapidjson_1_1_generic_array.js b/zh-cn/classrapidjson_1_1_generic_array.js
index 8e6cc253..31313fd4 100644
--- a/zh-cn/classrapidjson_1_1_generic_array.js
+++ b/zh-cn/classrapidjson_1_1_generic_array.js
@@ -1,29 +1,29 @@
var classrapidjson_1_1_generic_array =
[
- [ "AllocatorType", "classrapidjson_1_1_generic_array.html#ad07fbe50d88d061dbe0c2c794db80a30", null ],
- [ "Array", "classrapidjson_1_1_generic_array.html#af544f625293fc10256dad72172743ed3", null ],
- [ "ConstArray", "classrapidjson_1_1_generic_array.html#a8f15375c676103c3ad0dac92f3d17a90", null ],
- [ "ConstValueIterator", "classrapidjson_1_1_generic_array.html#a3547e50ff64b4cf3c747d8f5e3dae32b", null ],
- [ "PlainType", "classrapidjson_1_1_generic_array.html#a92a199e5417ad39a993e8d1c36b5aa3f", null ],
- [ "StringRefType", "classrapidjson_1_1_generic_array.html#aa50b701c3115897bf0fd8bdf668235fe", null ],
- [ "ValueIterator", "classrapidjson_1_1_generic_array.html#a36ac5aaa10bd2b76bd86818301e553a2", null ],
- [ "ValueType", "classrapidjson_1_1_generic_array.html#a217cd30de86c6088fd4235652f2d2dd1", null ],
- [ "GenericArray", "classrapidjson_1_1_generic_array.html#a322ae35485b05197a24820bbd58b71aa", null ],
- [ "~GenericArray", "classrapidjson_1_1_generic_array.html#afd0f1cc1c6ee225273269f781dbad4a1", null ],
- [ "Begin", "classrapidjson_1_1_generic_array.html#acde662d9993be651a69b9ccd188a2df7", null ],
- [ "Capacity", "classrapidjson_1_1_generic_array.html#a88a62a594b5830293dacde8db609ba6a", null ],
- [ "Clear", "classrapidjson_1_1_generic_array.html#adcd89fca44ecf2a92118e4d46ead180a", null ],
- [ "Empty", "classrapidjson_1_1_generic_array.html#a4cb1ce26601d5cce7d512c70abacc395", null ],
- [ "End", "classrapidjson_1_1_generic_array.html#a0f01edc26dc5a8843dfc1c59579324a7", null ],
- [ "Erase", "classrapidjson_1_1_generic_array.html#a406fbe61840670c49b6d1e567f748e98", null ],
- [ "Erase", "classrapidjson_1_1_generic_array.html#adfd9f67611fbd6297acb5b8c70fadacd", null ],
- [ "operator=", "classrapidjson_1_1_generic_array.html#afcc807b170fa40a0e7a5d7eaba19cdb4", null ],
- [ "operator[]", "classrapidjson_1_1_generic_array.html#ad607ccb1b90fbb73ce8c428a36b1f1a4", null ],
- [ "PopBack", "classrapidjson_1_1_generic_array.html#a61f0b8d0a91e9b48fcddb43bff9ab333", null ],
- [ "PushBack", "classrapidjson_1_1_generic_array.html#aa6b6a24f9e2bb2b1f41972c949f6b54b", null ],
- [ "PushBack", "classrapidjson_1_1_generic_array.html#a2ab0b1e708e7a4a2eeb4714e5762ca19", null ],
- [ "PushBack", "classrapidjson_1_1_generic_array.html#a38b9056be3e83beb4de3332ecb8b3c8a", null ],
- [ "Reserve", "classrapidjson_1_1_generic_array.html#a5a52218e3b47904c19339aec9249e1c8", null ],
- [ "Size", "classrapidjson_1_1_generic_array.html#aaaa24a40bd60cb89ef67e172d73f6eac", null ],
+ [ "AllocatorType", "classrapidjson_1_1_generic_array.html#a82298d507b2b15c9d909c25a32f5afeb", null ],
+ [ "Array", "classrapidjson_1_1_generic_array.html#ae82a8e56892743f606ae07da8f9a2f5a", null ],
+ [ "ConstArray", "classrapidjson_1_1_generic_array.html#a6f2b607cc4e648e5b250dea147843476", null ],
+ [ "ConstValueIterator", "classrapidjson_1_1_generic_array.html#a0308428814ba3ee5094114e2ccfa2572", null ],
+ [ "PlainType", "classrapidjson_1_1_generic_array.html#a417eefa7bd2a3d357e947e64044f0bd9", null ],
+ [ "StringRefType", "classrapidjson_1_1_generic_array.html#ad52689025256c94097a0e7bb1c70620e", null ],
+ [ "ValueIterator", "classrapidjson_1_1_generic_array.html#ae94140e6dbab05cd3918d3e75819dc0a", null ],
+ [ "ValueType", "classrapidjson_1_1_generic_array.html#aebd828a2f020262b41af908fbb28a571", null ],
+ [ "GenericArray", "classrapidjson_1_1_generic_array.html#ae59cd71ac1e26cc66ae0269991f82f26", null ],
+ [ "~GenericArray", "classrapidjson_1_1_generic_array.html#a3ac4b469ea0a9034533fd4cbdbfc8616", null ],
+ [ "Begin", "classrapidjson_1_1_generic_array.html#a32299e51f24648e04757de26d952ffe7", null ],
+ [ "Capacity", "classrapidjson_1_1_generic_array.html#a78052c2a7bb54ee4ea7579df5eab480c", null ],
+ [ "Clear", "classrapidjson_1_1_generic_array.html#a1b671cc963732398d9234cf01aa339ab", null ],
+ [ "Empty", "classrapidjson_1_1_generic_array.html#aaa816f9b2ab65c842c343e5dbe99d876", null ],
+ [ "End", "classrapidjson_1_1_generic_array.html#a27e2a9f13adcca6e0f191495cdce9689", null ],
+ [ "Erase", "classrapidjson_1_1_generic_array.html#a13d2a18801a80add6e1bd9ad167822a5", null ],
+ [ "Erase", "classrapidjson_1_1_generic_array.html#af8fb2a13a98c62a284de0005850d624c", null ],
+ [ "operator=", "classrapidjson_1_1_generic_array.html#ab9c9bffca8056d6b20b9f92334d35798", null ],
+ [ "operator[]", "classrapidjson_1_1_generic_array.html#ae3455ca0429fa330cb981c78fab473c0", null ],
+ [ "PopBack", "classrapidjson_1_1_generic_array.html#a50ccee2eea89c21fcd29363506e5ed3f", null ],
+ [ "PushBack", "classrapidjson_1_1_generic_array.html#a0bcd130448a9d68303523df7b22dc452", null ],
+ [ "PushBack", "classrapidjson_1_1_generic_array.html#a673eda4c52685461b5bbeccf2f2b5c88", null ],
+ [ "PushBack", "classrapidjson_1_1_generic_array.html#a9d3851894eaea693572b934541ee3563", null ],
+ [ "Reserve", "classrapidjson_1_1_generic_array.html#ad1110e43990424e416555541731f229f", null ],
+ [ "Size", "classrapidjson_1_1_generic_array.html#ad0473410a03268bbc25cb6d95ecc9925", null ],
[ "GenericValue", "classrapidjson_1_1_generic_array.html#a899449e1a645b5e377af059fb61113d8", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_generic_document-members.html b/zh-cn/classrapidjson_1_1_generic_document-members.html
index 2288b833..27dcc2c8 100644
--- a/zh-cn/classrapidjson_1_1_generic_document-members.html
+++ b/zh-cn/classrapidjson_1_1_generic_document-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_document.ht
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -83,7 +84,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_document.ht
<p>成员的完整列表,这些成员属于 <a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>,包括所有继承而来的类成员</p>
<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e">Accept</a>(Handler &amp;handler) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c">Accept</a>(Handler &amp;handler) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68">AddMember</a>(GenericValue &amp;name, GenericValue &amp;value, Allocator &amp;allocator)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad290f179591025e871bedbbac89ac276">AddMember</a>(GenericValue &amp;name, StringRefType value, Allocator &amp;allocator)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a578e35f3350717db2aae534969b2346a">AddMember</a>(GenericValue &amp;name, std::basic_string&lt; Ch &gt; &amp;value, Allocator &amp;allocator)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
@@ -94,9 +95,9 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_document.ht
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#a4c85243a28c9dcf2d1357da00fcaa773">AllocatorType</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Array</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603">Begin</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#abc8945d3411c6ce583d322753ce028e1">Begin</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a07d947971c59c9ce884b3c5205c9238f">Begin</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Bool</b>(bool b) (定义于 <a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cbb8a305fdc40beb83bee2b99ac5b59">Capacity</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a812e5c07f74a90566e7636330740eb6a">Capacity</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#a8367a827588dd91d02e21ef945bec9f5">Ch</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aa56b69bac5423622eff6998ce4802106">Clear</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ConstArray</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
@@ -105,10 +106,10 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_document.ht
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae">CopyFrom</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs, Allocator &amp;allocator, bool copyConstStrings=false)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Double</b>(double d) (定义于 <a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a08bf77a430b865404c57a93d8f0f6d3d">Empty</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad08a62c65a793ab1d0abe7eac03776fd">Empty</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a05906384808645a2e798d29a9b2d441d">EncodingType</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109">End</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad2d9786831d721cf8f1bf0dbdf86404a">End</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#abdd6a3b703a03aada4c186a2365698e7">End</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EndArray</b>(SizeType elementCount) (定义于 <a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>EndObject</b>(SizeType memberCount) (定义于 <a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99">Erase</a>(ConstValueIterator pos)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
@@ -119,11 +120,11 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_document.ht
<tr bgcolor="#f0f0f0"><td class="entry"><b>EraseMember</b>(const std::basic_string&lt; Ch &gt; &amp;name) (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EraseMember</b>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811">FindMember</a>(const Ch *name)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FindMember</b>(const Ch *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FindMember</b>(const Ch *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a8d75bf0c6c0fa4f8d340a4236e98539b">FindMember</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FindMember</b>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FindMember</b>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a278b420ea75b0ec18d88d4c9e9199d62">FindMember</a>(const std::basic_string&lt; Ch &gt; &amp;name)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FindMember</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FindMember</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#aa52c3016961f25ecd989d82839bce4e5">GenericDocument</a>(Type type, Allocator *allocator=0, size_t stackCapacity=kDefaultStackCapacity, StackAllocator *stackAllocator=0)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#a82b27e7b228eb46a23f99720063ab4fb">GenericDocument</a>(Allocator *allocator=0, size_t stackCapacity=kDefaultStackCapacity, StackAllocator *stackAllocator=0)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>GenericValue</b> (定义于 <a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
@@ -144,80 +145,80 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_document.ht
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a852788b35257762cd8d6c4bf5c5d77bc">rapidjson::GenericValue::GenericValue</a>(const std::basic_string&lt; Ch &gt; &amp;s, Allocator &amp;allocator)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a77b0f41557b3c34b57a180698312c4a8">rapidjson::GenericValue::GenericValue</a>(Array a) RAPIDJSON_NOEXCEPT</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a893da1069660536fd3943a0149206a6e">rapidjson::GenericValue::GenericValue</a>(Object o) RAPIDJSON_NOEXCEPT</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Get</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Get</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Get</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetArray</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetArray</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a69d917b47799f63fc588bf294fa71483">GetBool</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aa059dee923cc0446752e321ff70936a6">GetDouble</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#ab791c05727d83f6834a1b916783dbc06">GetErrorOffset</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a0eda9834f241e5c5b23161a7ee33758b">GetFloat</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetInt</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetInt64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetArray</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a78d80b935babeedbfa71914a8fe5baa7">GetBool</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aa27d086d265f0ce447b15b15f0a2ed6e">GetDouble</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#af532179ca5ad5434a5e8af63f5da4c5f">GetErrorOffset</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a573712808dd5d8814c103cf55fd761b4">GetFloat</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetInt</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetInt64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetObject</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetObject</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#ad97e64c123ec1e07ea62ab0a9ce80c00">GetParseError</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#ac785c064649dea6cfa67207b6bda748e">GetStackCapacity</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetString</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8">GetStringLength</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetType</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetUint</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetUint64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#af17b9b6ba6a9fb4e02d2dced5aa0ee0c">HasMember</a>(const Ch *name) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#afb1942ef13566484e1806689834a053f">HasMember</a>(const std::basic_string&lt; Ch &gt; &amp;name) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a548e6c8a99c525573d933933610977cb">HasMember</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#a2ab17089bd6249bf2a7959d56d35cb68">HasParseError</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetObject</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#ab94c280c079a6837a24951cb4d8f337b">GetParseError</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#a153e5a065ca9660673974f9df203be4b">GetStackCapacity</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetString</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea">GetStringLength</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetType</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetUint</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetUint64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b">HasMember</a>(const Ch *name) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a9b3b30acbe60d7a5b105afa05c1ddfb0">HasMember</a>(const std::basic_string&lt; Ch &gt; &amp;name) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a794129b8adffb97d123306a0c0ccaf71">HasMember</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#a7607bb42b51547e44bfd4cab35d8f20e">HasParseError</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Int</b>(int i) (定义于 <a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Int64</b>(int64_t i) (定义于 <a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ade8d1ca2b8e8afa02cde46e26866440b">Is</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsArray</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsBool</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsDouble</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsFalse</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsFloat</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsInt</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsInt64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsLosslessDouble</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsLosslessFloat</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsNull</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsNumber</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsObject</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsString</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsTrue</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsUint</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsUint64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#acc6b1791cca8daef18521918136264b7">Is</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsArray</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsBool</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsDouble</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsFalse</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsFloat</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsInt</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsInt64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsLosslessDouble</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsLosslessFloat</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsNull</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsNumber</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsObject</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsString</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsTrue</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsUint</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsUint64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Key</b>(const Ch *str, SizeType length, bool copy) (定义于 <a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a0220ddebe2f023fa75b643a50e90e559">Member</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a469c0cc3e72f846757fb64fa52fafee5">MemberBegin</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ae89a77887aa3eb1f1f913727cbff6786">MemberBegin</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a">MemberBegin</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#acf5019b9002ebfd66a1191d19e986c7b">MemberCount</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a88d2c5b861cd8a6a14976456dfbc1f64">MemberEnd</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a8b7e47c57a20d0de0cd19eee799ebd88">MemberCount</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c">MemberEnd</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee">MemberEnd</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b">Move</a>() RAPIDJSON_NOEXCEPT</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Null</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Object</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a1f28a345c9b9c93c76abf695669e4378">ObjectEmpty</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#a0de48f0c884423b6fcfabc2e93942968">operator ParseResult</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a0cb232adce79932c499c5f04cbc8dc54">operator!=</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aff1711092a1278d36b8152f5520a686e">operator!=</a>(const Ch *rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad7e6ef7acbbfef57485b9f2dee620dbf">operator!=</a>(const T &amp;rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a1f4835373e05abae52b91e1c6b7ec92c">ObjectEmpty</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#a36d19989c9221b27036675455516a974">operator ParseResult</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad5bf5afd53f21f370f917041b3be4bfc">operator!=</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a6443cf5323fb46c4c51cd15a365da49b">operator!=</a>(const Ch *rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ae6fe0576ff0336f6e2b09fe32f3ff809">operator!=</a>(const T &amp;rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ae8bcedd951f50b69786aaaa1828e9fac">rapidjson::GenericValue::operator=</a>(GenericValue &amp;rhs) RAPIDJSON_NOEXCEPT</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aecc9d0a6aafe31f4fdf9f6e75e5f089c">rapidjson::GenericValue::operator=</a>(StringRefType str) RAPIDJSON_NOEXCEPT</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ab7446da62fdc61d6d987d508cdb6ac13">rapidjson::GenericValue::operator=</a>(T value)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#afbdbc9cbc3b59feb5a28d5bfee97dbb3">operator==</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a7bed9035dd1beeabe6f47e870874e793">operator==</a>(const Ch *rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a6f7f7c66d8f8c08e496ae831ba114126">operator==</a>(const std::basic_string&lt; Ch &gt; &amp;rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ae6c196979931e8283bcbd499133169ed">operator==</a>(const T &amp;rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ab4e5285102bb686f39bca2855a17a181">operator==</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#af03ef6020e188bbfceb018da5cd8becc">operator==</a>(const Ch *rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#af089d2bee0386ca7504ff4fab466c87f">operator==</a>(const std::basic_string&lt; Ch &gt; &amp;rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aaddbbbb35cd783f209f889cf8dea9570">operator==</a>(const T &amp;rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a8ec7fc7f221306925c7674dccbe02b07">operator[]</a>(T *name)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(T *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(T *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aa62b57746c96ce3d264b2fe178196062">operator[]</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a4d337239ee3e2096462f6a36b9ab0811">operator[]</a>(const std::basic_string&lt; Ch &gt; &amp;name)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#adc312de070d03a63e6c692c9c61db156">operator[]</a>(SizeType index)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(SizeType index) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(SizeType index) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">Parse</a>(const typename SourceEncoding::Ch *str)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#a42c35e2f64c288f14b74fec2792500c8">Parse</a>(const Ch *str)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html#ab031375318d133f83a114314b75703de">Parse</a>(const Ch *str)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
@@ -262,7 +263,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_document.ht
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a3e930bffb40a78e570e3deef461f0532">SetString</a>(const std::basic_string&lt; Ch &gt; &amp;s, Allocator &amp;allocator)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>SetUint</b>(unsigned u) (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>SetUint64</b>(uint64_t u64) (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a2e6e849cfb368a3fa708f8bcf1d56ec9">Size</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a799a8a2503989f486f3fc7a660266555">Size</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>StartArray</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>StartObject</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>String</b>(const Ch *str, SizeType length, bool copy) (定义于 <a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
diff --git a/zh-cn/classrapidjson_1_1_generic_document.html b/zh-cn/classrapidjson_1_1_generic_document.html
index 370db525..634c56c4 100644
--- a/zh-cn/classrapidjson_1_1_generic_document.html
+++ b/zh-cn/classrapidjson_1_1_generic_document.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_document.ht
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -95,98 +96,87 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_document.ht
类 rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt; 继承关系图:</div>
<div class="dyncontent">
<div class="center">
- <img src="classrapidjson_1_1_generic_document.png" usemap="#rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;_map" alt=""/>
- <map id="rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;_map" name="rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;_map">
+ <img src="classrapidjson_1_1_generic_document.png" usemap="#rapidjson::GenericDocument_3C_20Encoding_2C_20Allocator_2C_20StackAllocator_20_3E_map" alt=""/>
+ <map id="rapidjson::GenericDocument_3C_20Encoding_2C_20Allocator_2C_20StackAllocator_20_3E_map" name="rapidjson::GenericDocument_3C_20Encoding_2C_20Allocator_2C_20StackAllocator_20_3E_map">
<area href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. " alt="rapidjson::GenericValue&lt; Encoding, Allocator &gt;" shape="rect" coords="0,0,399,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a8367a827588dd91d02e21ef945bec9f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8367a827588dd91d02e21ef945bec9f5"></a>
+<tr class="memitem:a8367a827588dd91d02e21ef945bec9f5"><td class="memItemLeft" align="right" valign="top"><a id="a8367a827588dd91d02e21ef945bec9f5"></a>
typedef Encoding::Ch&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#a8367a827588dd91d02e21ef945bec9f5">Ch</a></td></tr>
<tr class="memdesc:a8367a827588dd91d02e21ef945bec9f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Character type derived from <a class="el" href="classrapidjson_1_1_encoding.html" title="Concept for encoding of Unicode characters. ">Encoding</a>. <br /></td></tr>
<tr class="separator:a8367a827588dd91d02e21ef945bec9f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a41bbec044c421e870a9d355075d741bc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41bbec044c421e870a9d355075d741bc"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <br class="typebreak" />
-<a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#a41bbec044c421e870a9d355075d741bc">ValueType</a></td></tr>
+<tr class="memitem:a41bbec044c421e870a9d355075d741bc"><td class="memItemLeft" align="right" valign="top"><a id="a41bbec044c421e870a9d355075d741bc"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#a41bbec044c421e870a9d355075d741bc">ValueType</a></td></tr>
<tr class="memdesc:a41bbec044c421e870a9d355075d741bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Value type of the document. <br /></td></tr>
<tr class="separator:a41bbec044c421e870a9d355075d741bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4c85243a28c9dcf2d1357da00fcaa773"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c85243a28c9dcf2d1357da00fcaa773"></a>
+<tr class="memitem:a4c85243a28c9dcf2d1357da00fcaa773"><td class="memItemLeft" align="right" valign="top"><a id="a4c85243a28c9dcf2d1357da00fcaa773"></a>
typedef <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#a4c85243a28c9dcf2d1357da00fcaa773">AllocatorType</a></td></tr>
<tr class="memdesc:a4c85243a28c9dcf2d1357da00fcaa773"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_allocator.html" title="Concept for allocating, resizing and freeing memory block. ">Allocator</a> type from template parameter. <br /></td></tr>
<tr class="separator:a4c85243a28c9dcf2d1357da00fcaa773"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classrapidjson_1_1_generic_value"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classrapidjson_1_1_generic_value')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td></tr>
-<tr class="memitem:a0220ddebe2f023fa75b643a50e90e559 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0220ddebe2f023fa75b643a50e90e559"></a>
-typedef <a class="el" href="structrapidjson_1_1_generic_member.html">GenericMember</a><br class="typebreak" />
-&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a0220ddebe2f023fa75b643a50e90e559">Member</a></td></tr>
+<tr class="memitem:a0220ddebe2f023fa75b643a50e90e559 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a0220ddebe2f023fa75b643a50e90e559"></a>
+typedef <a class="el" href="structrapidjson_1_1_generic_member.html">GenericMember</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a0220ddebe2f023fa75b643a50e90e559">Member</a></td></tr>
<tr class="memdesc:a0220ddebe2f023fa75b643a50e90e559 inherit pub_types_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Name-value pair in an object. <br /></td></tr>
<tr class="separator:a0220ddebe2f023fa75b643a50e90e559 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a05906384808645a2e798d29a9b2d441d inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05906384808645a2e798d29a9b2d441d"></a>
+<tr class="memitem:a05906384808645a2e798d29a9b2d441d inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a05906384808645a2e798d29a9b2d441d"></a>
typedef <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a05906384808645a2e798d29a9b2d441d">EncodingType</a></td></tr>
<tr class="memdesc:a05906384808645a2e798d29a9b2d441d inherit pub_types_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_encoding.html" title="Concept for encoding of Unicode characters. ">Encoding</a> type from template parameter. <br /></td></tr>
<tr class="separator:a05906384808645a2e798d29a9b2d441d inherit pub_types_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5d47340c96346c5028fee4c9068d783d inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d47340c96346c5028fee4c9068d783d"></a>
+<tr class="memitem:a5d47340c96346c5028fee4c9068d783d inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a5d47340c96346c5028fee4c9068d783d"></a>
typedef <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a5d47340c96346c5028fee4c9068d783d">AllocatorType</a></td></tr>
<tr class="memdesc:a5d47340c96346c5028fee4c9068d783d inherit pub_types_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_allocator.html" title="Concept for allocating, resizing and freeing memory block. ">Allocator</a> type from template parameter. <br /></td></tr>
<tr class="separator:a5d47340c96346c5028fee4c9068d783d inherit pub_types_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adcdbc7fa85a9a41b78966d7e0dcc2ac4 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adcdbc7fa85a9a41b78966d7e0dcc2ac4"></a>
+<tr class="memitem:adcdbc7fa85a9a41b78966d7e0dcc2ac4 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="adcdbc7fa85a9a41b78966d7e0dcc2ac4"></a>
typedef Encoding::Ch&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a></td></tr>
<tr class="memdesc:adcdbc7fa85a9a41b78966d7e0dcc2ac4 inherit pub_types_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Character type derived from <a class="el" href="classrapidjson_1_1_encoding.html" title="Concept for encoding of Unicode characters. ">Encoding</a>. <br /></td></tr>
<tr class="separator:adcdbc7fa85a9a41b78966d7e0dcc2ac4 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a559eb9cea54364a35518b02f6d74f379 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a559eb9cea54364a35518b02f6d74f379"></a>
+<tr class="memitem:a559eb9cea54364a35518b02f6d74f379 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a559eb9cea54364a35518b02f6d74f379"></a>
typedef <a class="el" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a></td></tr>
-<tr class="memdesc:a559eb9cea54364a35518b02f6d74f379 inherit pub_types_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reference to a constant string. <br /></td></tr>
+<tr class="memdesc:a559eb9cea54364a35518b02f6d74f379 inherit pub_types_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reference to a constant string <br /></td></tr>
<tr class="separator:a559eb9cea54364a35518b02f6d74f379 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aca5596987335016c1a7c2a9467baf80b inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca5596987335016c1a7c2a9467baf80b"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a><br class="typebreak" />
-&lt; false, <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;<br class="typebreak" />
-::Iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a></td></tr>
+<tr class="memitem:aca5596987335016c1a7c2a9467baf80b inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="aca5596987335016c1a7c2a9467baf80b"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>&lt; false, <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;::Iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a></td></tr>
<tr class="memdesc:aca5596987335016c1a7c2a9467baf80b inherit pub_types_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Member iterator for iterating in object. <br /></td></tr>
<tr class="separator:aca5596987335016c1a7c2a9467baf80b inherit pub_types_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6cd2b09795c48d2892bebc0ae350d51f inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cd2b09795c48d2892bebc0ae350d51f"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a><br class="typebreak" />
-&lt; true, <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;<br class="typebreak" />
-::Iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a></td></tr>
+<tr class="memitem:a6cd2b09795c48d2892bebc0ae350d51f inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a6cd2b09795c48d2892bebc0ae350d51f"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>&lt; true, <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;::Iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a></td></tr>
<tr class="memdesc:a6cd2b09795c48d2892bebc0ae350d51f inherit pub_types_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant member iterator for iterating in object. <br /></td></tr>
<tr class="separator:a6cd2b09795c48d2892bebc0ae350d51f inherit pub_types_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a06ce0e14ec83b53c83e1b1699b53a25e inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06ce0e14ec83b53c83e1b1699b53a25e"></a>
+<tr class="memitem:a06ce0e14ec83b53c83e1b1699b53a25e inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a06ce0e14ec83b53c83e1b1699b53a25e"></a>
typedef <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a06ce0e14ec83b53c83e1b1699b53a25e">ValueIterator</a></td></tr>
<tr class="memdesc:a06ce0e14ec83b53c83e1b1699b53a25e inherit pub_types_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Value iterator for iterating in array. <br /></td></tr>
<tr class="separator:a06ce0e14ec83b53c83e1b1699b53a25e inherit pub_types_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a89a6588121742fc3f154b10b8f15f45f inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89a6588121742fc3f154b10b8f15f45f"></a>
+<tr class="memitem:a89a6588121742fc3f154b10b8f15f45f inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a89a6588121742fc3f154b10b8f15f45f"></a>
typedef const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a></td></tr>
<tr class="memdesc:a89a6588121742fc3f154b10b8f15f45f inherit pub_types_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant value iterator for iterating in array. <br /></td></tr>
<tr class="separator:a89a6588121742fc3f154b10b8f15f45f inherit pub_types_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad2935191ab28c2c2e472b739a9d58202 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2935191ab28c2c2e472b739a9d58202"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <br class="typebreak" />
-<a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a></td></tr>
+<tr class="memitem:ad2935191ab28c2c2e472b739a9d58202 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="ad2935191ab28c2c2e472b739a9d58202"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a></td></tr>
<tr class="memdesc:ad2935191ab28c2c2e472b739a9d58202 inherit pub_types_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Value type of itself. <br /></td></tr>
<tr class="separator:ad2935191ab28c2c2e472b739a9d58202 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a81291ad1031afe43aca4719e2989d7dc inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81291ad1031afe43aca4719e2989d7dc"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&lt; false, <br class="typebreak" />
-<a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Array</b></td></tr>
+<tr class="memitem:a81291ad1031afe43aca4719e2989d7dc inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a81291ad1031afe43aca4719e2989d7dc"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&lt; false, <a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Array</b></td></tr>
<tr class="separator:a81291ad1031afe43aca4719e2989d7dc inherit pub_types_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8fb89523de7b22be0c69069f05d04b41 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8fb89523de7b22be0c69069f05d04b41"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&lt; true, <br class="typebreak" />
-<a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstArray</b></td></tr>
+<tr class="memitem:a8fb89523de7b22be0c69069f05d04b41 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a8fb89523de7b22be0c69069f05d04b41"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&lt; true, <a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstArray</b></td></tr>
<tr class="separator:a8fb89523de7b22be0c69069f05d04b41 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae1b1a60a9c69ce5ac48b8c445e3e9231 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae1b1a60a9c69ce5ac48b8c445e3e9231"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&lt; false, <br class="typebreak" />
-<a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Object</b></td></tr>
+<tr class="memitem:ae1b1a60a9c69ce5ac48b8c445e3e9231 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="ae1b1a60a9c69ce5ac48b8c445e3e9231"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&lt; false, <a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Object</b></td></tr>
<tr class="separator:ae1b1a60a9c69ce5ac48b8c445e3e9231 inherit pub_types_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a39f5e1993897a86741b55c32ed4f54ef inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39f5e1993897a86741b55c32ed4f54ef"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&lt; true, <br class="typebreak" />
-<a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstObject</b></td></tr>
+<tr class="memitem:a39f5e1993897a86741b55c32ed4f54ef inherit pub_types_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a39f5e1993897a86741b55c32ed4f54ef"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&lt; true, <a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstObject</b></td></tr>
<tr class="separator:a39f5e1993897a86741b55c32ed4f54ef inherit pub_types_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:aa52c3016961f25ecd989d82839bce4e5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#aa52c3016961f25ecd989d82839bce4e5">GenericDocument</a> (<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0, size_t stackCapacity=kDefaultStackCapacity, StackAllocator *stackAllocator=0)</td></tr>
-<tr class="memdesc:aa52c3016961f25ecd989d82839bce4e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="#aa52c3016961f25ecd989d82839bce4e5">更多...</a><br /></td></tr>
+<tr class="memdesc:aa52c3016961f25ecd989d82839bce4e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor <a href="#aa52c3016961f25ecd989d82839bce4e5">更多...</a><br /></td></tr>
<tr class="separator:aa52c3016961f25ecd989d82839bce4e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82b27e7b228eb46a23f99720063ab4fb"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#a82b27e7b228eb46a23f99720063ab4fb">GenericDocument</a> (<a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0, size_t stackCapacity=kDefaultStackCapacity, StackAllocator *stackAllocator=0)</td></tr>
-<tr class="memdesc:a82b27e7b228eb46a23f99720063ab4fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="#a82b27e7b228eb46a23f99720063ab4fb">更多...</a><br /></td></tr>
+<tr class="memdesc:a82b27e7b228eb46a23f99720063ab4fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor <a href="#a82b27e7b228eb46a23f99720063ab4fb">更多...</a><br /></td></tr>
<tr class="separator:a82b27e7b228eb46a23f99720063ab4fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf1cbab989b856f9d260787b2575750b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#abf1cbab989b856f9d260787b2575750b">Swap</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> &amp;rhs) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:abf1cbab989b856f9d260787b2575750b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exchange the contents of this document with those of another. <a href="#abf1cbab989b856f9d260787b2575750b">更多...</a><br /></td></tr>
@@ -195,54 +185,54 @@ Public 成员函数</h2></td></tr>
<tr class="memitem:a63e18887979da500ece6f0bd10d29b64"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#a63e18887979da500ece6f0bd10d29b64">Populate</a> (Generator &amp;g)</td></tr>
<tr class="memdesc:a63e18887979da500ece6f0bd10d29b64"><td class="mdescLeft">&#160;</td><td class="mdescRight">Populate this document by a generator which produces SAX events. <a href="#a63e18887979da500ece6f0bd10d29b64">更多...</a><br /></td></tr>
<tr class="separator:a63e18887979da500ece6f0bd10d29b64"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad92c6cd025d411258d1f2ad890e2ee3f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad92c6cd025d411258d1f2ad890e2ee3f"></a>
+<tr class="memitem:ad92c6cd025d411258d1f2ad890e2ee3f"><td class="memItemLeft" align="right" valign="top"><a id="ad92c6cd025d411258d1f2ad890e2ee3f"></a>
<a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a> ()</td></tr>
<tr class="memdesc:ad92c6cd025d411258d1f2ad890e2ee3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the allocator of this document. <br /></td></tr>
<tr class="separator:ad92c6cd025d411258d1f2ad890e2ee3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac785c064649dea6cfa67207b6bda748e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac785c064649dea6cfa67207b6bda748e"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#ac785c064649dea6cfa67207b6bda748e">GetStackCapacity</a> () const </td></tr>
-<tr class="memdesc:ac785c064649dea6cfa67207b6bda748e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the capacity of stack in bytes. <br /></td></tr>
-<tr class="separator:ac785c064649dea6cfa67207b6bda748e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab53214e81f7402edbe57829cb1ee6c87"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab53214e81f7402edbe57829cb1ee6c87"></a>
+<tr class="memitem:a153e5a065ca9660673974f9df203be4b"><td class="memItemLeft" align="right" valign="top"><a id="a153e5a065ca9660673974f9df203be4b"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#a153e5a065ca9660673974f9df203be4b">GetStackCapacity</a> () const</td></tr>
+<tr class="memdesc:a153e5a065ca9660673974f9df203be4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the capacity of stack in bytes. <br /></td></tr>
+<tr class="separator:a153e5a065ca9660673974f9df203be4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab53214e81f7402edbe57829cb1ee6c87"><td class="memItemLeft" align="right" valign="top"><a id="ab53214e81f7402edbe57829cb1ee6c87"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Null</b> ()</td></tr>
<tr class="separator:ab53214e81f7402edbe57829cb1ee6c87"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a847c975112d3d392a678e5d5b3b8f622"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a847c975112d3d392a678e5d5b3b8f622"></a>
+<tr class="memitem:a847c975112d3d392a678e5d5b3b8f622"><td class="memItemLeft" align="right" valign="top"><a id="a847c975112d3d392a678e5d5b3b8f622"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Bool</b> (bool b)</td></tr>
<tr class="separator:a847c975112d3d392a678e5d5b3b8f622"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abadda08ccb7404576e74104916329c21"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abadda08ccb7404576e74104916329c21"></a>
+<tr class="memitem:abadda08ccb7404576e74104916329c21"><td class="memItemLeft" align="right" valign="top"><a id="abadda08ccb7404576e74104916329c21"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Int</b> (int i)</td></tr>
<tr class="separator:abadda08ccb7404576e74104916329c21"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a56f3b745a657f2171e6a354b5652a445"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56f3b745a657f2171e6a354b5652a445"></a>
+<tr class="memitem:a56f3b745a657f2171e6a354b5652a445"><td class="memItemLeft" align="right" valign="top"><a id="a56f3b745a657f2171e6a354b5652a445"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Uint</b> (unsigned i)</td></tr>
<tr class="separator:a56f3b745a657f2171e6a354b5652a445"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a133a57e6fa510655e2933decc7361ccc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a133a57e6fa510655e2933decc7361ccc"></a>
+<tr class="memitem:a133a57e6fa510655e2933decc7361ccc"><td class="memItemLeft" align="right" valign="top"><a id="a133a57e6fa510655e2933decc7361ccc"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Int64</b> (int64_t i)</td></tr>
<tr class="separator:a133a57e6fa510655e2933decc7361ccc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3b56cdb811eea58932dcb1e425263831"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b56cdb811eea58932dcb1e425263831"></a>
+<tr class="memitem:a3b56cdb811eea58932dcb1e425263831"><td class="memItemLeft" align="right" valign="top"><a id="a3b56cdb811eea58932dcb1e425263831"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Uint64</b> (uint64_t i)</td></tr>
<tr class="separator:a3b56cdb811eea58932dcb1e425263831"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a332d4082d24364fba781dc3d263b4202"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a332d4082d24364fba781dc3d263b4202"></a>
+<tr class="memitem:a332d4082d24364fba781dc3d263b4202"><td class="memItemLeft" align="right" valign="top"><a id="a332d4082d24364fba781dc3d263b4202"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Double</b> (double d)</td></tr>
<tr class="separator:a332d4082d24364fba781dc3d263b4202"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a278e93a502e19762fdfc337875ca34f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a278e93a502e19762fdfc337875ca34f8"></a>
+<tr class="memitem:a278e93a502e19762fdfc337875ca34f8"><td class="memItemLeft" align="right" valign="top"><a id="a278e93a502e19762fdfc337875ca34f8"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>RawNumber</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, bool copy)</td></tr>
<tr class="separator:a278e93a502e19762fdfc337875ca34f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aeab83624e94e75f3f9faa18e0c74ba20"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeab83624e94e75f3f9faa18e0c74ba20"></a>
+<tr class="memitem:aeab83624e94e75f3f9faa18e0c74ba20"><td class="memItemLeft" align="right" valign="top"><a id="aeab83624e94e75f3f9faa18e0c74ba20"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>String</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, bool copy)</td></tr>
<tr class="separator:aeab83624e94e75f3f9faa18e0c74ba20"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acdbdf67f126b45fcf3c7029bdaa930d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acdbdf67f126b45fcf3c7029bdaa930d8"></a>
+<tr class="memitem:acdbdf67f126b45fcf3c7029bdaa930d8"><td class="memItemLeft" align="right" valign="top"><a id="acdbdf67f126b45fcf3c7029bdaa930d8"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>StartObject</b> ()</td></tr>
<tr class="separator:acdbdf67f126b45fcf3c7029bdaa930d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4bc59e7ec43a909af155c18e7f948f40"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4bc59e7ec43a909af155c18e7f948f40"></a>
+<tr class="memitem:a4bc59e7ec43a909af155c18e7f948f40"><td class="memItemLeft" align="right" valign="top"><a id="a4bc59e7ec43a909af155c18e7f948f40"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Key</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, bool copy)</td></tr>
<tr class="separator:a4bc59e7ec43a909af155c18e7f948f40"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abe5944e40f6a374645a92b4a77bc3b6e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abe5944e40f6a374645a92b4a77bc3b6e"></a>
+<tr class="memitem:abe5944e40f6a374645a92b4a77bc3b6e"><td class="memItemLeft" align="right" valign="top"><a id="abe5944e40f6a374645a92b4a77bc3b6e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndObject</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount)</td></tr>
<tr class="separator:abe5944e40f6a374645a92b4a77bc3b6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5ea841518170c19b896c53dc255fae41"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ea841518170c19b896c53dc255fae41"></a>
+<tr class="memitem:a5ea841518170c19b896c53dc255fae41"><td class="memItemLeft" align="right" valign="top"><a id="a5ea841518170c19b896c53dc255fae41"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>StartArray</b> ()</td></tr>
<tr class="separator:a5ea841518170c19b896c53dc255fae41"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a544d48e416efb239698e1a55b09aad73"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a544d48e416efb239698e1a55b09aad73"></a>
+<tr class="memitem:a544d48e416efb239698e1a55b09aad73"><td class="memItemLeft" align="right" valign="top"><a id="a544d48e416efb239698e1a55b09aad73"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndArray</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount)</td></tr>
<tr class="separator:a544d48e416efb239698e1a55b09aad73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Parse from stream</div></td></tr>
@@ -252,7 +242,7 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndArray</b> (<a clas
<tr class="separator:a3ae97682cf04685c7db9d89ebc399b85"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4ee7d86b8c906c83dbe15e57eb6ac6a"><td class="memTemplParams" colspan="2">template&lt;unsigned parseFlags, typename InputStream &gt; </td></tr>
<tr class="memitem:ae4ee7d86b8c906c83dbe15e57eb6ac6a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#ae4ee7d86b8c906c83dbe15e57eb6ac6a">ParseStream</a> (InputStream &amp;is)</td></tr>
-<tr class="memdesc:ae4ee7d86b8c906c83dbe15e57eb6ac6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse JSON text from an input stream. <a href="#ae4ee7d86b8c906c83dbe15e57eb6ac6a">更多...</a><br /></td></tr>
+<tr class="memdesc:ae4ee7d86b8c906c83dbe15e57eb6ac6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse JSON text from an input stream <a href="#ae4ee7d86b8c906c83dbe15e57eb6ac6a">更多...</a><br /></td></tr>
<tr class="separator:ae4ee7d86b8c906c83dbe15e57eb6ac6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf96a3c7fd61486d049c701b1fe5d414"><td class="memTemplParams" colspan="2">template&lt;typename InputStream &gt; </td></tr>
<tr class="memitem:acf96a3c7fd61486d049c701b1fe5d414"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#acf96a3c7fd61486d049c701b1fe5d414">ParseStream</a> (InputStream &amp;is)</td></tr>
@@ -261,7 +251,7 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndArray</b> (<a clas
<tr><td colspan="2"><div class="groupHeader">Parse in-place from mutable string</div></td></tr>
<tr class="memitem:a7ba626bf84eb45a9bca0b7723bf47f3f"><td class="memTemplParams" colspan="2">template&lt;unsigned parseFlags&gt; </td></tr>
<tr class="memitem:a7ba626bf84eb45a9bca0b7723bf47f3f"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#a7ba626bf84eb45a9bca0b7723bf47f3f">ParseInsitu</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *str)</td></tr>
-<tr class="memdesc:a7ba626bf84eb45a9bca0b7723bf47f3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse JSON text from a mutable string. <a href="#a7ba626bf84eb45a9bca0b7723bf47f3f">更多...</a><br /></td></tr>
+<tr class="memdesc:a7ba626bf84eb45a9bca0b7723bf47f3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse JSON text from a mutable string <a href="#a7ba626bf84eb45a9bca0b7723bf47f3f">更多...</a><br /></td></tr>
<tr class="separator:a7ba626bf84eb45a9bca0b7723bf47f3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af061c039a990c2970dc31e5626149367"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#af061c039a990c2970dc31e5626149367">ParseInsitu</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *str)</td></tr>
<tr class="memdesc:af061c039a990c2970dc31e5626149367"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse JSON text from a mutable string (with <a class="el" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a5640cb00db7814b7f22be3683dda9835">kParseDefaultFlags</a>) <a href="#af061c039a990c2970dc31e5626149367">更多...</a><br /></td></tr>
@@ -273,512 +263,512 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndArray</b> (<a clas
<tr class="separator:aea842b533a858c9a3861451ad9e8642c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42c35e2f64c288f14b74fec2792500c8"><td class="memTemplParams" colspan="2">template&lt;unsigned parseFlags&gt; </td></tr>
<tr class="memitem:a42c35e2f64c288f14b74fec2792500c8"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#a42c35e2f64c288f14b74fec2792500c8">Parse</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *str)</td></tr>
-<tr class="memdesc:a42c35e2f64c288f14b74fec2792500c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse JSON text from a read-only string. <a href="#a42c35e2f64c288f14b74fec2792500c8">更多...</a><br /></td></tr>
+<tr class="memdesc:a42c35e2f64c288f14b74fec2792500c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse JSON text from a read-only string <a href="#a42c35e2f64c288f14b74fec2792500c8">更多...</a><br /></td></tr>
<tr class="separator:a42c35e2f64c288f14b74fec2792500c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab031375318d133f83a114314b75703de"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#ab031375318d133f83a114314b75703de">Parse</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *str)</td></tr>
<tr class="memdesc:ab031375318d133f83a114314b75703de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse JSON text from a read-only string (with <a class="el" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a5640cb00db7814b7f22be3683dda9835">kParseDefaultFlags</a>) <a href="#ab031375318d133f83a114314b75703de">更多...</a><br /></td></tr>
<tr class="separator:ab031375318d133f83a114314b75703de"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab5b308584e4bea9f59e0ba32ebd22b16"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab5b308584e4bea9f59e0ba32ebd22b16"></a>
+<tr class="memitem:ab5b308584e4bea9f59e0ba32ebd22b16"><td class="memTemplParams" colspan="2"><a id="ab5b308584e4bea9f59e0ba32ebd22b16"></a>
template&lt;unsigned parseFlags, typename SourceEncoding &gt; </td></tr>
<tr class="memitem:ab5b308584e4bea9f59e0ba32ebd22b16"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Parse</b> (const typename SourceEncoding::Ch *str, size_t length)</td></tr>
<tr class="separator:ab5b308584e4bea9f59e0ba32ebd22b16"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aca5ed8f26946f49dc4b7b4143ea6398c"><td class="memTemplParams" colspan="2"><a class="anchor" id="aca5ed8f26946f49dc4b7b4143ea6398c"></a>
+<tr class="memitem:aca5ed8f26946f49dc4b7b4143ea6398c"><td class="memTemplParams" colspan="2"><a id="aca5ed8f26946f49dc4b7b4143ea6398c"></a>
template&lt;unsigned parseFlags&gt; </td></tr>
<tr class="memitem:aca5ed8f26946f49dc4b7b4143ea6398c"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Parse</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *str, size_t length)</td></tr>
<tr class="separator:aca5ed8f26946f49dc4b7b4143ea6398c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0bdf1d5fc1f6305af484b0269d72a93e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0bdf1d5fc1f6305af484b0269d72a93e"></a>
+<tr class="memitem:a0bdf1d5fc1f6305af484b0269d72a93e"><td class="memItemLeft" align="right" valign="top"><a id="a0bdf1d5fc1f6305af484b0269d72a93e"></a>
<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>Parse</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *str, size_t length)</td></tr>
<tr class="separator:a0bdf1d5fc1f6305af484b0269d72a93e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae3d86a4b7199f654aad627941280ddda"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae3d86a4b7199f654aad627941280ddda"></a>
+<tr class="memitem:ae3d86a4b7199f654aad627941280ddda"><td class="memTemplParams" colspan="2"><a id="ae3d86a4b7199f654aad627941280ddda"></a>
template&lt;unsigned parseFlags, typename SourceEncoding &gt; </td></tr>
<tr class="memitem:ae3d86a4b7199f654aad627941280ddda"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Parse</b> (const std::basic_string&lt; typename SourceEncoding::Ch &gt; &amp;str)</td></tr>
<tr class="separator:ae3d86a4b7199f654aad627941280ddda"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab5157ac18077576ea583ecfa69dda931"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab5157ac18077576ea583ecfa69dda931"></a>
+<tr class="memitem:ab5157ac18077576ea583ecfa69dda931"><td class="memTemplParams" colspan="2"><a id="ab5157ac18077576ea583ecfa69dda931"></a>
template&lt;unsigned parseFlags&gt; </td></tr>
<tr class="memitem:ab5157ac18077576ea583ecfa69dda931"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Parse</b> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;str)</td></tr>
<tr class="separator:ab5157ac18077576ea583ecfa69dda931"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a31c317d08baedd18ef914e56d848659b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31c317d08baedd18ef914e56d848659b"></a>
+<tr class="memitem:a31c317d08baedd18ef914e56d848659b"><td class="memItemLeft" align="right" valign="top"><a id="a31c317d08baedd18ef914e56d848659b"></a>
<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>Parse</b> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;str)</td></tr>
<tr class="separator:a31c317d08baedd18ef914e56d848659b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Handling parse errors</div></td></tr>
-<tr class="memitem:a2ab17089bd6249bf2a7959d56d35cb68"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ab17089bd6249bf2a7959d56d35cb68"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#a2ab17089bd6249bf2a7959d56d35cb68">HasParseError</a> () const </td></tr>
-<tr class="memdesc:a2ab17089bd6249bf2a7959d56d35cb68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether a parse error has occured in the last parsing. <br /></td></tr>
-<tr class="separator:a2ab17089bd6249bf2a7959d56d35cb68"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad97e64c123ec1e07ea62ab0a9ce80c00"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad97e64c123ec1e07ea62ab0a9ce80c00"></a>
-<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#ad97e64c123ec1e07ea62ab0a9ce80c00">GetParseError</a> () const </td></tr>
-<tr class="memdesc:ad97e64c123ec1e07ea62ab0a9ce80c00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> of last parsing. <br /></td></tr>
-<tr class="separator:ad97e64c123ec1e07ea62ab0a9ce80c00"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab791c05727d83f6834a1b916783dbc06"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab791c05727d83f6834a1b916783dbc06"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#ab791c05727d83f6834a1b916783dbc06">GetErrorOffset</a> () const </td></tr>
-<tr class="memdesc:ab791c05727d83f6834a1b916783dbc06"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the position of last parsing error in input, 0 otherwise. <br /></td></tr>
-<tr class="separator:ab791c05727d83f6834a1b916783dbc06"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0de48f0c884423b6fcfabc2e93942968"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#a0de48f0c884423b6fcfabc2e93942968">operator ParseResult</a> () const </td></tr>
-<tr class="memdesc:a0de48f0c884423b6fcfabc2e93942968"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implicit conversion to get the last parse result. <a href="#a0de48f0c884423b6fcfabc2e93942968">更多...</a><br /></td></tr>
-<tr class="separator:a0de48f0c884423b6fcfabc2e93942968"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7607bb42b51547e44bfd4cab35d8f20e"><td class="memItemLeft" align="right" valign="top"><a id="a7607bb42b51547e44bfd4cab35d8f20e"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#a7607bb42b51547e44bfd4cab35d8f20e">HasParseError</a> () const</td></tr>
+<tr class="memdesc:a7607bb42b51547e44bfd4cab35d8f20e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether a parse error has occured in the last parsing. <br /></td></tr>
+<tr class="separator:a7607bb42b51547e44bfd4cab35d8f20e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab94c280c079a6837a24951cb4d8f337b"><td class="memItemLeft" align="right" valign="top"><a id="ab94c280c079a6837a24951cb4d8f337b"></a>
+<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#ab94c280c079a6837a24951cb4d8f337b">GetParseError</a> () const</td></tr>
+<tr class="memdesc:ab94c280c079a6837a24951cb4d8f337b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> of last parsing. <br /></td></tr>
+<tr class="separator:ab94c280c079a6837a24951cb4d8f337b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af532179ca5ad5434a5e8af63f5da4c5f"><td class="memItemLeft" align="right" valign="top"><a id="af532179ca5ad5434a5e8af63f5da4c5f"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#af532179ca5ad5434a5e8af63f5da4c5f">GetErrorOffset</a> () const</td></tr>
+<tr class="memdesc:af532179ca5ad5434a5e8af63f5da4c5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the position of last parsing error in input, 0 otherwise. <br /></td></tr>
+<tr class="separator:af532179ca5ad5434a5e8af63f5da4c5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a36d19989c9221b27036675455516a974"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html#a36d19989c9221b27036675455516a974">operator ParseResult</a> () const</td></tr>
+<tr class="memdesc:a36d19989c9221b27036675455516a974"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implicit conversion to get the last parse result <a href="#a36d19989c9221b27036675455516a974">更多...</a><br /></td></tr>
+<tr class="separator:a36d19989c9221b27036675455516a974"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classrapidjson_1_1_generic_value"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classrapidjson_1_1_generic_value')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td></tr>
-<tr class="memitem:aeef0506cd1f8d703db4833c503f0657e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename Handler &gt; </td></tr>
-<tr class="memitem:aeef0506cd1f8d703db4833c503f0657e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e">Accept</a> (<a class="el" href="classrapidjson_1_1_handler.html">Handler</a> &amp;handler) const </td></tr>
-<tr class="memdesc:aeef0506cd1f8d703db4833c503f0657e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate events of this value to a <a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a>. <a href="#aeef0506cd1f8d703db4833c503f0657e">更多...</a><br /></td></tr>
-<tr class="separator:aeef0506cd1f8d703db4833c503f0657e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa646b271a6802e57c2987d133594690c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa646b271a6802e57c2987d133594690c"></a>
-<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetType</b> () const </td></tr>
-<tr class="separator:aa646b271a6802e57c2987d133594690c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2666f119b3c883b251f74156d41a8239 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2666f119b3c883b251f74156d41a8239"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsNull</b> () const </td></tr>
-<tr class="separator:a2666f119b3c883b251f74156d41a8239 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a47e0d6193602b02b0d2852ce7335c5ff inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47e0d6193602b02b0d2852ce7335c5ff"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsFalse</b> () const </td></tr>
-<tr class="separator:a47e0d6193602b02b0d2852ce7335c5ff inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a92f0524be583ff2b12c80587a57921d2 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92f0524be583ff2b12c80587a57921d2"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsTrue</b> () const </td></tr>
-<tr class="separator:a92f0524be583ff2b12c80587a57921d2 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9a3648431f0227759bade4363525619d inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a3648431f0227759bade4363525619d"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsBool</b> () const </td></tr>
-<tr class="separator:a9a3648431f0227759bade4363525619d inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4f805574820d5e87cecbd5f154c79387 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f805574820d5e87cecbd5f154c79387"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsObject</b> () const </td></tr>
-<tr class="separator:a4f805574820d5e87cecbd5f154c79387 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2233b836b63bca749efae44a6e39757d inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2233b836b63bca749efae44a6e39757d"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsArray</b> () const </td></tr>
-<tr class="separator:a2233b836b63bca749efae44a6e39757d inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a00dd3013a94baa577d51fff5ac7c1bb0 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00dd3013a94baa577d51fff5ac7c1bb0"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsNumber</b> () const </td></tr>
-<tr class="separator:a00dd3013a94baa577d51fff5ac7c1bb0 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4d224cb84bf46a3adc1286ee9d976028 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d224cb84bf46a3adc1286ee9d976028"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsInt</b> () const </td></tr>
-<tr class="separator:a4d224cb84bf46a3adc1286ee9d976028 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a48fbbb00daf332db840aa0f5644fc828 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a48fbbb00daf332db840aa0f5644fc828"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsUint</b> () const </td></tr>
-<tr class="separator:a48fbbb00daf332db840aa0f5644fc828 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0a25f4740338ecb965ae9675abd673e2 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a25f4740338ecb965ae9675abd673e2"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsInt64</b> () const </td></tr>
-<tr class="separator:a0a25f4740338ecb965ae9675abd673e2 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aec193a145bd3e2d21a7896e2faa2a608 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec193a145bd3e2d21a7896e2faa2a608"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsUint64</b> () const </td></tr>
-<tr class="separator:aec193a145bd3e2d21a7896e2faa2a608 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a61b8b363430c366384ee2bbdcb91bf20 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61b8b363430c366384ee2bbdcb91bf20"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsDouble</b> () const </td></tr>
-<tr class="separator:a61b8b363430c366384ee2bbdcb91bf20 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7821da23b34e3509a80469acfa1850f5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7821da23b34e3509a80469acfa1850f5"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsString</b> () const </td></tr>
-<tr class="separator:a7821da23b34e3509a80469acfa1850f5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3a7aca6411c7fb393e0a9129a2ba886d inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3a7aca6411c7fb393e0a9129a2ba886d"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsLosslessDouble</b> () const </td></tr>
-<tr class="separator:a3a7aca6411c7fb393e0a9129a2ba886d inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adaba7873c2c23ad2733c323040fee69f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adaba7873c2c23ad2733c323040fee69f"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsFloat</b> () const </td></tr>
-<tr class="separator:adaba7873c2c23ad2733c323040fee69f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acc8ea5f64c4bb4d32b5286e5e9f4d0e0 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc8ea5f64c4bb4d32b5286e5e9f4d0e0"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsLosslessFloat</b> () const </td></tr>
-<tr class="separator:acc8ea5f64c4bb4d32b5286e5e9f4d0e0 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6f0d90a3f269061a73d05999fd61473e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f0d90a3f269061a73d05999fd61473e"></a>
+<tr class="memitem:ad3ebfa73796f4db4836ec47c2261700c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename Handler &gt; </td></tr>
+<tr class="memitem:ad3ebfa73796f4db4836ec47c2261700c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c">Accept</a> (<a class="el" href="classrapidjson_1_1_handler.html">Handler</a> &amp;handler) const</td></tr>
+<tr class="memdesc:ad3ebfa73796f4db4836ec47c2261700c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate events of this value to a <a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a>. <a href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c">更多...</a><br /></td></tr>
+<tr class="separator:ad3ebfa73796f4db4836ec47c2261700c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad951d4bff60d37dd603ce68a36f1732a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="ad951d4bff60d37dd603ce68a36f1732a"></a>
+<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetType</b> () const</td></tr>
+<tr class="separator:ad951d4bff60d37dd603ce68a36f1732a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a064ecd709d167b07008acd79e941b68e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a064ecd709d167b07008acd79e941b68e"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsNull</b> () const</td></tr>
+<tr class="separator:a064ecd709d167b07008acd79e941b68e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5daef830cdbe445a6450be3feae2662a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a5daef830cdbe445a6450be3feae2662a"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsFalse</b> () const</td></tr>
+<tr class="separator:a5daef830cdbe445a6450be3feae2662a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1ad0fa486347a4e58804bb8af5fe1050 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a1ad0fa486347a4e58804bb8af5fe1050"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsTrue</b> () const</td></tr>
+<tr class="separator:a1ad0fa486347a4e58804bb8af5fe1050 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5e64a654ea30e182e4f0b4913c95a1d1 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a5e64a654ea30e182e4f0b4913c95a1d1"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsBool</b> () const</td></tr>
+<tr class="separator:a5e64a654ea30e182e4f0b4913c95a1d1 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab5ce40f269b788b6dac0c2d95cf58201 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="ab5ce40f269b788b6dac0c2d95cf58201"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsObject</b> () const</td></tr>
+<tr class="separator:ab5ce40f269b788b6dac0c2d95cf58201 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a917b849cbd1a0bda256e8841ca4ecf24 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a917b849cbd1a0bda256e8841ca4ecf24"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsArray</b> () const</td></tr>
+<tr class="separator:a917b849cbd1a0bda256e8841ca4ecf24 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac61d98a6f865040d8e250191e2a3a552 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="ac61d98a6f865040d8e250191e2a3a552"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsNumber</b> () const</td></tr>
+<tr class="separator:ac61d98a6f865040d8e250191e2a3a552 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac4f8e1cb46ffe319fad442265ab297b0 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="ac4f8e1cb46ffe319fad442265ab297b0"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsInt</b> () const</td></tr>
+<tr class="separator:ac4f8e1cb46ffe319fad442265ab297b0 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae7043304c8625aec1fc2df3363e7bb0a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="ae7043304c8625aec1fc2df3363e7bb0a"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsUint</b> () const</td></tr>
+<tr class="separator:ae7043304c8625aec1fc2df3363e7bb0a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afd2e8dbf6112c2ea007a6274dd37e472 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="afd2e8dbf6112c2ea007a6274dd37e472"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsInt64</b> () const</td></tr>
+<tr class="separator:afd2e8dbf6112c2ea007a6274dd37e472 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5444562cb25d10a2cb1c5ef5a86c3e49 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a5444562cb25d10a2cb1c5ef5a86c3e49"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsUint64</b> () const</td></tr>
+<tr class="separator:a5444562cb25d10a2cb1c5ef5a86c3e49 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adcdd96c0780ecd834a98d09bc402a1ea inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="adcdd96c0780ecd834a98d09bc402a1ea"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsDouble</b> () const</td></tr>
+<tr class="separator:adcdd96c0780ecd834a98d09bc402a1ea inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0dcb17e6f5ac240c4dfdb3aa97a394b8 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a0dcb17e6f5ac240c4dfdb3aa97a394b8"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsString</b> () const</td></tr>
+<tr class="separator:a0dcb17e6f5ac240c4dfdb3aa97a394b8 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8ffdbcf1cd70c87792f5d486313dc28c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a8ffdbcf1cd70c87792f5d486313dc28c"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsLosslessDouble</b> () const</td></tr>
+<tr class="separator:a8ffdbcf1cd70c87792f5d486313dc28c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a150726bc6f5a7af5bce9e9a8b76e0e98 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a150726bc6f5a7af5bce9e9a8b76e0e98"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsFloat</b> () const</td></tr>
+<tr class="separator:a150726bc6f5a7af5bce9e9a8b76e0e98 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6188d3ad8430b56ef45b9bd5633eafce inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a6188d3ad8430b56ef45b9bd5633eafce"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsLosslessFloat</b> () const</td></tr>
+<tr class="separator:a6188d3ad8430b56ef45b9bd5633eafce inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6f0d90a3f269061a73d05999fd61473e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a6f0d90a3f269061a73d05999fd61473e"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>SetNull</b> ()</td></tr>
<tr class="separator:a6f0d90a3f269061a73d05999fd61473e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a69d917b47799f63fc588bf294fa71483 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69d917b47799f63fc588bf294fa71483"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a69d917b47799f63fc588bf294fa71483">GetBool</a> () const </td></tr>
-<tr class="memdesc:a69d917b47799f63fc588bf294fa71483 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set boolean value. <br /></td></tr>
-<tr class="separator:a69d917b47799f63fc588bf294fa71483 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a78d80b935babeedbfa71914a8fe5baa7 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a78d80b935babeedbfa71914a8fe5baa7"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a78d80b935babeedbfa71914a8fe5baa7">GetBool</a> () const</td></tr>
+<tr class="memdesc:a78d80b935babeedbfa71914a8fe5baa7 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set boolean value <br /></td></tr>
+<tr class="separator:a78d80b935babeedbfa71914a8fe5baa7 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5623c9039977ca0daf394e5c12f10c2d inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a5623c9039977ca0daf394e5c12f10c2d">SetBool</a> (bool b)</td></tr>
<tr class="separator:a5623c9039977ca0daf394e5c12f10c2d inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7cb3cbaefe4fb99aaf9f155fb4ee039b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a7cb3cbaefe4fb99aaf9f155fb4ee039b">SetObject</a> ()</td></tr>
-<tr class="memdesc:a7cb3cbaefe4fb99aaf9f155fb4ee039b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as an empty object. <a href="#a7cb3cbaefe4fb99aaf9f155fb4ee039b">更多...</a><br /></td></tr>
+<tr class="memdesc:a7cb3cbaefe4fb99aaf9f155fb4ee039b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as an empty object. <a href="classrapidjson_1_1_generic_value.html#a7cb3cbaefe4fb99aaf9f155fb4ee039b">更多...</a><br /></td></tr>
<tr class="separator:a7cb3cbaefe4fb99aaf9f155fb4ee039b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acf5019b9002ebfd66a1191d19e986c7b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf5019b9002ebfd66a1191d19e986c7b"></a>
-<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#acf5019b9002ebfd66a1191d19e986c7b">MemberCount</a> () const </td></tr>
-<tr class="memdesc:acf5019b9002ebfd66a1191d19e986c7b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of members in the object. <br /></td></tr>
-<tr class="separator:acf5019b9002ebfd66a1191d19e986c7b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1f28a345c9b9c93c76abf695669e4378 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f28a345c9b9c93c76abf695669e4378"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a1f28a345c9b9c93c76abf695669e4378">ObjectEmpty</a> () const </td></tr>
-<tr class="memdesc:a1f28a345c9b9c93c76abf695669e4378 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the object is empty. <br /></td></tr>
-<tr class="separator:a1f28a345c9b9c93c76abf695669e4378 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8b7e47c57a20d0de0cd19eee799ebd88 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a8b7e47c57a20d0de0cd19eee799ebd88"></a>
+<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a8b7e47c57a20d0de0cd19eee799ebd88">MemberCount</a> () const</td></tr>
+<tr class="memdesc:a8b7e47c57a20d0de0cd19eee799ebd88 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of members in the object. <br /></td></tr>
+<tr class="separator:a8b7e47c57a20d0de0cd19eee799ebd88 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1f4835373e05abae52b91e1c6b7ec92c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a1f4835373e05abae52b91e1c6b7ec92c"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a1f4835373e05abae52b91e1c6b7ec92c">ObjectEmpty</a> () const</td></tr>
+<tr class="memdesc:a1f4835373e05abae52b91e1c6b7ec92c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the object is empty. <br /></td></tr>
+<tr class="separator:a1f4835373e05abae52b91e1c6b7ec92c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ec7fc7f221306925c7674dccbe02b07 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a8ec7fc7f221306925c7674dccbe02b07 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a8ec7fc7f221306925c7674dccbe02b07">operator[]</a> (T *name)</td></tr>
-<tr class="memdesc:a8ec7fc7f221306925c7674dccbe02b07 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a value from an object associated with the name. <a href="#a8ec7fc7f221306925c7674dccbe02b07">更多...</a><br /></td></tr>
+<tr class="memdesc:a8ec7fc7f221306925c7674dccbe02b07 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a value from an object associated with the name. <a href="classrapidjson_1_1_generic_value.html#a8ec7fc7f221306925c7674dccbe02b07">更多...</a><br /></td></tr>
<tr class="separator:a8ec7fc7f221306925c7674dccbe02b07 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a015a8559e69e0e6237ec5ce2f0b38f43 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a class="anchor" id="a015a8559e69e0e6237ec5ce2f0b38f43"></a>
+<tr class="memitem:a408ab1a7454dfa54917b92195f81622b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a id="a408ab1a7454dfa54917b92195f81622b"></a>
template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a015a8559e69e0e6237ec5ce2f0b38f43 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>operator[]</b> (T *name) const </td></tr>
-<tr class="separator:a015a8559e69e0e6237ec5ce2f0b38f43 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a408ab1a7454dfa54917b92195f81622b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>operator[]</b> (T *name) const</td></tr>
+<tr class="separator:a408ab1a7454dfa54917b92195f81622b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa62b57746c96ce3d264b2fe178196062 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
<tr class="memitem:aa62b57746c96ce3d264b2fe178196062 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aa62b57746c96ce3d264b2fe178196062">operator[]</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name)</td></tr>
-<tr class="memdesc:aa62b57746c96ce3d264b2fe178196062 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a value from an object associated with the name. <a href="#aa62b57746c96ce3d264b2fe178196062">更多...</a><br /></td></tr>
+<tr class="memdesc:aa62b57746c96ce3d264b2fe178196062 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a value from an object associated with the name. <a href="classrapidjson_1_1_generic_value.html#aa62b57746c96ce3d264b2fe178196062">更多...</a><br /></td></tr>
<tr class="separator:aa62b57746c96ce3d264b2fe178196062 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8f135403c71fa69ba164f019e1a51fd0 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8f135403c71fa69ba164f019e1a51fd0"></a>
+<tr class="memitem:a295506a024a28d02a2ddae9d0e47c58b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a id="a295506a024a28d02a2ddae9d0e47c58b"></a>
template&lt;typename SourceAllocator &gt; </td></tr>
-<tr class="memitem:a8f135403c71fa69ba164f019e1a51fd0 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>operator[]</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name) const </td></tr>
-<tr class="separator:a8f135403c71fa69ba164f019e1a51fd0 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4d337239ee3e2096462f6a36b9ab0811 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d337239ee3e2096462f6a36b9ab0811"></a>
+<tr class="memitem:a295506a024a28d02a2ddae9d0e47c58b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>operator[]</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name) const</td></tr>
+<tr class="separator:a295506a024a28d02a2ddae9d0e47c58b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4d337239ee3e2096462f6a36b9ab0811 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a4d337239ee3e2096462f6a36b9ab0811"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a4d337239ee3e2096462f6a36b9ab0811">operator[]</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name)</td></tr>
<tr class="memdesc:a4d337239ee3e2096462f6a36b9ab0811 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a value from an object associated with name (string object). <br /></td></tr>
<tr class="separator:a4d337239ee3e2096462f6a36b9ab0811 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4c05202c7f49309c9faffe98ff1e5878 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c05202c7f49309c9faffe98ff1e5878"></a>
-const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name) const </td></tr>
-<tr class="separator:a4c05202c7f49309c9faffe98ff1e5878 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a469c0cc3e72f846757fb64fa52fafee5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a469c0cc3e72f846757fb64fa52fafee5">MemberBegin</a> () const </td></tr>
-<tr class="memdesc:a469c0cc3e72f846757fb64fa52fafee5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Const member iterator. <a href="#a469c0cc3e72f846757fb64fa52fafee5">更多...</a><br /></td></tr>
-<tr class="separator:a469c0cc3e72f846757fb64fa52fafee5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a88d2c5b861cd8a6a14976456dfbc1f64 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a88d2c5b861cd8a6a14976456dfbc1f64">MemberEnd</a> () const </td></tr>
-<tr class="memdesc:a88d2c5b861cd8a6a14976456dfbc1f64 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Const <em>past-the-end</em> member iterator. <a href="#a88d2c5b861cd8a6a14976456dfbc1f64">更多...</a><br /></td></tr>
-<tr class="separator:a88d2c5b861cd8a6a14976456dfbc1f64 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a66b362b364e57f17ae56ea1d41eb4883 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a66b362b364e57f17ae56ea1d41eb4883"></a>
+const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name) const</td></tr>
+<tr class="separator:a66b362b364e57f17ae56ea1d41eb4883 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae89a77887aa3eb1f1f913727cbff6786 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ae89a77887aa3eb1f1f913727cbff6786">MemberBegin</a> () const</td></tr>
+<tr class="memdesc:ae89a77887aa3eb1f1f913727cbff6786 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Const member iterator <a href="classrapidjson_1_1_generic_value.html#ae89a77887aa3eb1f1f913727cbff6786">更多...</a><br /></td></tr>
+<tr class="separator:ae89a77887aa3eb1f1f913727cbff6786 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a34ee3d75a7aa308043fb34b0743bfe7c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c">MemberEnd</a> () const</td></tr>
+<tr class="memdesc:a34ee3d75a7aa308043fb34b0743bfe7c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Const <em>past-the-end</em> member iterator <a href="classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c">更多...</a><br /></td></tr>
+<tr class="separator:a34ee3d75a7aa308043fb34b0743bfe7c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93f0f317f397c36a24a0f3c32648623a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a">MemberBegin</a> ()</td></tr>
-<tr class="memdesc:a93f0f317f397c36a24a0f3c32648623a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Member iterator. <a href="#a93f0f317f397c36a24a0f3c32648623a">更多...</a><br /></td></tr>
+<tr class="memdesc:a93f0f317f397c36a24a0f3c32648623a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Member iterator <a href="classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a">更多...</a><br /></td></tr>
<tr class="separator:a93f0f317f397c36a24a0f3c32648623a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb109ae9f12615efadf9277cb5e9c4ee inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee">MemberEnd</a> ()</td></tr>
-<tr class="memdesc:adb109ae9f12615efadf9277cb5e9c4ee inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight"><em>Past-the-end</em> member iterator <a href="#adb109ae9f12615efadf9277cb5e9c4ee">更多...</a><br /></td></tr>
+<tr class="memdesc:adb109ae9f12615efadf9277cb5e9c4ee inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight"><em>Past-the-end</em> member iterator <a href="classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee">更多...</a><br /></td></tr>
<tr class="separator:adb109ae9f12615efadf9277cb5e9c4ee inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af17b9b6ba6a9fb4e02d2dced5aa0ee0c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#af17b9b6ba6a9fb4e02d2dced5aa0ee0c">HasMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *name) const </td></tr>
-<tr class="memdesc:af17b9b6ba6a9fb4e02d2dced5aa0ee0c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a member exists in the object. <a href="#af17b9b6ba6a9fb4e02d2dced5aa0ee0c">更多...</a><br /></td></tr>
-<tr class="separator:af17b9b6ba6a9fb4e02d2dced5aa0ee0c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afb1942ef13566484e1806689834a053f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#afb1942ef13566484e1806689834a053f">HasMember</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name) const </td></tr>
-<tr class="memdesc:afb1942ef13566484e1806689834a053f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a member exists in the object with string object. <a href="#afb1942ef13566484e1806689834a053f">更多...</a><br /></td></tr>
-<tr class="separator:afb1942ef13566484e1806689834a053f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a548e6c8a99c525573d933933610977cb inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
-<tr class="memitem:a548e6c8a99c525573d933933610977cb inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a548e6c8a99c525573d933933610977cb">HasMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name) const </td></tr>
-<tr class="memdesc:a548e6c8a99c525573d933933610977cb inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a member exists in the object with <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> name. <a href="#a548e6c8a99c525573d933933610977cb">更多...</a><br /></td></tr>
-<tr class="separator:a548e6c8a99c525573d933933610977cb inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa78e2eb30c6b918826eccf03f04f166b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b">HasMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *name) const</td></tr>
+<tr class="memdesc:aa78e2eb30c6b918826eccf03f04f166b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a member exists in the object. <a href="classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b">更多...</a><br /></td></tr>
+<tr class="separator:aa78e2eb30c6b918826eccf03f04f166b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9b3b30acbe60d7a5b105afa05c1ddfb0 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a9b3b30acbe60d7a5b105afa05c1ddfb0">HasMember</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name) const</td></tr>
+<tr class="memdesc:a9b3b30acbe60d7a5b105afa05c1ddfb0 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a member exists in the object with string object. <a href="classrapidjson_1_1_generic_value.html#a9b3b30acbe60d7a5b105afa05c1ddfb0">更多...</a><br /></td></tr>
+<tr class="separator:a9b3b30acbe60d7a5b105afa05c1ddfb0 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a794129b8adffb97d123306a0c0ccaf71 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
+<tr class="memitem:a794129b8adffb97d123306a0c0ccaf71 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a794129b8adffb97d123306a0c0ccaf71">HasMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name) const</td></tr>
+<tr class="memdesc:a794129b8adffb97d123306a0c0ccaf71 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a member exists in the object with <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> name. <a href="classrapidjson_1_1_generic_value.html#a794129b8adffb97d123306a0c0ccaf71">更多...</a><br /></td></tr>
+<tr class="separator:a794129b8adffb97d123306a0c0ccaf71 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad22fdeac87ec6c370dd43075d3586811 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811">FindMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *name)</td></tr>
-<tr class="memdesc:ad22fdeac87ec6c370dd43075d3586811 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find member by name. <a href="#ad22fdeac87ec6c370dd43075d3586811">更多...</a><br /></td></tr>
+<tr class="memdesc:ad22fdeac87ec6c370dd43075d3586811 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find member by name. <a href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811">更多...</a><br /></td></tr>
<tr class="separator:ad22fdeac87ec6c370dd43075d3586811 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aad5c657dc7d79e128bec55eddc5a4164 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad5c657dc7d79e128bec55eddc5a4164"></a>
-<a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>FindMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *name) const </td></tr>
-<tr class="separator:aad5c657dc7d79e128bec55eddc5a4164 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4960b901fdd3e8f7bf766e471390a0b0 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a4960b901fdd3e8f7bf766e471390a0b0"></a>
+<a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>FindMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *name) const</td></tr>
+<tr class="separator:a4960b901fdd3e8f7bf766e471390a0b0 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d75bf0c6c0fa4f8d340a4236e98539b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
<tr class="memitem:a8d75bf0c6c0fa4f8d340a4236e98539b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a8d75bf0c6c0fa4f8d340a4236e98539b">FindMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name)</td></tr>
-<tr class="memdesc:a8d75bf0c6c0fa4f8d340a4236e98539b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find member by name. <a href="#a8d75bf0c6c0fa4f8d340a4236e98539b">更多...</a><br /></td></tr>
+<tr class="memdesc:a8d75bf0c6c0fa4f8d340a4236e98539b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find member by name. <a href="classrapidjson_1_1_generic_value.html#a8d75bf0c6c0fa4f8d340a4236e98539b">更多...</a><br /></td></tr>
<tr class="separator:a8d75bf0c6c0fa4f8d340a4236e98539b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af24703a7474efe0998a35002a24fe622 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a class="anchor" id="af24703a7474efe0998a35002a24fe622"></a>
+<tr class="memitem:a90916413828ce8da6868051236313583 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a id="a90916413828ce8da6868051236313583"></a>
template&lt;typename SourceAllocator &gt; </td></tr>
-<tr class="memitem:af24703a7474efe0998a35002a24fe622 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><b>FindMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name) const </td></tr>
-<tr class="separator:af24703a7474efe0998a35002a24fe622 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a90916413828ce8da6868051236313583 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><b>FindMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name) const</td></tr>
+<tr class="separator:a90916413828ce8da6868051236313583 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a278b420ea75b0ec18d88d4c9e9199d62 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a278b420ea75b0ec18d88d4c9e9199d62">FindMember</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name)</td></tr>
-<tr class="memdesc:a278b420ea75b0ec18d88d4c9e9199d62 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find member by string object name. <a href="#a278b420ea75b0ec18d88d4c9e9199d62">更多...</a><br /></td></tr>
+<tr class="memdesc:a278b420ea75b0ec18d88d4c9e9199d62 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find member by string object name. <a href="classrapidjson_1_1_generic_value.html#a278b420ea75b0ec18d88d4c9e9199d62">更多...</a><br /></td></tr>
<tr class="separator:a278b420ea75b0ec18d88d4c9e9199d62 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad2b3832cef0c74490de72954f8891a90 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2b3832cef0c74490de72954f8891a90"></a>
-<a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>FindMember</b> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name) const </td></tr>
-<tr class="separator:ad2b3832cef0c74490de72954f8891a90 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac38ba24b67587939ff4d76ab65340d11 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="ac38ba24b67587939ff4d76ab65340d11"></a>
+<a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>FindMember</b> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name) const</td></tr>
+<tr class="separator:ac38ba24b67587939ff4d76ab65340d11 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab018d734d189532b27943bc45776ba68 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68">AddMember</a> (<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;name, <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;value, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:ab018d734d189532b27943bc45776ba68 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a member (name-value pair) to the object. <a href="#ab018d734d189532b27943bc45776ba68">更多...</a><br /></td></tr>
+<tr class="memdesc:ab018d734d189532b27943bc45776ba68 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a member (name-value pair) to the object. <a href="classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68">更多...</a><br /></td></tr>
<tr class="separator:ab018d734d189532b27943bc45776ba68 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad290f179591025e871bedbbac89ac276 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad290f179591025e871bedbbac89ac276">AddMember</a> (<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;name, <a class="el" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a> value, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:ad290f179591025e871bedbbac89ac276 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a constant string value as member (name-value pair) to the object. <a href="#ad290f179591025e871bedbbac89ac276">更多...</a><br /></td></tr>
+<tr class="memdesc:ad290f179591025e871bedbbac89ac276 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a constant string value as member (name-value pair) to the object. <a href="classrapidjson_1_1_generic_value.html#ad290f179591025e871bedbbac89ac276">更多...</a><br /></td></tr>
<tr class="separator:ad290f179591025e871bedbbac89ac276 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a578e35f3350717db2aae534969b2346a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a578e35f3350717db2aae534969b2346a">AddMember</a> (<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;name, std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;value, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:a578e35f3350717db2aae534969b2346a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a string object as member (name-value pair) to the object. <a href="#a578e35f3350717db2aae534969b2346a">更多...</a><br /></td></tr>
+<tr class="memdesc:a578e35f3350717db2aae534969b2346a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a string object as member (name-value pair) to the object. <a href="classrapidjson_1_1_generic_value.html#a578e35f3350717db2aae534969b2346a">更多...</a><br /></td></tr>
<tr class="separator:a578e35f3350717db2aae534969b2346a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab705cb56bfb380005704cda2d0edf168 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ab705cb56bfb380005704cda2d0edf168 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ab705cb56bfb380005704cda2d0edf168">AddMember</a> (<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;name, T value, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:ab705cb56bfb380005704cda2d0edf168 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add any primitive value as member (name-value pair) to the object. <a href="#ab705cb56bfb380005704cda2d0edf168">更多...</a><br /></td></tr>
+<tr class="memdesc:ab705cb56bfb380005704cda2d0edf168 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add any primitive value as member (name-value pair) to the object. <a href="classrapidjson_1_1_generic_value.html#ab705cb56bfb380005704cda2d0edf168">更多...</a><br /></td></tr>
<tr class="separator:ab705cb56bfb380005704cda2d0edf168 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85dc131bdad8077ce970d580d333d15a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a85dc131bdad8077ce970d580d333d15a">AddMember</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a> name, <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;value, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:a85dc131bdad8077ce970d580d333d15a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a member (name-value pair) to the object. <a href="#a85dc131bdad8077ce970d580d333d15a">更多...</a><br /></td></tr>
+<tr class="memdesc:a85dc131bdad8077ce970d580d333d15a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a member (name-value pair) to the object. <a href="classrapidjson_1_1_generic_value.html#a85dc131bdad8077ce970d580d333d15a">更多...</a><br /></td></tr>
<tr class="separator:a85dc131bdad8077ce970d580d333d15a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ccb4736d0f2ec07f06f630d8fe54f8d inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a2ccb4736d0f2ec07f06f630d8fe54f8d">AddMember</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a> name, <a class="el" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a> value, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:a2ccb4736d0f2ec07f06f630d8fe54f8d inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a constant string value as member (name-value pair) to the object. <a href="#a2ccb4736d0f2ec07f06f630d8fe54f8d">更多...</a><br /></td></tr>
+<tr class="memdesc:a2ccb4736d0f2ec07f06f630d8fe54f8d inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a constant string value as member (name-value pair) to the object. <a href="classrapidjson_1_1_generic_value.html#a2ccb4736d0f2ec07f06f630d8fe54f8d">更多...</a><br /></td></tr>
<tr class="separator:a2ccb4736d0f2ec07f06f630d8fe54f8d inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa70ada250f3a0c5aeee0ce138d136b06 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aa70ada250f3a0c5aeee0ce138d136b06 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aa70ada250f3a0c5aeee0ce138d136b06">AddMember</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a> name, T value, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:aa70ada250f3a0c5aeee0ce138d136b06 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add any primitive value as member (name-value pair) to the object. <a href="#aa70ada250f3a0c5aeee0ce138d136b06">更多...</a><br /></td></tr>
+<tr class="memdesc:aa70ada250f3a0c5aeee0ce138d136b06 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add any primitive value as member (name-value pair) to the object. <a href="classrapidjson_1_1_generic_value.html#aa70ada250f3a0c5aeee0ce138d136b06">更多...</a><br /></td></tr>
<tr class="separator:aa70ada250f3a0c5aeee0ce138d136b06 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68d8d197ae1fb83d4dc202f9812af4cc inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a68d8d197ae1fb83d4dc202f9812af4cc">RemoveAllMembers</a> ()</td></tr>
-<tr class="memdesc:a68d8d197ae1fb83d4dc202f9812af4cc inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove all members in the object. <a href="#a68d8d197ae1fb83d4dc202f9812af4cc">更多...</a><br /></td></tr>
+<tr class="memdesc:a68d8d197ae1fb83d4dc202f9812af4cc inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove all members in the object. <a href="classrapidjson_1_1_generic_value.html#a68d8d197ae1fb83d4dc202f9812af4cc">更多...</a><br /></td></tr>
<tr class="separator:a68d8d197ae1fb83d4dc202f9812af4cc inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa60074f72a6d1651828a104b0c6387b1 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aa60074f72a6d1651828a104b0c6387b1">RemoveMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *name)</td></tr>
-<tr class="memdesc:aa60074f72a6d1651828a104b0c6387b1 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a member in object by its name. <a href="#aa60074f72a6d1651828a104b0c6387b1">更多...</a><br /></td></tr>
+<tr class="memdesc:aa60074f72a6d1651828a104b0c6387b1 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a member in object by its name. <a href="classrapidjson_1_1_generic_value.html#aa60074f72a6d1651828a104b0c6387b1">更多...</a><br /></td></tr>
<tr class="separator:aa60074f72a6d1651828a104b0c6387b1 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a52b7b54f6fe4f4885690f6fc60862f53 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a52b7b54f6fe4f4885690f6fc60862f53"></a>
+<tr class="memitem:a52b7b54f6fe4f4885690f6fc60862f53 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a52b7b54f6fe4f4885690f6fc60862f53"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>RemoveMember</b> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name)</td></tr>
<tr class="separator:a52b7b54f6fe4f4885690f6fc60862f53 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a403b63e001a16eeff42348a736b9f749 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a class="anchor" id="a403b63e001a16eeff42348a736b9f749"></a>
+<tr class="memitem:a403b63e001a16eeff42348a736b9f749 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a id="a403b63e001a16eeff42348a736b9f749"></a>
template&lt;typename SourceAllocator &gt; </td></tr>
<tr class="memitem:a403b63e001a16eeff42348a736b9f749 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>RemoveMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name)</td></tr>
<tr class="separator:a403b63e001a16eeff42348a736b9f749 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af91573ce61d798f0bc5dc88b00742697 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#af91573ce61d798f0bc5dc88b00742697">RemoveMember</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a> m)</td></tr>
-<tr class="memdesc:af91573ce61d798f0bc5dc88b00742697 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a member in object by iterator. <a href="#af91573ce61d798f0bc5dc88b00742697">更多...</a><br /></td></tr>
+<tr class="memdesc:af91573ce61d798f0bc5dc88b00742697 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a member in object by iterator. <a href="classrapidjson_1_1_generic_value.html#af91573ce61d798f0bc5dc88b00742697">更多...</a><br /></td></tr>
<tr class="separator:af91573ce61d798f0bc5dc88b00742697 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a163e60b101e5ae534597c050a6eba511 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a163e60b101e5ae534597c050a6eba511">EraseMember</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a> pos)</td></tr>
-<tr class="memdesc:a163e60b101e5ae534597c050a6eba511 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a member from an object by iterator. <a href="#a163e60b101e5ae534597c050a6eba511">更多...</a><br /></td></tr>
+<tr class="memdesc:a163e60b101e5ae534597c050a6eba511 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a member from an object by iterator. <a href="classrapidjson_1_1_generic_value.html#a163e60b101e5ae534597c050a6eba511">更多...</a><br /></td></tr>
<tr class="separator:a163e60b101e5ae534597c050a6eba511 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a121e40b5944be337189eb63b98b7e6ce inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a121e40b5944be337189eb63b98b7e6ce">EraseMember</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a> first, <a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a> last)</td></tr>
-<tr class="memdesc:a121e40b5944be337189eb63b98b7e6ce inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove members in the range [first, last) from an object. <a href="#a121e40b5944be337189eb63b98b7e6ce">更多...</a><br /></td></tr>
+<tr class="memdesc:a121e40b5944be337189eb63b98b7e6ce inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove members in the range [first, last) from an object. <a href="classrapidjson_1_1_generic_value.html#a121e40b5944be337189eb63b98b7e6ce">更多...</a><br /></td></tr>
<tr class="separator:a121e40b5944be337189eb63b98b7e6ce inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac51a3b3046aaa12aa1d88ac876a28cec inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ac51a3b3046aaa12aa1d88ac876a28cec">EraseMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *name)</td></tr>
-<tr class="memdesc:ac51a3b3046aaa12aa1d88ac876a28cec inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Erase a member in object by its name. <a href="#ac51a3b3046aaa12aa1d88ac876a28cec">更多...</a><br /></td></tr>
+<tr class="memdesc:ac51a3b3046aaa12aa1d88ac876a28cec inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Erase a member in object by its name. <a href="classrapidjson_1_1_generic_value.html#ac51a3b3046aaa12aa1d88ac876a28cec">更多...</a><br /></td></tr>
<tr class="separator:ac51a3b3046aaa12aa1d88ac876a28cec inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af930563f804086df25f70bb5f1de8e6a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af930563f804086df25f70bb5f1de8e6a"></a>
+<tr class="memitem:af930563f804086df25f70bb5f1de8e6a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="af930563f804086df25f70bb5f1de8e6a"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EraseMember</b> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name)</td></tr>
<tr class="separator:af930563f804086df25f70bb5f1de8e6a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a27db22089fc69aacda8309c593ed9812 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a class="anchor" id="a27db22089fc69aacda8309c593ed9812"></a>
+<tr class="memitem:a27db22089fc69aacda8309c593ed9812 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a id="a27db22089fc69aacda8309c593ed9812"></a>
template&lt;typename SourceAllocator &gt; </td></tr>
<tr class="memitem:a27db22089fc69aacda8309c593ed9812 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>EraseMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name)</td></tr>
<tr class="separator:a27db22089fc69aacda8309c593ed9812 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a538446f8bdb8e7765d1705d8d157358a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a538446f8bdb8e7765d1705d8d157358a"></a>
+<tr class="memitem:a538446f8bdb8e7765d1705d8d157358a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a538446f8bdb8e7765d1705d8d157358a"></a>
<a class="el" href="classrapidjson_1_1_generic_object.html">Object</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetObject</b> ()</td></tr>
<tr class="separator:a538446f8bdb8e7765d1705d8d157358a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0faeebacf8592f438654224f2b9f2fe7 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0faeebacf8592f438654224f2b9f2fe7"></a>
-<a class="el" href="classrapidjson_1_1_generic_object.html">ConstObject</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetObject</b> () const </td></tr>
-<tr class="separator:a0faeebacf8592f438654224f2b9f2fe7 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a35d6a245412e8ce81c5b5d6b9d9e881c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a35d6a245412e8ce81c5b5d6b9d9e881c"></a>
+<a class="el" href="classrapidjson_1_1_generic_object.html">ConstObject</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetObject</b> () const</td></tr>
+<tr class="separator:a35d6a245412e8ce81c5b5d6b9d9e881c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25069c76d045b058e54835d8c467c789 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a25069c76d045b058e54835d8c467c789">SetArray</a> ()</td></tr>
-<tr class="memdesc:a25069c76d045b058e54835d8c467c789 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as an empty array. <a href="#a25069c76d045b058e54835d8c467c789">更多...</a><br /></td></tr>
+<tr class="memdesc:a25069c76d045b058e54835d8c467c789 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as an empty array. <a href="classrapidjson_1_1_generic_value.html#a25069c76d045b058e54835d8c467c789">更多...</a><br /></td></tr>
<tr class="separator:a25069c76d045b058e54835d8c467c789 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2e6e849cfb368a3fa708f8bcf1d56ec9 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e6e849cfb368a3fa708f8bcf1d56ec9"></a>
-<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a2e6e849cfb368a3fa708f8bcf1d56ec9">Size</a> () const </td></tr>
-<tr class="memdesc:a2e6e849cfb368a3fa708f8bcf1d56ec9 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of elements in array. <br /></td></tr>
-<tr class="separator:a2e6e849cfb368a3fa708f8bcf1d56ec9 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6cbb8a305fdc40beb83bee2b99ac5b59 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cbb8a305fdc40beb83bee2b99ac5b59"></a>
-<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cbb8a305fdc40beb83bee2b99ac5b59">Capacity</a> () const </td></tr>
-<tr class="memdesc:a6cbb8a305fdc40beb83bee2b99ac5b59 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the capacity of array. <br /></td></tr>
-<tr class="separator:a6cbb8a305fdc40beb83bee2b99ac5b59 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a08bf77a430b865404c57a93d8f0f6d3d inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a08bf77a430b865404c57a93d8f0f6d3d"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a08bf77a430b865404c57a93d8f0f6d3d">Empty</a> () const </td></tr>
-<tr class="memdesc:a08bf77a430b865404c57a93d8f0f6d3d inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the array is empty. <br /></td></tr>
-<tr class="separator:a08bf77a430b865404c57a93d8f0f6d3d inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a799a8a2503989f486f3fc7a660266555 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a799a8a2503989f486f3fc7a660266555"></a>
+<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a799a8a2503989f486f3fc7a660266555">Size</a> () const</td></tr>
+<tr class="memdesc:a799a8a2503989f486f3fc7a660266555 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of elements in array. <br /></td></tr>
+<tr class="separator:a799a8a2503989f486f3fc7a660266555 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a812e5c07f74a90566e7636330740eb6a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a812e5c07f74a90566e7636330740eb6a"></a>
+<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a812e5c07f74a90566e7636330740eb6a">Capacity</a> () const</td></tr>
+<tr class="memdesc:a812e5c07f74a90566e7636330740eb6a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the capacity of array. <br /></td></tr>
+<tr class="separator:a812e5c07f74a90566e7636330740eb6a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad08a62c65a793ab1d0abe7eac03776fd inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="ad08a62c65a793ab1d0abe7eac03776fd"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad08a62c65a793ab1d0abe7eac03776fd">Empty</a> () const</td></tr>
+<tr class="memdesc:ad08a62c65a793ab1d0abe7eac03776fd inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the array is empty. <br /></td></tr>
+<tr class="separator:ad08a62c65a793ab1d0abe7eac03776fd inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa56b69bac5423622eff6998ce4802106 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aa56b69bac5423622eff6998ce4802106">Clear</a> ()</td></tr>
-<tr class="memdesc:aa56b69bac5423622eff6998ce4802106 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove all elements in the array. <a href="#aa56b69bac5423622eff6998ce4802106">更多...</a><br /></td></tr>
+<tr class="memdesc:aa56b69bac5423622eff6998ce4802106 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove all elements in the array. <a href="classrapidjson_1_1_generic_value.html#aa56b69bac5423622eff6998ce4802106">更多...</a><br /></td></tr>
<tr class="separator:aa56b69bac5423622eff6998ce4802106 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc312de070d03a63e6c692c9c61db156 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#adc312de070d03a63e6c692c9c61db156">operator[]</a> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index)</td></tr>
-<tr class="memdesc:adc312de070d03a63e6c692c9c61db156 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get an element from array by index. <a href="#adc312de070d03a63e6c692c9c61db156">更多...</a><br /></td></tr>
+<tr class="memdesc:adc312de070d03a63e6c692c9c61db156 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get an element from array by index. <a href="classrapidjson_1_1_generic_value.html#adc312de070d03a63e6c692c9c61db156">更多...</a><br /></td></tr>
<tr class="separator:adc312de070d03a63e6c692c9c61db156 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0b02962601636f6b040c6451ec7a3778 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b02962601636f6b040c6451ec7a3778"></a>
-const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) const </td></tr>
-<tr class="separator:a0b02962601636f6b040c6451ec7a3778 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1bac9a1db05bb5825bc0adaeabf4775b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a1bac9a1db05bb5825bc0adaeabf4775b"></a>
+const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) const</td></tr>
+<tr class="separator:a1bac9a1db05bb5825bc0adaeabf4775b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d1040c479d89edb261db86400ebe603 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a06ce0e14ec83b53c83e1b1699b53a25e">ValueIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603">Begin</a> ()</td></tr>
-<tr class="memdesc:a8d1040c479d89edb261db86400ebe603 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Element iterator. <a href="#a8d1040c479d89edb261db86400ebe603">更多...</a><br /></td></tr>
+<tr class="memdesc:a8d1040c479d89edb261db86400ebe603 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Element iterator <a href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603">更多...</a><br /></td></tr>
<tr class="separator:a8d1040c479d89edb261db86400ebe603 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf58b9337ccc0cdf16aa9634c4645109 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a06ce0e14ec83b53c83e1b1699b53a25e">ValueIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109">End</a> ()</td></tr>
-<tr class="memdesc:aaf58b9337ccc0cdf16aa9634c4645109 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight"><em>Past-the-end</em> element iterator <a href="#aaf58b9337ccc0cdf16aa9634c4645109">更多...</a><br /></td></tr>
+<tr class="memdesc:aaf58b9337ccc0cdf16aa9634c4645109 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight"><em>Past-the-end</em> element iterator <a href="classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109">更多...</a><br /></td></tr>
<tr class="separator:aaf58b9337ccc0cdf16aa9634c4645109 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abc8945d3411c6ce583d322753ce028e1 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#abc8945d3411c6ce583d322753ce028e1">Begin</a> () const </td></tr>
-<tr class="memdesc:abc8945d3411c6ce583d322753ce028e1 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant element iterator. <a href="#abc8945d3411c6ce583d322753ce028e1">更多...</a><br /></td></tr>
-<tr class="separator:abc8945d3411c6ce583d322753ce028e1 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad2d9786831d721cf8f1bf0dbdf86404a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad2d9786831d721cf8f1bf0dbdf86404a">End</a> () const </td></tr>
-<tr class="memdesc:ad2d9786831d721cf8f1bf0dbdf86404a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant <em>past-the-end</em> element iterator. <a href="#ad2d9786831d721cf8f1bf0dbdf86404a">更多...</a><br /></td></tr>
-<tr class="separator:ad2d9786831d721cf8f1bf0dbdf86404a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a07d947971c59c9ce884b3c5205c9238f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a07d947971c59c9ce884b3c5205c9238f">Begin</a> () const</td></tr>
+<tr class="memdesc:a07d947971c59c9ce884b3c5205c9238f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant element iterator <a href="classrapidjson_1_1_generic_value.html#a07d947971c59c9ce884b3c5205c9238f">更多...</a><br /></td></tr>
+<tr class="separator:a07d947971c59c9ce884b3c5205c9238f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abdd6a3b703a03aada4c186a2365698e7 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#abdd6a3b703a03aada4c186a2365698e7">End</a> () const</td></tr>
+<tr class="memdesc:abdd6a3b703a03aada4c186a2365698e7 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant <em>past-the-end</em> element iterator <a href="classrapidjson_1_1_generic_value.html#abdd6a3b703a03aada4c186a2365698e7">更多...</a><br /></td></tr>
+<tr class="separator:abdd6a3b703a03aada4c186a2365698e7 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17971ba2bcd4eb1716098fdfe9182386 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a17971ba2bcd4eb1716098fdfe9182386">Reserve</a> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> newCapacity, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:a17971ba2bcd4eb1716098fdfe9182386 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request the array to have enough capacity to store elements. <a href="#a17971ba2bcd4eb1716098fdfe9182386">更多...</a><br /></td></tr>
+<tr class="memdesc:a17971ba2bcd4eb1716098fdfe9182386 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request the array to have enough capacity to store elements. <a href="classrapidjson_1_1_generic_value.html#a17971ba2bcd4eb1716098fdfe9182386">更多...</a><br /></td></tr>
<tr class="separator:a17971ba2bcd4eb1716098fdfe9182386 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ec9f34bef5890241d4bc882b73b1db4 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a0ec9f34bef5890241d4bc882b73b1db4">PushBack</a> (<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;value, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:a0ec9f34bef5890241d4bc882b73b1db4 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> at the end of the array. <a href="#a0ec9f34bef5890241d4bc882b73b1db4">更多...</a><br /></td></tr>
+<tr class="memdesc:a0ec9f34bef5890241d4bc882b73b1db4 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> at the end of the array. <a href="classrapidjson_1_1_generic_value.html#a0ec9f34bef5890241d4bc882b73b1db4">更多...</a><br /></td></tr>
<tr class="separator:a0ec9f34bef5890241d4bc882b73b1db4 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41946915cb219a684f6ffc9341efee22 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a41946915cb219a684f6ffc9341efee22">PushBack</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a> value, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:a41946915cb219a684f6ffc9341efee22 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a constant string reference at the end of the array. <a href="#a41946915cb219a684f6ffc9341efee22">更多...</a><br /></td></tr>
+<tr class="memdesc:a41946915cb219a684f6ffc9341efee22 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a constant string reference at the end of the array. <a href="classrapidjson_1_1_generic_value.html#a41946915cb219a684f6ffc9341efee22">更多...</a><br /></td></tr>
<tr class="separator:a41946915cb219a684f6ffc9341efee22 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa59273e0adfe2a9d0e6ac29d2537d9ed inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:aa59273e0adfe2a9d0e6ac29d2537d9ed inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aa59273e0adfe2a9d0e6ac29d2537d9ed">PushBack</a> (T value, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:aa59273e0adfe2a9d0e6ac29d2537d9ed inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a primitive value at the end of the array. <a href="#aa59273e0adfe2a9d0e6ac29d2537d9ed">更多...</a><br /></td></tr>
+<tr class="memdesc:aa59273e0adfe2a9d0e6ac29d2537d9ed inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a primitive value at the end of the array. <a href="classrapidjson_1_1_generic_value.html#aa59273e0adfe2a9d0e6ac29d2537d9ed">更多...</a><br /></td></tr>
<tr class="separator:aa59273e0adfe2a9d0e6ac29d2537d9ed inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae475f31fb851138ced40e2ff6cb43ca6 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ae475f31fb851138ced40e2ff6cb43ca6">PopBack</a> ()</td></tr>
-<tr class="memdesc:ae475f31fb851138ced40e2ff6cb43ca6 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove the last element in the array. <a href="#ae475f31fb851138ced40e2ff6cb43ca6">更多...</a><br /></td></tr>
+<tr class="memdesc:ae475f31fb851138ced40e2ff6cb43ca6 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove the last element in the array. <a href="classrapidjson_1_1_generic_value.html#ae475f31fb851138ced40e2ff6cb43ca6">更多...</a><br /></td></tr>
<tr class="separator:ae475f31fb851138ced40e2ff6cb43ca6 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a68ba73eeda7b9429ca05267065d3cc99 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a06ce0e14ec83b53c83e1b1699b53a25e">ValueIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99">Erase</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a> pos)</td></tr>
-<tr class="memdesc:a68ba73eeda7b9429ca05267065d3cc99 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove an element of array by iterator. <a href="#a68ba73eeda7b9429ca05267065d3cc99">更多...</a><br /></td></tr>
+<tr class="memdesc:a68ba73eeda7b9429ca05267065d3cc99 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove an element of array by iterator. <a href="classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99">更多...</a><br /></td></tr>
<tr class="separator:a68ba73eeda7b9429ca05267065d3cc99 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a916f443e02f9379d8fbde49a4d440f61 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a06ce0e14ec83b53c83e1b1699b53a25e">ValueIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a916f443e02f9379d8fbde49a4d440f61">Erase</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a> first, <a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a> last)</td></tr>
-<tr class="memdesc:a916f443e02f9379d8fbde49a4d440f61 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove elements in the range [first, last) of the array. <a href="#a916f443e02f9379d8fbde49a4d440f61">更多...</a><br /></td></tr>
+<tr class="memdesc:a916f443e02f9379d8fbde49a4d440f61 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove elements in the range [first, last) of the array. <a href="classrapidjson_1_1_generic_value.html#a916f443e02f9379d8fbde49a4d440f61">更多...</a><br /></td></tr>
<tr class="separator:a916f443e02f9379d8fbde49a4d440f61 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a252af37875a1115f107082263af2cb3c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a252af37875a1115f107082263af2cb3c"></a>
+<tr class="memitem:a252af37875a1115f107082263af2cb3c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a252af37875a1115f107082263af2cb3c"></a>
<a class="el" href="classrapidjson_1_1_generic_array.html">Array</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetArray</b> ()</td></tr>
<tr class="separator:a252af37875a1115f107082263af2cb3c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a66f1a57c68b149a31faa739d51c463ec inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66f1a57c68b149a31faa739d51c463ec"></a>
-<a class="el" href="classrapidjson_1_1_generic_array.html">ConstArray</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetArray</b> () const </td></tr>
-<tr class="separator:a66f1a57c68b149a31faa739d51c463ec inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ade8d1ca2b8e8afa02cde46e26866440b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:ade8d1ca2b8e8afa02cde46e26866440b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ade8d1ca2b8e8afa02cde46e26866440b">Is</a> () const </td></tr>
-<tr class="memdesc:ade8d1ca2b8e8afa02cde46e26866440b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Templated version for checking whether this value is type T. <a href="#ade8d1ca2b8e8afa02cde46e26866440b">更多...</a><br /></td></tr>
-<tr class="separator:ade8d1ca2b8e8afa02cde46e26866440b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a131eda3b3f5e37fca8dff43c77963fad inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a class="anchor" id="a131eda3b3f5e37fca8dff43c77963fad"></a>
+<tr class="memitem:a274f975f1a3127746e027c2a90fd101e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a274f975f1a3127746e027c2a90fd101e"></a>
+<a class="el" href="classrapidjson_1_1_generic_array.html">ConstArray</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetArray</b> () const</td></tr>
+<tr class="separator:a274f975f1a3127746e027c2a90fd101e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acc6b1791cca8daef18521918136264b7 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<tr class="memitem:acc6b1791cca8daef18521918136264b7 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#acc6b1791cca8daef18521918136264b7">Is</a> () const</td></tr>
+<tr class="memdesc:acc6b1791cca8daef18521918136264b7 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Templated version for checking whether this value is type T. <a href="classrapidjson_1_1_generic_value.html#acc6b1791cca8daef18521918136264b7">更多...</a><br /></td></tr>
+<tr class="separator:acc6b1791cca8daef18521918136264b7 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a01b08bc71b07839324b3a1fdc8341712 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a id="a01b08bc71b07839324b3a1fdc8341712"></a>
template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a131eda3b3f5e37fca8dff43c77963fad inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Get</b> () const </td></tr>
-<tr class="separator:a131eda3b3f5e37fca8dff43c77963fad inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aaa92aa34a1b7ba91980a461bd526a4db inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a class="anchor" id="aaa92aa34a1b7ba91980a461bd526a4db"></a>
+<tr class="memitem:a01b08bc71b07839324b3a1fdc8341712 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Get</b> () const</td></tr>
+<tr class="separator:a01b08bc71b07839324b3a1fdc8341712 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaa92aa34a1b7ba91980a461bd526a4db inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a id="aaa92aa34a1b7ba91980a461bd526a4db"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:aaa92aa34a1b7ba91980a461bd526a4db inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Get</b> ()</td></tr>
<tr class="separator:aaa92aa34a1b7ba91980a461bd526a4db inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8b508fecfecbecb418c999597d83d384 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8b508fecfecbecb418c999597d83d384"></a>
+<tr class="memitem:a8b508fecfecbecb418c999597d83d384 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a id="a8b508fecfecbecb418c999597d83d384"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a8b508fecfecbecb418c999597d83d384 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Set</b> (const T &amp;data)</td></tr>
<tr class="separator:a8b508fecfecbecb418c999597d83d384 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae5576f5bb31c707ffd8ce6d6c58135a5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae5576f5bb31c707ffd8ce6d6c58135a5"></a>
+<tr class="memitem:ae5576f5bb31c707ffd8ce6d6c58135a5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2"><a id="ae5576f5bb31c707ffd8ce6d6c58135a5"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:ae5576f5bb31c707ffd8ce6d6c58135a5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Set</b> (const T &amp;data, <a class="el" href="classrapidjson_1_1_generic_value.html#a5d47340c96346c5028fee4c9068d783d">AllocatorType</a> &amp;allocator)</td></tr>
<tr class="separator:ae5576f5bb31c707ffd8ce6d6c58135a5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a92991a57de8cf42da2e4efc792acefea inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92991a57de8cf42da2e4efc792acefea"></a>
-int&#160;</td><td class="memItemRight" valign="bottom"><b>GetInt</b> () const </td></tr>
-<tr class="separator:a92991a57de8cf42da2e4efc792acefea inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0cbd9b2bfa0bb7fe196a79703c5f488e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0cbd9b2bfa0bb7fe196a79703c5f488e"></a>
-unsigned&#160;</td><td class="memItemRight" valign="bottom"><b>GetUint</b> () const </td></tr>
-<tr class="separator:a0cbd9b2bfa0bb7fe196a79703c5f488e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a77b677674bc92a6e6a78cc9736a44f1c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77b677674bc92a6e6a78cc9736a44f1c"></a>
-int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>GetInt64</b> () const </td></tr>
-<tr class="separator:a77b677674bc92a6e6a78cc9736a44f1c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a25f0f486ad79b8e42774cb070da836c8 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25f0f486ad79b8e42774cb070da836c8"></a>
-uint64_t&#160;</td><td class="memItemRight" valign="bottom"><b>GetUint64</b> () const </td></tr>
-<tr class="separator:a25f0f486ad79b8e42774cb070da836c8 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa059dee923cc0446752e321ff70936a6 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aa059dee923cc0446752e321ff70936a6">GetDouble</a> () const </td></tr>
-<tr class="memdesc:aa059dee923cc0446752e321ff70936a6 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the value as double type. <a href="#aa059dee923cc0446752e321ff70936a6">更多...</a><br /></td></tr>
-<tr class="separator:aa059dee923cc0446752e321ff70936a6 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0eda9834f241e5c5b23161a7ee33758b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a0eda9834f241e5c5b23161a7ee33758b">GetFloat</a> () const </td></tr>
-<tr class="memdesc:a0eda9834f241e5c5b23161a7ee33758b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the value as float type. <a href="#a0eda9834f241e5c5b23161a7ee33758b">更多...</a><br /></td></tr>
-<tr class="separator:a0eda9834f241e5c5b23161a7ee33758b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aca0cff58ccd1d50ddce2eb2182e322c2 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca0cff58ccd1d50ddce2eb2182e322c2"></a>
+<tr class="memitem:a5f2396316c5145cb41ebbccfb03100ba inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a5f2396316c5145cb41ebbccfb03100ba"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>GetInt</b> () const</td></tr>
+<tr class="separator:a5f2396316c5145cb41ebbccfb03100ba inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa1ab35be7c796a75dec562844a1917e6 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="aa1ab35be7c796a75dec562844a1917e6"></a>
+unsigned&#160;</td><td class="memItemRight" valign="bottom"><b>GetUint</b> () const</td></tr>
+<tr class="separator:aa1ab35be7c796a75dec562844a1917e6 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a01b8758dbfece60480392667795be717 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a01b8758dbfece60480392667795be717"></a>
+int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>GetInt64</b> () const</td></tr>
+<tr class="separator:a01b8758dbfece60480392667795be717 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aac009c514da7e112aa8a9054c4d3e247 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="aac009c514da7e112aa8a9054c4d3e247"></a>
+uint64_t&#160;</td><td class="memItemRight" valign="bottom"><b>GetUint64</b> () const</td></tr>
+<tr class="separator:aac009c514da7e112aa8a9054c4d3e247 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa27d086d265f0ce447b15b15f0a2ed6e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aa27d086d265f0ce447b15b15f0a2ed6e">GetDouble</a> () const</td></tr>
+<tr class="memdesc:aa27d086d265f0ce447b15b15f0a2ed6e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the value as double type. <a href="classrapidjson_1_1_generic_value.html#aa27d086d265f0ce447b15b15f0a2ed6e">更多...</a><br /></td></tr>
+<tr class="separator:aa27d086d265f0ce447b15b15f0a2ed6e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a573712808dd5d8814c103cf55fd761b4 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a573712808dd5d8814c103cf55fd761b4">GetFloat</a> () const</td></tr>
+<tr class="memdesc:a573712808dd5d8814c103cf55fd761b4 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the value as float type. <a href="classrapidjson_1_1_generic_value.html#a573712808dd5d8814c103cf55fd761b4">更多...</a><br /></td></tr>
+<tr class="separator:a573712808dd5d8814c103cf55fd761b4 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aca0cff58ccd1d50ddce2eb2182e322c2 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="aca0cff58ccd1d50ddce2eb2182e322c2"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>SetInt</b> (int i)</td></tr>
<tr class="separator:aca0cff58ccd1d50ddce2eb2182e322c2 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0e173c8bb01a536c94529d4e3f9bfc67 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e173c8bb01a536c94529d4e3f9bfc67"></a>
+<tr class="memitem:a0e173c8bb01a536c94529d4e3f9bfc67 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a0e173c8bb01a536c94529d4e3f9bfc67"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>SetUint</b> (unsigned u)</td></tr>
<tr class="separator:a0e173c8bb01a536c94529d4e3f9bfc67 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2ca9400394581ce55c3e4a9633ffa33c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ca9400394581ce55c3e4a9633ffa33c"></a>
+<tr class="memitem:a2ca9400394581ce55c3e4a9633ffa33c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a2ca9400394581ce55c3e4a9633ffa33c"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>SetInt64</b> (int64_t i64)</td></tr>
<tr class="separator:a2ca9400394581ce55c3e4a9633ffa33c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8c89bdc7f8dd14e4ab974e587b99405a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c89bdc7f8dd14e4ab974e587b99405a"></a>
+<tr class="memitem:a8c89bdc7f8dd14e4ab974e587b99405a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a8c89bdc7f8dd14e4ab974e587b99405a"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>SetUint64</b> (uint64_t u64)</td></tr>
<tr class="separator:a8c89bdc7f8dd14e4ab974e587b99405a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af5ada19ad065eeecc7112409bc8d9bbb inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af5ada19ad065eeecc7112409bc8d9bbb"></a>
+<tr class="memitem:af5ada19ad065eeecc7112409bc8d9bbb inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="af5ada19ad065eeecc7112409bc8d9bbb"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>SetDouble</b> (double d)</td></tr>
<tr class="separator:af5ada19ad065eeecc7112409bc8d9bbb inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a67f32cbe6eb699f95391a58efd39a070 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67f32cbe6eb699f95391a58efd39a070"></a>
+<tr class="memitem:a67f32cbe6eb699f95391a58efd39a070 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a67f32cbe6eb699f95391a58efd39a070"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>SetFloat</b> (float f)</td></tr>
<tr class="separator:a67f32cbe6eb699f95391a58efd39a070 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aab763460a97e8944ddedf51203581a3b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aab763460a97e8944ddedf51203581a3b"></a>
-const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>GetString</b> () const </td></tr>
-<tr class="separator:aab763460a97e8944ddedf51203581a3b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a979c4ba6dd2a311be837ae083423aca8 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8">GetStringLength</a> () const </td></tr>
-<tr class="memdesc:a979c4ba6dd2a311be837ae083423aca8 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the length of string. <a href="#a979c4ba6dd2a311be837ae083423aca8">更多...</a><br /></td></tr>
-<tr class="separator:a979c4ba6dd2a311be837ae083423aca8 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a97ef0b0785542eaa8e2337161c358c07 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a97ef0b0785542eaa8e2337161c358c07"></a>
+const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>GetString</b> () const</td></tr>
+<tr class="separator:a97ef0b0785542eaa8e2337161c358c07 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a18599e0d1a7e70a11b35f5e219390fea inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea">GetStringLength</a> () const</td></tr>
+<tr class="memdesc:a18599e0d1a7e70a11b35f5e219390fea inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the length of string. <a href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea">更多...</a><br /></td></tr>
+<tr class="separator:a18599e0d1a7e70a11b35f5e219390fea inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb91480cc6242ca96ffc603e649c319f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f">SetString</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *s, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length)</td></tr>
-<tr class="memdesc:afb91480cc6242ca96ffc603e649c319f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as a string without copying source string. <a href="#afb91480cc6242ca96ffc603e649c319f">更多...</a><br /></td></tr>
+<tr class="memdesc:afb91480cc6242ca96ffc603e649c319f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as a string without copying source string. <a href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f">更多...</a><br /></td></tr>
<tr class="separator:afb91480cc6242ca96ffc603e649c319f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabb538578a3c1e60c86cda32d062bc1c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aabb538578a3c1e60c86cda32d062bc1c">SetString</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a> s)</td></tr>
-<tr class="memdesc:aabb538578a3c1e60c86cda32d062bc1c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as a string without copying source string. <a href="#aabb538578a3c1e60c86cda32d062bc1c">更多...</a><br /></td></tr>
+<tr class="memdesc:aabb538578a3c1e60c86cda32d062bc1c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as a string without copying source string. <a href="classrapidjson_1_1_generic_value.html#aabb538578a3c1e60c86cda32d062bc1c">更多...</a><br /></td></tr>
<tr class="separator:aabb538578a3c1e60c86cda32d062bc1c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6351043ec30d8a151b0a072cfbc46d5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ae6351043ec30d8a151b0a072cfbc46d5">SetString</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *s, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:ae6351043ec30d8a151b0a072cfbc46d5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as a string by copying from source string. <a href="#ae6351043ec30d8a151b0a072cfbc46d5">更多...</a><br /></td></tr>
+<tr class="memdesc:ae6351043ec30d8a151b0a072cfbc46d5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as a string by copying from source string. <a href="classrapidjson_1_1_generic_value.html#ae6351043ec30d8a151b0a072cfbc46d5">更多...</a><br /></td></tr>
<tr class="separator:ae6351043ec30d8a151b0a072cfbc46d5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4babf200cac2dacb412a3ea279ddf5b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ab4babf200cac2dacb412a3ea279ddf5b">SetString</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *s, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:ab4babf200cac2dacb412a3ea279ddf5b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as a string by copying from source string. <a href="#ab4babf200cac2dacb412a3ea279ddf5b">更多...</a><br /></td></tr>
+<tr class="memdesc:ab4babf200cac2dacb412a3ea279ddf5b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as a string by copying from source string. <a href="classrapidjson_1_1_generic_value.html#ab4babf200cac2dacb412a3ea279ddf5b">更多...</a><br /></td></tr>
<tr class="separator:ab4babf200cac2dacb412a3ea279ddf5b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ba3d9d8a106d5b7e92fb49db897c21b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a9ba3d9d8a106d5b7e92fb49db897c21b">SetString</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a> s, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:a9ba3d9d8a106d5b7e92fb49db897c21b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as a string by copying from source string. <a href="#a9ba3d9d8a106d5b7e92fb49db897c21b">更多...</a><br /></td></tr>
+<tr class="memdesc:a9ba3d9d8a106d5b7e92fb49db897c21b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as a string by copying from source string. <a href="classrapidjson_1_1_generic_value.html#a9ba3d9d8a106d5b7e92fb49db897c21b">更多...</a><br /></td></tr>
<tr class="separator:a9ba3d9d8a106d5b7e92fb49db897c21b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e930bffb40a78e570e3deef461f0532 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a3e930bffb40a78e570e3deef461f0532">SetString</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;s, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:a3e930bffb40a78e570e3deef461f0532 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as a string by copying from source string. <a href="#a3e930bffb40a78e570e3deef461f0532">更多...</a><br /></td></tr>
+<tr class="memdesc:a3e930bffb40a78e570e3deef461f0532 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as a string by copying from source string. <a href="classrapidjson_1_1_generic_value.html#a3e930bffb40a78e570e3deef461f0532">更多...</a><br /></td></tr>
<tr class="separator:a3e930bffb40a78e570e3deef461f0532 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8bcedd951f50b69786aaaa1828e9fac inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ae8bcedd951f50b69786aaaa1828e9fac">operator=</a> (<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;rhs) RAPIDJSON_NOEXCEPT</td></tr>
-<tr class="memdesc:ae8bcedd951f50b69786aaaa1828e9fac inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment with move semantics. <a href="#ae8bcedd951f50b69786aaaa1828e9fac">更多...</a><br /></td></tr>
+<tr class="memdesc:ae8bcedd951f50b69786aaaa1828e9fac inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment with move semantics. <a href="classrapidjson_1_1_generic_value.html#ae8bcedd951f50b69786aaaa1828e9fac">更多...</a><br /></td></tr>
<tr class="separator:ae8bcedd951f50b69786aaaa1828e9fac inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecc9d0a6aafe31f4fdf9f6e75e5f089c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aecc9d0a6aafe31f4fdf9f6e75e5f089c">operator=</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a> str) RAPIDJSON_NOEXCEPT</td></tr>
-<tr class="memdesc:aecc9d0a6aafe31f4fdf9f6e75e5f089c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment of constant string reference (no copy) <a href="#aecc9d0a6aafe31f4fdf9f6e75e5f089c">更多...</a><br /></td></tr>
+<tr class="memdesc:aecc9d0a6aafe31f4fdf9f6e75e5f089c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment of constant string reference (no copy) <a href="classrapidjson_1_1_generic_value.html#aecc9d0a6aafe31f4fdf9f6e75e5f089c">更多...</a><br /></td></tr>
<tr class="separator:aecc9d0a6aafe31f4fdf9f6e75e5f089c inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7446da62fdc61d6d987d508cdb6ac13 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:ab7446da62fdc61d6d987d508cdb6ac13 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ab7446da62fdc61d6d987d508cdb6ac13">operator=</a> (T value)</td></tr>
-<tr class="memdesc:ab7446da62fdc61d6d987d508cdb6ac13 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment with primitive types. <a href="#ab7446da62fdc61d6d987d508cdb6ac13">更多...</a><br /></td></tr>
+<tr class="memdesc:ab7446da62fdc61d6d987d508cdb6ac13 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment with primitive types. <a href="classrapidjson_1_1_generic_value.html#ab7446da62fdc61d6d987d508cdb6ac13">更多...</a><br /></td></tr>
<tr class="separator:ab7446da62fdc61d6d987d508cdb6ac13 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9399a2a69444c44a9db2f63c3aa3eae inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
<tr class="memitem:ad9399a2a69444c44a9db2f63c3aa3eae inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae">CopyFrom</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;rhs, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator, bool copyConstStrings=false)</td></tr>
-<tr class="memdesc:ad9399a2a69444c44a9db2f63c3aa3eae inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deep-copy assignment from Value. <a href="#ad9399a2a69444c44a9db2f63c3aa3eae">更多...</a><br /></td></tr>
+<tr class="memdesc:ad9399a2a69444c44a9db2f63c3aa3eae inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deep-copy assignment from Value <a href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae">更多...</a><br /></td></tr>
<tr class="separator:ad9399a2a69444c44a9db2f63c3aa3eae inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06f10ef54f5692ce08206c26624a21db inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db">Swap</a> (<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;other) RAPIDJSON_NOEXCEPT</td></tr>
-<tr class="memdesc:a06f10ef54f5692ce08206c26624a21db inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exchange the contents of this value with those of other. <a href="#a06f10ef54f5692ce08206c26624a21db">更多...</a><br /></td></tr>
+<tr class="memdesc:a06f10ef54f5692ce08206c26624a21db inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exchange the contents of this value with those of other. <a href="classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db">更多...</a><br /></td></tr>
<tr class="separator:a06f10ef54f5692ce08206c26624a21db inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07b19e65fb756cae13e5bdc515cfbd4b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b">Move</a> () RAPIDJSON_NOEXCEPT</td></tr>
-<tr class="memdesc:a07b19e65fb756cae13e5bdc515cfbd4b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepare Value for move semantics. <a href="#a07b19e65fb756cae13e5bdc515cfbd4b">更多...</a><br /></td></tr>
+<tr class="memdesc:a07b19e65fb756cae13e5bdc515cfbd4b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepare Value for move semantics <a href="classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b">更多...</a><br /></td></tr>
<tr class="separator:a07b19e65fb756cae13e5bdc515cfbd4b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afbdbc9cbc3b59feb5a28d5bfee97dbb3 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
-<tr class="memitem:afbdbc9cbc3b59feb5a28d5bfee97dbb3 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#afbdbc9cbc3b59feb5a28d5bfee97dbb3">operator==</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;rhs) const </td></tr>
-<tr class="memdesc:afbdbc9cbc3b59feb5a28d5bfee97dbb3 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator. <a href="#afbdbc9cbc3b59feb5a28d5bfee97dbb3">更多...</a><br /></td></tr>
-<tr class="separator:afbdbc9cbc3b59feb5a28d5bfee97dbb3 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7bed9035dd1beeabe6f47e870874e793 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bed9035dd1beeabe6f47e870874e793"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a7bed9035dd1beeabe6f47e870874e793">operator==</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *rhs) const </td></tr>
-<tr class="memdesc:a7bed9035dd1beeabe6f47e870874e793 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator with const C-string pointer. <br /></td></tr>
-<tr class="separator:a7bed9035dd1beeabe6f47e870874e793 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6f7f7c66d8f8c08e496ae831ba114126 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a6f7f7c66d8f8c08e496ae831ba114126">operator==</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;rhs) const </td></tr>
-<tr class="memdesc:a6f7f7c66d8f8c08e496ae831ba114126 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator with string object. <a href="#a6f7f7c66d8f8c08e496ae831ba114126">更多...</a><br /></td></tr>
-<tr class="separator:a6f7f7c66d8f8c08e496ae831ba114126 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae6c196979931e8283bcbd499133169ed inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:ae6c196979931e8283bcbd499133169ed inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ae6c196979931e8283bcbd499133169ed">operator==</a> (const T &amp;rhs) const </td></tr>
-<tr class="memdesc:ae6c196979931e8283bcbd499133169ed inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator with primitive types. <a href="#ae6c196979931e8283bcbd499133169ed">更多...</a><br /></td></tr>
-<tr class="separator:ae6c196979931e8283bcbd499133169ed inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0cb232adce79932c499c5f04cbc8dc54 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
-<tr class="memitem:a0cb232adce79932c499c5f04cbc8dc54 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a0cb232adce79932c499c5f04cbc8dc54">operator!=</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;rhs) const </td></tr>
-<tr class="memdesc:a0cb232adce79932c499c5f04cbc8dc54 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Not-equal-to operator. <a href="#a0cb232adce79932c499c5f04cbc8dc54">更多...</a><br /></td></tr>
-<tr class="separator:a0cb232adce79932c499c5f04cbc8dc54 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aff1711092a1278d36b8152f5520a686e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff1711092a1278d36b8152f5520a686e"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aff1711092a1278d36b8152f5520a686e">operator!=</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *rhs) const </td></tr>
-<tr class="memdesc:aff1711092a1278d36b8152f5520a686e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Not-equal-to operator with const C-string pointer. <br /></td></tr>
-<tr class="separator:aff1711092a1278d36b8152f5520a686e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad7e6ef7acbbfef57485b9f2dee620dbf inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:ad7e6ef7acbbfef57485b9f2dee620dbf inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad7e6ef7acbbfef57485b9f2dee620dbf">operator!=</a> (const T &amp;rhs) const </td></tr>
-<tr class="memdesc:ad7e6ef7acbbfef57485b9f2dee620dbf inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Not-equal-to operator with arbitrary types. <a href="#ad7e6ef7acbbfef57485b9f2dee620dbf">更多...</a><br /></td></tr>
-<tr class="separator:ad7e6ef7acbbfef57485b9f2dee620dbf inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad1f8199e65662e0d52a13a1577d4e4a5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad1f8199e65662e0d52a13a1577d4e4a5"></a>
+<tr class="memitem:ab4e5285102bb686f39bca2855a17a181 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
+<tr class="memitem:ab4e5285102bb686f39bca2855a17a181 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ab4e5285102bb686f39bca2855a17a181">operator==</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;rhs) const</td></tr>
+<tr class="memdesc:ab4e5285102bb686f39bca2855a17a181 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator <a href="classrapidjson_1_1_generic_value.html#ab4e5285102bb686f39bca2855a17a181">更多...</a><br /></td></tr>
+<tr class="separator:ab4e5285102bb686f39bca2855a17a181 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af03ef6020e188bbfceb018da5cd8becc inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="af03ef6020e188bbfceb018da5cd8becc"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#af03ef6020e188bbfceb018da5cd8becc">operator==</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *rhs) const</td></tr>
+<tr class="memdesc:af03ef6020e188bbfceb018da5cd8becc inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator with const C-string pointer <br /></td></tr>
+<tr class="separator:af03ef6020e188bbfceb018da5cd8becc inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af089d2bee0386ca7504ff4fab466c87f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#af089d2bee0386ca7504ff4fab466c87f">operator==</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;rhs) const</td></tr>
+<tr class="memdesc:af089d2bee0386ca7504ff4fab466c87f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator with string object <a href="classrapidjson_1_1_generic_value.html#af089d2bee0386ca7504ff4fab466c87f">更多...</a><br /></td></tr>
+<tr class="separator:af089d2bee0386ca7504ff4fab466c87f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaddbbbb35cd783f209f889cf8dea9570 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<tr class="memitem:aaddbbbb35cd783f209f889cf8dea9570 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aaddbbbb35cd783f209f889cf8dea9570">operator==</a> (const T &amp;rhs) const</td></tr>
+<tr class="memdesc:aaddbbbb35cd783f209f889cf8dea9570 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator with primitive types <a href="classrapidjson_1_1_generic_value.html#aaddbbbb35cd783f209f889cf8dea9570">更多...</a><br /></td></tr>
+<tr class="separator:aaddbbbb35cd783f209f889cf8dea9570 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad5bf5afd53f21f370f917041b3be4bfc inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
+<tr class="memitem:ad5bf5afd53f21f370f917041b3be4bfc inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad5bf5afd53f21f370f917041b3be4bfc">operator!=</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;rhs) const</td></tr>
+<tr class="memdesc:ad5bf5afd53f21f370f917041b3be4bfc inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Not-equal-to operator <a href="classrapidjson_1_1_generic_value.html#ad5bf5afd53f21f370f917041b3be4bfc">更多...</a><br /></td></tr>
+<tr class="separator:ad5bf5afd53f21f370f917041b3be4bfc inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6443cf5323fb46c4c51cd15a365da49b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a6443cf5323fb46c4c51cd15a365da49b"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a6443cf5323fb46c4c51cd15a365da49b">operator!=</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *rhs) const</td></tr>
+<tr class="memdesc:a6443cf5323fb46c4c51cd15a365da49b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Not-equal-to operator with const C-string pointer <br /></td></tr>
+<tr class="separator:a6443cf5323fb46c4c51cd15a365da49b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae6fe0576ff0336f6e2b09fe32f3ff809 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<tr class="memitem:ae6fe0576ff0336f6e2b09fe32f3ff809 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ae6fe0576ff0336f6e2b09fe32f3ff809">operator!=</a> (const T &amp;rhs) const</td></tr>
+<tr class="memdesc:ae6fe0576ff0336f6e2b09fe32f3ff809 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Not-equal-to operator with arbitrary types <a href="classrapidjson_1_1_generic_value.html#ae6fe0576ff0336f6e2b09fe32f3ff809">更多...</a><br /></td></tr>
+<tr class="separator:ae6fe0576ff0336f6e2b09fe32f3ff809 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad1f8199e65662e0d52a13a1577d4e4a5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="ad1f8199e65662e0d52a13a1577d4e4a5"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad1f8199e65662e0d52a13a1577d4e4a5">GenericValue</a> () RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:ad1f8199e65662e0d52a13a1577d4e4a5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor creates a null value. <br /></td></tr>
<tr class="separator:ad1f8199e65662e0d52a13a1577d4e4a5 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a646b6d4d3d98799a0926d96ffa127a58 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a646b6d4d3d98799a0926d96ffa127a58">GenericValue</a> (<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type) RAPIDJSON_NOEXCEPT</td></tr>
-<tr class="memdesc:a646b6d4d3d98799a0926d96ffa127a58 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor with JSON value type. <a href="#a646b6d4d3d98799a0926d96ffa127a58">更多...</a><br /></td></tr>
+<tr class="memdesc:a646b6d4d3d98799a0926d96ffa127a58 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor with JSON value type. <a href="classrapidjson_1_1_generic_value.html#a646b6d4d3d98799a0926d96ffa127a58">更多...</a><br /></td></tr>
<tr class="separator:a646b6d4d3d98799a0926d96ffa127a58 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adca019775f68f012643781cd2c2515ac inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
<tr class="memitem:adca019775f68f012643781cd2c2515ac inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#adca019775f68f012643781cd2c2515ac">GenericValue</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;rhs, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator, bool copyConstStrings=false)</td></tr>
-<tr class="memdesc:adca019775f68f012643781cd2c2515ac inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Explicit copy constructor (with allocator) <a href="#adca019775f68f012643781cd2c2515ac">更多...</a><br /></td></tr>
+<tr class="memdesc:adca019775f68f012643781cd2c2515ac inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Explicit copy constructor (with allocator) <a href="classrapidjson_1_1_generic_value.html#adca019775f68f012643781cd2c2515ac">更多...</a><br /></td></tr>
<tr class="separator:adca019775f68f012643781cd2c2515ac inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab933ad7ff8c9d08f73cebaecb700dbe9 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ab933ad7ff8c9d08f73cebaecb700dbe9">GenericValue</a> (bool b) RAPIDJSON_NOEXCEPT</td></tr>
-<tr class="memdesc:ab933ad7ff8c9d08f73cebaecb700dbe9 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for boolean value. <a href="#ab933ad7ff8c9d08f73cebaecb700dbe9">更多...</a><br /></td></tr>
+<tr class="memdesc:ab933ad7ff8c9d08f73cebaecb700dbe9 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for boolean value. <a href="classrapidjson_1_1_generic_value.html#ab933ad7ff8c9d08f73cebaecb700dbe9">更多...</a><br /></td></tr>
<tr class="separator:ab933ad7ff8c9d08f73cebaecb700dbe9 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abba0c9ccfd90726f916c36013a2e9e19 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abba0c9ccfd90726f916c36013a2e9e19"></a>
+<tr class="memitem:abba0c9ccfd90726f916c36013a2e9e19 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="abba0c9ccfd90726f916c36013a2e9e19"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#abba0c9ccfd90726f916c36013a2e9e19">GenericValue</a> (int i) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:abba0c9ccfd90726f916c36013a2e9e19 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for int value. <br /></td></tr>
<tr class="separator:abba0c9ccfd90726f916c36013a2e9e19 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4a8060a42b7953a2981ad892180ca5a6 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a8060a42b7953a2981ad892180ca5a6"></a>
+<tr class="memitem:a4a8060a42b7953a2981ad892180ca5a6 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a4a8060a42b7953a2981ad892180ca5a6"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a4a8060a42b7953a2981ad892180ca5a6">GenericValue</a> (unsigned u) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:a4a8060a42b7953a2981ad892180ca5a6 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for unsigned value. <br /></td></tr>
<tr class="separator:a4a8060a42b7953a2981ad892180ca5a6 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acd4ae9a8dba4498d1d7cce6667529bb8 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd4ae9a8dba4498d1d7cce6667529bb8"></a>
+<tr class="memitem:acd4ae9a8dba4498d1d7cce6667529bb8 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="acd4ae9a8dba4498d1d7cce6667529bb8"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#acd4ae9a8dba4498d1d7cce6667529bb8">GenericValue</a> (int64_t i64) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:acd4ae9a8dba4498d1d7cce6667529bb8 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for int64_t value. <br /></td></tr>
<tr class="separator:acd4ae9a8dba4498d1d7cce6667529bb8 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1f125e735577aae64c0306345de45563 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f125e735577aae64c0306345de45563"></a>
+<tr class="memitem:a1f125e735577aae64c0306345de45563 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a1f125e735577aae64c0306345de45563"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a1f125e735577aae64c0306345de45563">GenericValue</a> (uint64_t u64) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:a1f125e735577aae64c0306345de45563 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for uint64_t value. <br /></td></tr>
<tr class="separator:a1f125e735577aae64c0306345de45563 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a71b9e2ec1f7bf9e2f034126ca7b4945a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a71b9e2ec1f7bf9e2f034126ca7b4945a"></a>
+<tr class="memitem:a71b9e2ec1f7bf9e2f034126ca7b4945a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a71b9e2ec1f7bf9e2f034126ca7b4945a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a71b9e2ec1f7bf9e2f034126ca7b4945a">GenericValue</a> (double d) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:a71b9e2ec1f7bf9e2f034126ca7b4945a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for double value. <br /></td></tr>
<tr class="separator:a71b9e2ec1f7bf9e2f034126ca7b4945a inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afe94e5e86a5b1a3fb605a9f8422f048b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe94e5e86a5b1a3fb605a9f8422f048b"></a>
+<tr class="memitem:afe94e5e86a5b1a3fb605a9f8422f048b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="afe94e5e86a5b1a3fb605a9f8422f048b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#afe94e5e86a5b1a3fb605a9f8422f048b">GenericValue</a> (float f) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:afe94e5e86a5b1a3fb605a9f8422f048b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for float value. <br /></td></tr>
<tr class="separator:afe94e5e86a5b1a3fb605a9f8422f048b inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a51e93a4fb57f77a39767acb076bf43c1 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a51e93a4fb57f77a39767acb076bf43c1"></a>
+<tr class="memitem:a51e93a4fb57f77a39767acb076bf43c1 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a51e93a4fb57f77a39767acb076bf43c1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a51e93a4fb57f77a39767acb076bf43c1">GenericValue</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *s, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:a51e93a4fb57f77a39767acb076bf43c1 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for constant string (i.e. do not make a copy of string) <br /></td></tr>
<tr class="separator:a51e93a4fb57f77a39767acb076bf43c1 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a65bfc3073fa80ee5eba8e985abe2f941 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65bfc3073fa80ee5eba8e985abe2f941"></a>
+<tr class="memitem:a65bfc3073fa80ee5eba8e985abe2f941 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a65bfc3073fa80ee5eba8e985abe2f941"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a65bfc3073fa80ee5eba8e985abe2f941">GenericValue</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a> s) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:a65bfc3073fa80ee5eba8e985abe2f941 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for constant string (i.e. do not make a copy of string) <br /></td></tr>
<tr class="separator:a65bfc3073fa80ee5eba8e985abe2f941 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad9553bb9ccbfd19547c473a95405a8b2 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad9553bb9ccbfd19547c473a95405a8b2"></a>
+<tr class="memitem:ad9553bb9ccbfd19547c473a95405a8b2 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="ad9553bb9ccbfd19547c473a95405a8b2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad9553bb9ccbfd19547c473a95405a8b2">GenericValue</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *s, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
<tr class="memdesc:ad9553bb9ccbfd19547c473a95405a8b2 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for copy-string (i.e. do make a copy of string) <br /></td></tr>
<tr class="separator:ad9553bb9ccbfd19547c473a95405a8b2 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a83ba61e8a5170c2e172fd60ebc11016f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83ba61e8a5170c2e172fd60ebc11016f"></a>
+<tr class="memitem:a83ba61e8a5170c2e172fd60ebc11016f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top"><a id="a83ba61e8a5170c2e172fd60ebc11016f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a83ba61e8a5170c2e172fd60ebc11016f">GenericValue</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *s, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
<tr class="memdesc:a83ba61e8a5170c2e172fd60ebc11016f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for copy-string (i.e. do make a copy of string) <br /></td></tr>
<tr class="separator:a83ba61e8a5170c2e172fd60ebc11016f inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a852788b35257762cd8d6c4bf5c5d77bc inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a852788b35257762cd8d6c4bf5c5d77bc">GenericValue</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;s, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
-<tr class="memdesc:a852788b35257762cd8d6c4bf5c5d77bc inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for copy-string from a string object (i.e. do make a copy of string) <a href="#a852788b35257762cd8d6c4bf5c5d77bc">更多...</a><br /></td></tr>
+<tr class="memdesc:a852788b35257762cd8d6c4bf5c5d77bc inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for copy-string from a string object (i.e. do make a copy of string) <a href="classrapidjson_1_1_generic_value.html#a852788b35257762cd8d6c4bf5c5d77bc">更多...</a><br /></td></tr>
<tr class="separator:a852788b35257762cd8d6c4bf5c5d77bc inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77b0f41557b3c34b57a180698312c4a8 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a77b0f41557b3c34b57a180698312c4a8">GenericValue</a> (<a class="el" href="classrapidjson_1_1_generic_array.html">Array</a> a) RAPIDJSON_NOEXCEPT</td></tr>
-<tr class="memdesc:a77b0f41557b3c34b57a180698312c4a8 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for Array. <a href="#a77b0f41557b3c34b57a180698312c4a8">更多...</a><br /></td></tr>
+<tr class="memdesc:a77b0f41557b3c34b57a180698312c4a8 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for Array. <a href="classrapidjson_1_1_generic_value.html#a77b0f41557b3c34b57a180698312c4a8">更多...</a><br /></td></tr>
<tr class="separator:a77b0f41557b3c34b57a180698312c4a8 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a893da1069660536fd3943a0149206a6e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a893da1069660536fd3943a0149206a6e">GenericValue</a> (<a class="el" href="classrapidjson_1_1_generic_object.html">Object</a> o) RAPIDJSON_NOEXCEPT</td></tr>
-<tr class="memdesc:a893da1069660536fd3943a0149206a6e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for Object. <a href="#a893da1069660536fd3943a0149206a6e">更多...</a><br /></td></tr>
+<tr class="memdesc:a893da1069660536fd3943a0149206a6e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for Object. <a href="classrapidjson_1_1_generic_value.html#a893da1069660536fd3943a0149206a6e">更多...</a><br /></td></tr>
<tr class="separator:a893da1069660536fd3943a0149206a6e inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a433a64b466c80cadf7d1acaa6f065437 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a433a64b466c80cadf7d1acaa6f065437">~GenericValue</a> ()</td></tr>
-<tr class="memdesc:a433a64b466c80cadf7d1acaa6f065437 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <a href="#a433a64b466c80cadf7d1acaa6f065437">更多...</a><br /></td></tr>
+<tr class="memdesc:a433a64b466c80cadf7d1acaa6f065437 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <a href="classrapidjson_1_1_generic_value.html#a433a64b466c80cadf7d1acaa6f065437">更多...</a><br /></td></tr>
<tr class="separator:a433a64b466c80cadf7d1acaa6f065437 inherit pub_methods_classrapidjson_1_1_generic_value"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
友元</h2></td></tr>
-<tr class="memitem:a899449e1a645b5e377af059fb61113d8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a899449e1a645b5e377af059fb61113d8"></a>
+<tr class="memitem:a899449e1a645b5e377af059fb61113d8"><td class="memTemplParams" colspan="2"><a id="a899449e1a645b5e377af059fb61113d8"></a>
template&lt;typename , typename &gt; </td></tr>
<tr class="memitem:a899449e1a645b5e377af059fb61113d8"><td class="memTemplItemLeft" align="right" valign="top">class&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GenericValue</b></td></tr>
<tr class="separator:a899449e1a645b5e377af059fb61113d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -787,7 +777,7 @@ template&lt;typename , typename &gt; </td></tr>
<tr class="separator:a0d63efcc43758ac3aed77e868233369d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<div class="textblock"><h3>template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt;<br />
+<div class="textblock"><h3>template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;, typename StackAllocator = CrtAllocator&gt;<br />
class rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</h3>
<p>A document for parsing JSON text as DOM. </p>
@@ -802,11 +792,13 @@ class rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</h
</dl>
<dl class="section warning"><dt>警告</dt><dd>Although <a class="el" href="classrapidjson_1_1_generic_document.html" title="A document for parsing JSON text as DOM. ">GenericDocument</a> inherits from <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a>, the API does <b>not</b> provide any virtual functions, especially no virtual destructor. To avoid memory leaks, do not <code>delete</code> a <a class="el" href="classrapidjson_1_1_generic_document.html" title="A document for parsing JSON text as DOM. ">GenericDocument</a> object via a pointer to a <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a>. </dd></dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
-<a class="anchor" id="aa52c3016961f25ecd989d82839bce4e5"></a>
+<a id="aa52c3016961f25ecd989d82839bce4e5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa52c3016961f25ecd989d82839bce4e5">&#9670;&nbsp;</a></span>GenericDocument() <span class="overload">[1/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;, typename StackAllocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -848,7 +840,7 @@ template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; <
</table>
</div><div class="memdoc">
-<p>Constructor. </p>
+<p>Constructor </p>
<p>Creates an empty document of specified type. </p><dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">type</td><td>Mandatory type of object to create. </td></tr>
@@ -861,11 +853,13 @@ template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; <
</div>
</div>
-<a class="anchor" id="a82b27e7b228eb46a23f99720063ab4fb"></a>
+<a id="a82b27e7b228eb46a23f99720063ab4fb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a82b27e7b228eb46a23f99720063ab4fb">&#9670;&nbsp;</a></span>GenericDocument() <span class="overload">[2/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;, typename StackAllocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -901,7 +895,7 @@ template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; <
</table>
</div><div class="memdoc">
-<p>Constructor. </p>
+<p>Constructor </p>
<p>Creates an empty document which type is Null. </p><dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">allocator</td><td>Optional allocator for allocating memory. </td></tr>
@@ -914,11 +908,13 @@ template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; <
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
-<a class="anchor" id="a0de48f0c884423b6fcfabc2e93942968"></a>
+<a id="a36d19989c9221b27036675455516a974"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a36d19989c9221b27036675455516a974">&#9670;&nbsp;</a></span>operator ParseResult()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;, typename StackAllocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -937,20 +933,18 @@ template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; <
</table>
</div><div class="memdoc">
-<p>Implicit conversion to get the last parse result. </p>
+<p>Implicit conversion to get the last parse result </p>
<dl class="section return"><dt>返回</dt><dd><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html">ParseResult</a> of the last parse operation</dd></dl>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> doc;</div>
-<div class="line">ParseResult ok = doc.Parse(json);</div>
-<div class="line"><span class="keywordflow">if</span> (!ok)</div>
-<div class="line"> printf( <span class="stringliteral">&quot;JSON parse error: %s (%u)\n&quot;</span>, <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">GetParseError_En</a>(ok.Code()), ok.Offset());</div>
-</div><!-- fragment -->
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> doc;</div><div class="line">ParseResult ok = doc.Parse(json);</div><div class="line"><span class="keywordflow">if</span> (!ok)</div><div class="line"> printf( <span class="stringliteral">&quot;JSON parse error: %s (%u)\n&quot;</span>, <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">GetParseError_En</a>(ok.Code()), ok.Offset());</div></div><!-- fragment -->
</div>
</div>
-<a class="anchor" id="aea842b533a858c9a3861451ad9e8642c"></a>
+<a id="aea842b533a858c9a3861451ad9e8642c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aea842b533a858c9a3861451ad9e8642c">&#9670;&nbsp;</a></span>Parse() <span class="overload">[1/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;, typename StackAllocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;unsigned parseFlags, typename SourceEncoding &gt; </div>
<table class="mlabels">
@@ -989,11 +983,13 @@ template&lt;unsigned parseFlags, typename SourceEncoding &gt; </div>
</div>
</div>
-<a class="anchor" id="a42c35e2f64c288f14b74fec2792500c8"></a>
+<a id="a42c35e2f64c288f14b74fec2792500c8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a42c35e2f64c288f14b74fec2792500c8">&#9670;&nbsp;</a></span>Parse() <span class="overload">[2/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;, typename StackAllocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;unsigned parseFlags&gt; </div>
<table class="mlabels">
@@ -1015,7 +1011,7 @@ template&lt;unsigned parseFlags&gt; </div>
</table>
</div><div class="memdoc">
-<p>Parse JSON text from a read-only string. </p>
+<p>Parse JSON text from a read-only string </p>
<dl class="tparams"><dt>模板参数</dt><dd>
<table class="tparams">
<tr><td class="paramname">parseFlags</td><td>Combination of <a class="el" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9">ParseFlag</a> (must not contain <a class="el" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea">kParseInsituFlag</a>). </td></tr>
@@ -1031,11 +1027,13 @@ template&lt;unsigned parseFlags&gt; </div>
</div>
</div>
-<a class="anchor" id="ab031375318d133f83a114314b75703de"></a>
+<a id="ab031375318d133f83a114314b75703de"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab031375318d133f83a114314b75703de">&#9670;&nbsp;</a></span>Parse() <span class="overload">[3/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;, typename StackAllocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1065,11 +1063,13 @@ template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; <
</div>
</div>
-<a class="anchor" id="a7ba626bf84eb45a9bca0b7723bf47f3f"></a>
+<a id="a7ba626bf84eb45a9bca0b7723bf47f3f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7ba626bf84eb45a9bca0b7723bf47f3f">&#9670;&nbsp;</a></span>ParseInsitu() <span class="overload">[1/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;, typename StackAllocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;unsigned parseFlags&gt; </div>
<table class="mlabels">
@@ -1091,7 +1091,7 @@ template&lt;unsigned parseFlags&gt; </div>
</table>
</div><div class="memdoc">
-<p>Parse JSON text from a mutable string. </p>
+<p>Parse JSON text from a mutable string </p>
<dl class="tparams"><dt>模板参数</dt><dd>
<table class="tparams">
<tr><td class="paramname">parseFlags</td><td>Combination of <a class="el" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9">ParseFlag</a>. </td></tr>
@@ -1108,11 +1108,13 @@ template&lt;unsigned parseFlags&gt; </div>
</div>
</div>
-<a class="anchor" id="af061c039a990c2970dc31e5626149367"></a>
+<a id="af061c039a990c2970dc31e5626149367"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af061c039a990c2970dc31e5626149367">&#9670;&nbsp;</a></span>ParseInsitu() <span class="overload">[2/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;, typename StackAllocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1143,11 +1145,13 @@ template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; <
</div>
</div>
-<a class="anchor" id="a3ae97682cf04685c7db9d89ebc399b85"></a>
+<a id="a3ae97682cf04685c7db9d89ebc399b85"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3ae97682cf04685c7db9d89ebc399b85">&#9670;&nbsp;</a></span>ParseStream() <span class="overload">[1/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;, typename StackAllocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;unsigned parseFlags, typename SourceEncoding , typename InputStream &gt; </div>
<table class="mlabels">
@@ -1188,11 +1192,13 @@ template&lt;unsigned parseFlags, typename SourceEncoding , typename InputStream
</div>
</div>
-<a class="anchor" id="ae4ee7d86b8c906c83dbe15e57eb6ac6a"></a>
+<a id="ae4ee7d86b8c906c83dbe15e57eb6ac6a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae4ee7d86b8c906c83dbe15e57eb6ac6a">&#9670;&nbsp;</a></span>ParseStream() <span class="overload">[2/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;, typename StackAllocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;unsigned parseFlags, typename InputStream &gt; </div>
<table class="mlabels">
@@ -1214,7 +1220,7 @@ template&lt;unsigned parseFlags, typename InputStream &gt; </div>
</table>
</div><div class="memdoc">
-<p>Parse JSON text from an input stream. </p>
+<p>Parse JSON text from an input stream </p>
<dl class="tparams"><dt>模板参数</dt><dd>
<table class="tparams">
<tr><td class="paramname">parseFlags</td><td>Combination of <a class="el" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9">ParseFlag</a>. </td></tr>
@@ -1232,11 +1238,13 @@ template&lt;unsigned parseFlags, typename InputStream &gt; </div>
</div>
</div>
-<a class="anchor" id="acf96a3c7fd61486d049c701b1fe5d414"></a>
+<a id="acf96a3c7fd61486d049c701b1fe5d414"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acf96a3c7fd61486d049c701b1fe5d414">&#9670;&nbsp;</a></span>ParseStream() <span class="overload">[3/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;, typename StackAllocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;typename InputStream &gt; </div>
<table class="mlabels">
@@ -1275,11 +1283,13 @@ template&lt;typename InputStream &gt; </div>
</div>
</div>
-<a class="anchor" id="a63e18887979da500ece6f0bd10d29b64"></a>
+<a id="a63e18887979da500ece6f0bd10d29b64"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a63e18887979da500ece6f0bd10d29b64">&#9670;&nbsp;</a></span>Populate()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;, typename StackAllocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;typename Generator &gt; </div>
<table class="mlabels">
@@ -1318,11 +1328,13 @@ template&lt;typename Generator &gt; </div>
</div>
</div>
-<a class="anchor" id="abf1cbab989b856f9d260787b2575750b"></a>
+<a id="abf1cbab989b856f9d260787b2575750b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abf1cbab989b856f9d260787b2575750b">&#9670;&nbsp;</a></span>Swap()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;, typename StackAllocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1355,11 +1367,13 @@ template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; <
</div>
</div>
<h2 class="groupheader">友元及相关函数文档</h2>
-<a class="anchor" id="a0d63efcc43758ac3aed77e868233369d"></a>
+<a id="a0d63efcc43758ac3aed77e868233369d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0d63efcc43758ac3aed77e868233369d">&#9670;&nbsp;</a></span>swap</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;, typename StackAllocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1390,12 +1404,7 @@ template&lt;typename Encoding, typename Allocator, typename StackAllocator&gt; <
</div><div class="memdoc">
<p>free-standing swap function helper </p>
-<p>Helper function to enable support for common swap implementation pattern based on <code>std::swap:</code> </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_document.html#a0d63efcc43758ac3aed77e868233369d">swap</a>(MyClass&amp; a, MyClass&amp; b) {</div>
-<div class="line"> <span class="keyword">using</span> std::swap;</div>
-<div class="line"> <a class="code" href="classrapidjson_1_1_generic_document.html#a0d63efcc43758ac3aed77e868233369d">swap</a>(a.doc, b.doc);</div>
-<div class="line"> <span class="comment">// ...</span></div>
-<div class="line">}</div>
-</div><!-- fragment --> <dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_document.html#abf1cbab989b856f9d260787b2575750b" title="Exchange the contents of this document with those of another. ">Swap()</a> </dd></dl>
+<p>Helper function to enable support for common swap implementation pattern based on <code>std::swap:</code> </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_document.html#a0d63efcc43758ac3aed77e868233369d">swap</a>(MyClass&amp; a, MyClass&amp; b) {</div><div class="line"> <span class="keyword">using</span> std::swap;</div><div class="line"> <a class="code" href="classrapidjson_1_1_generic_document.html#a0d63efcc43758ac3aed77e868233369d">swap</a>(a.doc, b.doc);</div><div class="line"> <span class="comment">// ...</span></div><div class="line">}</div></div><!-- fragment --> <dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_document.html#abf1cbab989b856f9d260787b2575750b" title="Exchange the contents of this document with those of another. ">Swap()</a> </dd></dl>
</div>
</div>
diff --git a/zh-cn/classrapidjson_1_1_generic_document.js b/zh-cn/classrapidjson_1_1_generic_document.js
index 22eeaa80..4a5dd393 100644
--- a/zh-cn/classrapidjson_1_1_generic_document.js
+++ b/zh-cn/classrapidjson_1_1_generic_document.js
@@ -11,15 +11,15 @@ var classrapidjson_1_1_generic_document =
[ "EndArray", "classrapidjson_1_1_generic_document.html#a544d48e416efb239698e1a55b09aad73", null ],
[ "EndObject", "classrapidjson_1_1_generic_document.html#abe5944e40f6a374645a92b4a77bc3b6e", null ],
[ "GetAllocator", "classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f", null ],
- [ "GetErrorOffset", "classrapidjson_1_1_generic_document.html#ab791c05727d83f6834a1b916783dbc06", null ],
- [ "GetParseError", "classrapidjson_1_1_generic_document.html#ad97e64c123ec1e07ea62ab0a9ce80c00", null ],
- [ "GetStackCapacity", "classrapidjson_1_1_generic_document.html#ac785c064649dea6cfa67207b6bda748e", null ],
- [ "HasParseError", "classrapidjson_1_1_generic_document.html#a2ab17089bd6249bf2a7959d56d35cb68", null ],
+ [ "GetErrorOffset", "classrapidjson_1_1_generic_document.html#af532179ca5ad5434a5e8af63f5da4c5f", null ],
+ [ "GetParseError", "classrapidjson_1_1_generic_document.html#ab94c280c079a6837a24951cb4d8f337b", null ],
+ [ "GetStackCapacity", "classrapidjson_1_1_generic_document.html#a153e5a065ca9660673974f9df203be4b", null ],
+ [ "HasParseError", "classrapidjson_1_1_generic_document.html#a7607bb42b51547e44bfd4cab35d8f20e", null ],
[ "Int", "classrapidjson_1_1_generic_document.html#abadda08ccb7404576e74104916329c21", null ],
[ "Int64", "classrapidjson_1_1_generic_document.html#a133a57e6fa510655e2933decc7361ccc", null ],
[ "Key", "classrapidjson_1_1_generic_document.html#a4bc59e7ec43a909af155c18e7f948f40", null ],
[ "Null", "classrapidjson_1_1_generic_document.html#ab53214e81f7402edbe57829cb1ee6c87", null ],
- [ "operator ParseResult", "classrapidjson_1_1_generic_document.html#a0de48f0c884423b6fcfabc2e93942968", null ],
+ [ "operator ParseResult", "classrapidjson_1_1_generic_document.html#a36d19989c9221b27036675455516a974", null ],
[ "Parse", "classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c", null ],
[ "Parse", "classrapidjson_1_1_generic_document.html#a42c35e2f64c288f14b74fec2792500c8", null ],
[ "Parse", "classrapidjson_1_1_generic_document.html#ab031375318d133f83a114314b75703de", null ],
diff --git a/zh-cn/classrapidjson_1_1_generic_member_iterator-members.html b/zh-cn/classrapidjson_1_1_generic_member_iterator-members.html
index 89594aa0..b200bec9 100644
--- a/zh-cn/classrapidjson_1_1_generic_member_iterator-members.html
+++ b/zh-cn/classrapidjson_1_1_generic_member_iterator-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_member_iter
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -91,25 +92,25 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_member_iter
<tr bgcolor="#f0f0f0"><td class="entry"><b>GenericValue&lt; Encoding, Allocator &gt;</b> (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">Iterator</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a1a91868fa388664bb301061e3e24badb">NonConstIterator</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator!=</b>(ConstIterator that) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>operator*</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator+</b>(DifferenceType n) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator!=</b>(ConstIterator that) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>operator*</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator+</b>(DifferenceType n) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>operator++</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator++</b>(int) (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>operator+=</b>(DifferenceType n) (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator-</b>(DifferenceType n) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a6d7cfaef258b0774da1b642907d81060">operator-</a>(ConstIterator that) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator-</b>(DifferenceType n) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#abfad2c34a97f82178cbf9464e958e2c2">operator-</a>(ConstIterator that) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator--</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>operator--</b>(int) (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator-=</b>(DifferenceType n) (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>operator-&gt;</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator&lt;</b>(ConstIterator that) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>operator&lt;=</b>(ConstIterator that) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>operator-&gt;</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator&lt;</b>(ConstIterator that) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>operator&lt;=</b>(ConstIterator that) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator=</b>(const NonConstIterator &amp;it) (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>operator==</b>(ConstIterator that) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator&gt;</b>(ConstIterator that) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>operator&gt;=</b>(ConstIterator that) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(DifferenceType n) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>operator==</b>(ConstIterator that) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator&gt;</b>(ConstIterator that) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>operator&gt;=</b>(ConstIterator that) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(DifferenceType n) const (定义于 <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a17955e32a06f667c672b270e6a4d2195">Pointer</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a915a1b6f0a0bbe6a1df69571a789e348">Reference</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
diff --git a/zh-cn/classrapidjson_1_1_generic_member_iterator.html b/zh-cn/classrapidjson_1_1_generic_member_iterator.html
index 392872ff..5c5151c3 100644
--- a/zh-cn/classrapidjson_1_1_generic_member_iterator.html
+++ b/zh-cn/classrapidjson_1_1_generic_member_iterator.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_member_iter
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -94,36 +95,34 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_member_iter
类 rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt; 继承关系图:</div>
<div class="dyncontent">
<div class="center">
- <img src="classrapidjson_1_1_generic_member_iterator.png" usemap="#rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;_map" alt=""/>
- <map id="rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;_map" name="rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;_map">
+ <img src="classrapidjson_1_1_generic_member_iterator.png" usemap="#rapidjson::GenericMemberIterator_3C_20Const_2C_20Encoding_2C_20Allocator_20_3E_map" alt=""/>
+ <map id="rapidjson::GenericMemberIterator_3C_20Const_2C_20Encoding_2C_20Allocator_20_3E_map" name="rapidjson::GenericMemberIterator_3C_20Const_2C_20Encoding_2C_20Allocator_20_3E_map">
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a37091c3dd8470486ef5188f3c1108653"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a37091c3dd8470486ef5188f3c1108653"></a>
+<tr class="memitem:a37091c3dd8470486ef5188f3c1108653"><td class="memItemLeft" align="right" valign="top"><a id="a37091c3dd8470486ef5188f3c1108653"></a>
typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">Iterator</a></td></tr>
-<tr class="memdesc:a37091c3dd8470486ef5188f3c1108653"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterator type itself. <br /></td></tr>
+<tr class="memdesc:a37091c3dd8470486ef5188f3c1108653"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterator type itself <br /></td></tr>
<tr class="separator:a37091c3dd8470486ef5188f3c1108653"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a61b9a9ba8a5917d90406532f104605cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61b9a9ba8a5917d90406532f104605cc"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a><br class="typebreak" />
-&lt; true, <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a></td></tr>
-<tr class="memdesc:a61b9a9ba8a5917d90406532f104605cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant iterator type. <br /></td></tr>
+<tr class="memitem:a61b9a9ba8a5917d90406532f104605cc"><td class="memItemLeft" align="right" valign="top"><a id="a61b9a9ba8a5917d90406532f104605cc"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>&lt; true, <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a></td></tr>
+<tr class="memdesc:a61b9a9ba8a5917d90406532f104605cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant iterator type <br /></td></tr>
<tr class="separator:a61b9a9ba8a5917d90406532f104605cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1a91868fa388664bb301061e3e24badb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a91868fa388664bb301061e3e24badb"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a><br class="typebreak" />
-&lt; false, <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a1a91868fa388664bb301061e3e24badb">NonConstIterator</a></td></tr>
-<tr class="memdesc:a1a91868fa388664bb301061e3e24badb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Non-constant iterator type. <br /></td></tr>
+<tr class="memitem:a1a91868fa388664bb301061e3e24badb"><td class="memItemLeft" align="right" valign="top"><a id="a1a91868fa388664bb301061e3e24badb"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>&lt; false, <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a1a91868fa388664bb301061e3e24badb">NonConstIterator</a></td></tr>
+<tr class="memdesc:a1a91868fa388664bb301061e3e24badb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Non-constant iterator type <br /></td></tr>
<tr class="separator:a1a91868fa388664bb301061e3e24badb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a17955e32a06f667c672b270e6a4d2195"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17955e32a06f667c672b270e6a4d2195"></a>
+<tr class="memitem:a17955e32a06f667c672b270e6a4d2195"><td class="memItemLeft" align="right" valign="top"><a id="a17955e32a06f667c672b270e6a4d2195"></a>
typedef BaseType::pointer&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a17955e32a06f667c672b270e6a4d2195">Pointer</a></td></tr>
-<tr class="memdesc:a17955e32a06f667c672b270e6a4d2195"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to (const) <a class="el" href="structrapidjson_1_1_generic_member.html" title="Name-value pair in a JSON object value. ">GenericMember</a>. <br /></td></tr>
+<tr class="memdesc:a17955e32a06f667c672b270e6a4d2195"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to (const) <a class="el" href="structrapidjson_1_1_generic_member.html" title="Name-value pair in a JSON object value. ">GenericMember</a> <br /></td></tr>
<tr class="separator:a17955e32a06f667c672b270e6a4d2195"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a915a1b6f0a0bbe6a1df69571a789e348"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a915a1b6f0a0bbe6a1df69571a789e348"></a>
+<tr class="memitem:a915a1b6f0a0bbe6a1df69571a789e348"><td class="memItemLeft" align="right" valign="top"><a id="a915a1b6f0a0bbe6a1df69571a789e348"></a>
typedef BaseType::reference&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a915a1b6f0a0bbe6a1df69571a789e348">Reference</a></td></tr>
-<tr class="memdesc:a915a1b6f0a0bbe6a1df69571a789e348"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reference to (const) <a class="el" href="structrapidjson_1_1_generic_member.html" title="Name-value pair in a JSON object value. ">GenericMember</a>. <br /></td></tr>
+<tr class="memdesc:a915a1b6f0a0bbe6a1df69571a789e348"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reference to (const) <a class="el" href="structrapidjson_1_1_generic_member.html" title="Name-value pair in a JSON object value. ">GenericMember</a> <br /></td></tr>
<tr class="separator:a915a1b6f0a0bbe6a1df69571a789e348"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a41b953d6523fdc09f4f21c7b345e5833"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41b953d6523fdc09f4f21c7b345e5833"></a>
+<tr class="memitem:a41b953d6523fdc09f4f21c7b345e5833"><td class="memItemLeft" align="right" valign="top"><a id="a41b953d6523fdc09f4f21c7b345e5833"></a>
typedef BaseType::difference_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">DifferenceType</a></td></tr>
<tr class="memdesc:a41b953d6523fdc09f4f21c7b345e5833"><td class="mdescLeft">&#160;</td><td class="mdescRight">Signed integer type (e.g. <code>ptrdiff_t</code>) <br /></td></tr>
<tr class="separator:a41b953d6523fdc09f4f21c7b345e5833"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -134,77 +133,77 @@ Public 成员函数</h2></td></tr>
<tr class="memdesc:ac920af483c9e31a6746c22acf0dffc50"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor (singular value) <a href="#ac920af483c9e31a6746c22acf0dffc50">更多...</a><br /></td></tr>
<tr class="separator:ac920af483c9e31a6746c22acf0dffc50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa30ffef74b3f4978b403024d81b484e4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#aa30ffef74b3f4978b403024d81b484e4">GenericMemberIterator</a> (const <a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a1a91868fa388664bb301061e3e24badb">NonConstIterator</a> &amp;it)</td></tr>
-<tr class="memdesc:aa30ffef74b3f4978b403024d81b484e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterator conversions to more const. <a href="#aa30ffef74b3f4978b403024d81b484e4">更多...</a><br /></td></tr>
+<tr class="memdesc:aa30ffef74b3f4978b403024d81b484e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iterator conversions to more const <a href="#aa30ffef74b3f4978b403024d81b484e4">更多...</a><br /></td></tr>
<tr class="separator:aa30ffef74b3f4978b403024d81b484e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a192f924969f2b9d99ed1ec4ec2552884"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a192f924969f2b9d99ed1ec4ec2552884"></a>
+<tr class="memitem:a192f924969f2b9d99ed1ec4ec2552884"><td class="memItemLeft" align="right" valign="top"><a id="a192f924969f2b9d99ed1ec4ec2552884"></a>
<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">Iterator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a1a91868fa388664bb301061e3e24badb">NonConstIterator</a> &amp;it)</td></tr>
<tr class="separator:a192f924969f2b9d99ed1ec4ec2552884"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6d7cfaef258b0774da1b642907d81060"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d7cfaef258b0774da1b642907d81060"></a>
-<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">DifferenceType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a6d7cfaef258b0774da1b642907d81060">operator-</a> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a> that) const </td></tr>
-<tr class="memdesc:a6d7cfaef258b0774da1b642907d81060"><td class="mdescLeft">&#160;</td><td class="mdescRight">Distance. <br /></td></tr>
-<tr class="separator:a6d7cfaef258b0774da1b642907d81060"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abfad2c34a97f82178cbf9464e958e2c2"><td class="memItemLeft" align="right" valign="top"><a id="abfad2c34a97f82178cbf9464e958e2c2"></a>
+<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">DifferenceType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html#abfad2c34a97f82178cbf9464e958e2c2">operator-</a> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a> that) const</td></tr>
+<tr class="memdesc:abfad2c34a97f82178cbf9464e958e2c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Distance <br /></td></tr>
+<tr class="separator:abfad2c34a97f82178cbf9464e958e2c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">stepping</div></td></tr>
-<tr class="memitem:a0854c7e305fa3b9c509a85bcba7c37b1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0854c7e305fa3b9c509a85bcba7c37b1"></a>
+<tr class="memitem:a0854c7e305fa3b9c509a85bcba7c37b1"><td class="memItemLeft" align="right" valign="top"><a id="a0854c7e305fa3b9c509a85bcba7c37b1"></a>
<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">Iterator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator++</b> ()</td></tr>
<tr class="separator:a0854c7e305fa3b9c509a85bcba7c37b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5b29025a0fe480332fa24922ef5852c0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b29025a0fe480332fa24922ef5852c0"></a>
+<tr class="memitem:a5b29025a0fe480332fa24922ef5852c0"><td class="memItemLeft" align="right" valign="top"><a id="a5b29025a0fe480332fa24922ef5852c0"></a>
<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">Iterator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator--</b> ()</td></tr>
<tr class="separator:a5b29025a0fe480332fa24922ef5852c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a38a9b2515b32b47183948bc76449cd18"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38a9b2515b32b47183948bc76449cd18"></a>
+<tr class="memitem:a38a9b2515b32b47183948bc76449cd18"><td class="memItemLeft" align="right" valign="top"><a id="a38a9b2515b32b47183948bc76449cd18"></a>
<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">Iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator++</b> (int)</td></tr>
<tr class="separator:a38a9b2515b32b47183948bc76449cd18"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aeb9ae9faaca1608e9ee93ebb50892839"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeb9ae9faaca1608e9ee93ebb50892839"></a>
+<tr class="memitem:aeb9ae9faaca1608e9ee93ebb50892839"><td class="memItemLeft" align="right" valign="top"><a id="aeb9ae9faaca1608e9ee93ebb50892839"></a>
<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">Iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator--</b> (int)</td></tr>
<tr class="separator:aeb9ae9faaca1608e9ee93ebb50892839"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">increment/decrement</div></td></tr>
-<tr class="memitem:afeae73650cc16de6dd7c459d0e46c262"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afeae73650cc16de6dd7c459d0e46c262"></a>
-<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">Iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator+</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">DifferenceType</a> n) const </td></tr>
-<tr class="separator:afeae73650cc16de6dd7c459d0e46c262"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a81ee4247651f3aa3653b31f0016a7d46"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81ee4247651f3aa3653b31f0016a7d46"></a>
-<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">Iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator-</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">DifferenceType</a> n) const </td></tr>
-<tr class="separator:a81ee4247651f3aa3653b31f0016a7d46"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7f531c899039358b2a5cd1873d71beb2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7f531c899039358b2a5cd1873d71beb2"></a>
+<tr class="memitem:ace89a84c151b8346cfc9ade17b5bac21"><td class="memItemLeft" align="right" valign="top"><a id="ace89a84c151b8346cfc9ade17b5bac21"></a>
+<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">Iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator+</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">DifferenceType</a> n) const</td></tr>
+<tr class="separator:ace89a84c151b8346cfc9ade17b5bac21"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a36f7e485594c44a81a7c501cafb1cbf7"><td class="memItemLeft" align="right" valign="top"><a id="a36f7e485594c44a81a7c501cafb1cbf7"></a>
+<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">Iterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator-</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">DifferenceType</a> n) const</td></tr>
+<tr class="separator:a36f7e485594c44a81a7c501cafb1cbf7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7f531c899039358b2a5cd1873d71beb2"><td class="memItemLeft" align="right" valign="top"><a id="a7f531c899039358b2a5cd1873d71beb2"></a>
<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">Iterator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator+=</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">DifferenceType</a> n)</td></tr>
<tr class="separator:a7f531c899039358b2a5cd1873d71beb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a38d0f8a8d55d86b0b2f49b308978ba0e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38d0f8a8d55d86b0b2f49b308978ba0e"></a>
+<tr class="memitem:a38d0f8a8d55d86b0b2f49b308978ba0e"><td class="memItemLeft" align="right" valign="top"><a id="a38d0f8a8d55d86b0b2f49b308978ba0e"></a>
<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">Iterator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator-=</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">DifferenceType</a> n)</td></tr>
<tr class="separator:a38d0f8a8d55d86b0b2f49b308978ba0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">relations</div></td></tr>
-<tr class="memitem:a6036bfa6337e6aa30b5e5c8ee6a6b47a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6036bfa6337e6aa30b5e5c8ee6a6b47a"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator==</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a> that) const </td></tr>
-<tr class="separator:a6036bfa6337e6aa30b5e5c8ee6a6b47a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1565b29a6926f1608458d0390cb08a0c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1565b29a6926f1608458d0390cb08a0c"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a> that) const </td></tr>
-<tr class="separator:a1565b29a6926f1608458d0390cb08a0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0122d34447eb93d44a206b458c07f0ad"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0122d34447eb93d44a206b458c07f0ad"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator&lt;=</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a> that) const </td></tr>
-<tr class="separator:a0122d34447eb93d44a206b458c07f0ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adc513705f7e344cf2eca93e8ae609e4b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc513705f7e344cf2eca93e8ae609e4b"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator&gt;=</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a> that) const </td></tr>
-<tr class="separator:adc513705f7e344cf2eca93e8ae609e4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a88534f0a8a2d3095845bf92e92244216"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a88534f0a8a2d3095845bf92e92244216"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator&lt;</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a> that) const </td></tr>
-<tr class="separator:a88534f0a8a2d3095845bf92e92244216"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a075195a552e8624f3dd95b9cac9d377f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a075195a552e8624f3dd95b9cac9d377f"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator&gt;</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a> that) const </td></tr>
-<tr class="separator:a075195a552e8624f3dd95b9cac9d377f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a874f8e34f3ae9889e9380feb36582779"><td class="memItemLeft" align="right" valign="top"><a id="a874f8e34f3ae9889e9380feb36582779"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator==</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a> that) const</td></tr>
+<tr class="separator:a874f8e34f3ae9889e9380feb36582779"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6c313e57c10ca419a7321ee791378198"><td class="memItemLeft" align="right" valign="top"><a id="a6c313e57c10ca419a7321ee791378198"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a> that) const</td></tr>
+<tr class="separator:a6c313e57c10ca419a7321ee791378198"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8defc2832dfffde7e7e8cab99233f16f"><td class="memItemLeft" align="right" valign="top"><a id="a8defc2832dfffde7e7e8cab99233f16f"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator&lt;=</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a> that) const</td></tr>
+<tr class="separator:a8defc2832dfffde7e7e8cab99233f16f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1cfebee3ec82a524dfe3788854eebb8c"><td class="memItemLeft" align="right" valign="top"><a id="a1cfebee3ec82a524dfe3788854eebb8c"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator&gt;=</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a> that) const</td></tr>
+<tr class="separator:a1cfebee3ec82a524dfe3788854eebb8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae40f615a3674f3d387cba9fac217a30b"><td class="memItemLeft" align="right" valign="top"><a id="ae40f615a3674f3d387cba9fac217a30b"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator&lt;</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a> that) const</td></tr>
+<tr class="separator:ae40f615a3674f3d387cba9fac217a30b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afeb581725f6ae68ed508803e73295a14"><td class="memItemLeft" align="right" valign="top"><a id="afeb581725f6ae68ed508803e73295a14"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator&gt;</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a> that) const</td></tr>
+<tr class="separator:afeb581725f6ae68ed508803e73295a14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">dereference</div></td></tr>
-<tr class="memitem:a71a9839fb0a74fb27ab42708a267be8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a71a9839fb0a74fb27ab42708a267be8e"></a>
-<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a915a1b6f0a0bbe6a1df69571a789e348">Reference</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator*</b> () const </td></tr>
-<tr class="separator:a71a9839fb0a74fb27ab42708a267be8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5e7ae66f286fc67da4d53f13eb7f47e7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e7ae66f286fc67da4d53f13eb7f47e7"></a>
-<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a17955e32a06f667c672b270e6a4d2195">Pointer</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator-&gt;</b> () const </td></tr>
-<tr class="separator:a5e7ae66f286fc67da4d53f13eb7f47e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aad9022156ee168a878bce7e0ff197087"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad9022156ee168a878bce7e0ff197087"></a>
-<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a915a1b6f0a0bbe6a1df69571a789e348">Reference</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">DifferenceType</a> n) const </td></tr>
-<tr class="separator:aad9022156ee168a878bce7e0ff197087"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a21d762a5d9641cde856336ac439a20e1"><td class="memItemLeft" align="right" valign="top"><a id="a21d762a5d9641cde856336ac439a20e1"></a>
+<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a915a1b6f0a0bbe6a1df69571a789e348">Reference</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator*</b> () const</td></tr>
+<tr class="separator:a21d762a5d9641cde856336ac439a20e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0e6cf49338db1c15b9e2bb93005b7597"><td class="memItemLeft" align="right" valign="top"><a id="a0e6cf49338db1c15b9e2bb93005b7597"></a>
+<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a17955e32a06f667c672b270e6a4d2195">Pointer</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator-&gt;</b> () const</td></tr>
+<tr class="separator:a0e6cf49338db1c15b9e2bb93005b7597"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a76a73a0206437a1318bb93af83f0b7ec"><td class="memItemLeft" align="right" valign="top"><a id="a76a73a0206437a1318bb93af83f0b7ec"></a>
+<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a915a1b6f0a0bbe6a1df69571a789e348">Reference</a>&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">DifferenceType</a> n) const</td></tr>
+<tr class="separator:a76a73a0206437a1318bb93af83f0b7ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
友元</h2></td></tr>
-<tr class="memitem:a82bdd5798f1a5ac0e3e7ba4bd6938cfc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a82bdd5798f1a5ac0e3e7ba4bd6938cfc"></a>
+<tr class="memitem:a82bdd5798f1a5ac0e3e7ba4bd6938cfc"><td class="memItemLeft" align="right" valign="top"><a id="a82bdd5798f1a5ac0e3e7ba4bd6938cfc"></a>
class&#160;</td><td class="memItemRight" valign="bottom"><b>GenericValue&lt; Encoding, Allocator &gt;</b></td></tr>
<tr class="separator:a82bdd5798f1a5ac0e3e7ba4bd6938cfc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa375aeb1ffac85cddc3a72a6c24ec6e1"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa375aeb1ffac85cddc3a72a6c24ec6e1"></a>
+<tr class="memitem:aa375aeb1ffac85cddc3a72a6c24ec6e1"><td class="memTemplParams" colspan="2"><a id="aa375aeb1ffac85cddc3a72a6c24ec6e1"></a>
template&lt;bool , typename , typename &gt; </td></tr>
<tr class="memitem:aa375aeb1ffac85cddc3a72a6c24ec6e1"><td class="memTemplItemLeft" align="right" valign="top">class&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GenericMemberIterator</b></td></tr>
<tr class="separator:aa375aeb1ffac85cddc3a72a6c24ec6e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -228,11 +227,13 @@ class rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</h3>
Define <code>RAPIDJSON_NOMEMBERITERATORCLASS</code> to fall back to a pointer-based implementation, if your platform doesn't provide the C++ &lt;iterator&gt; header.</dd></dl>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="structrapidjson_1_1_generic_member.html" title="Name-value pair in a JSON object value. ">GenericMember</a>, <a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b" title="Member iterator for iterating in object. ">GenericValue::MemberIterator</a>, <a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f" title="Constant member iterator for iterating in object. ">GenericValue::ConstMemberIterator</a> </dd></dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
-<a class="anchor" id="ac920af483c9e31a6746c22acf0dffc50"></a>
+<a id="ac920af483c9e31a6746c22acf0dffc50"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac920af483c9e31a6746c22acf0dffc50">&#9670;&nbsp;</a></span>GenericMemberIterator() <span class="overload">[1/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;bool Const, typename Encoding, typename Allocator&gt; </div>
+template&lt;bool Const, typename Encoding , typename Allocator &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -256,11 +257,13 @@ template&lt;bool Const, typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="aa30ffef74b3f4978b403024d81b484e4"></a>
+<a id="aa30ffef74b3f4978b403024d81b484e4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa30ffef74b3f4978b403024d81b484e4">&#9670;&nbsp;</a></span>GenericMemberIterator() <span class="overload">[2/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;bool Const, typename Encoding, typename Allocator&gt; </div>
+template&lt;bool Const, typename Encoding , typename Allocator &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -280,7 +283,7 @@ template&lt;bool Const, typename Encoding, typename Allocator&gt; </div>
</table>
</div><div class="memdoc">
-<p>Iterator conversions to more const. </p>
+<p>Iterator conversions to more const </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">it</td><td>(Non-const) iterator to copy from</td></tr>
diff --git a/zh-cn/classrapidjson_1_1_generic_member_iterator.js b/zh-cn/classrapidjson_1_1_generic_member_iterator.js
index a3bc2336..4c0d181c 100644
--- a/zh-cn/classrapidjson_1_1_generic_member_iterator.js
+++ b/zh-cn/classrapidjson_1_1_generic_member_iterator.js
@@ -8,25 +8,25 @@ var classrapidjson_1_1_generic_member_iterator =
[ "Reference", "classrapidjson_1_1_generic_member_iterator.html#a915a1b6f0a0bbe6a1df69571a789e348", null ],
[ "GenericMemberIterator", "classrapidjson_1_1_generic_member_iterator.html#ac920af483c9e31a6746c22acf0dffc50", null ],
[ "GenericMemberIterator", "classrapidjson_1_1_generic_member_iterator.html#aa30ffef74b3f4978b403024d81b484e4", null ],
- [ "operator!=", "classrapidjson_1_1_generic_member_iterator.html#a1565b29a6926f1608458d0390cb08a0c", null ],
- [ "operator*", "classrapidjson_1_1_generic_member_iterator.html#a71a9839fb0a74fb27ab42708a267be8e", null ],
- [ "operator+", "classrapidjson_1_1_generic_member_iterator.html#afeae73650cc16de6dd7c459d0e46c262", null ],
+ [ "operator!=", "classrapidjson_1_1_generic_member_iterator.html#a6c313e57c10ca419a7321ee791378198", null ],
+ [ "operator*", "classrapidjson_1_1_generic_member_iterator.html#a21d762a5d9641cde856336ac439a20e1", null ],
+ [ "operator+", "classrapidjson_1_1_generic_member_iterator.html#ace89a84c151b8346cfc9ade17b5bac21", null ],
[ "operator++", "classrapidjson_1_1_generic_member_iterator.html#a0854c7e305fa3b9c509a85bcba7c37b1", null ],
[ "operator++", "classrapidjson_1_1_generic_member_iterator.html#a38a9b2515b32b47183948bc76449cd18", null ],
[ "operator+=", "classrapidjson_1_1_generic_member_iterator.html#a7f531c899039358b2a5cd1873d71beb2", null ],
- [ "operator-", "classrapidjson_1_1_generic_member_iterator.html#a81ee4247651f3aa3653b31f0016a7d46", null ],
- [ "operator-", "classrapidjson_1_1_generic_member_iterator.html#a6d7cfaef258b0774da1b642907d81060", null ],
+ [ "operator-", "classrapidjson_1_1_generic_member_iterator.html#a36f7e485594c44a81a7c501cafb1cbf7", null ],
+ [ "operator-", "classrapidjson_1_1_generic_member_iterator.html#abfad2c34a97f82178cbf9464e958e2c2", null ],
[ "operator--", "classrapidjson_1_1_generic_member_iterator.html#a5b29025a0fe480332fa24922ef5852c0", null ],
[ "operator--", "classrapidjson_1_1_generic_member_iterator.html#aeb9ae9faaca1608e9ee93ebb50892839", null ],
[ "operator-=", "classrapidjson_1_1_generic_member_iterator.html#a38d0f8a8d55d86b0b2f49b308978ba0e", null ],
- [ "operator->", "classrapidjson_1_1_generic_member_iterator.html#a5e7ae66f286fc67da4d53f13eb7f47e7", null ],
- [ "operator<", "classrapidjson_1_1_generic_member_iterator.html#a88534f0a8a2d3095845bf92e92244216", null ],
- [ "operator<=", "classrapidjson_1_1_generic_member_iterator.html#a0122d34447eb93d44a206b458c07f0ad", null ],
+ [ "operator->", "classrapidjson_1_1_generic_member_iterator.html#a0e6cf49338db1c15b9e2bb93005b7597", null ],
+ [ "operator<", "classrapidjson_1_1_generic_member_iterator.html#ae40f615a3674f3d387cba9fac217a30b", null ],
+ [ "operator<=", "classrapidjson_1_1_generic_member_iterator.html#a8defc2832dfffde7e7e8cab99233f16f", null ],
[ "operator=", "classrapidjson_1_1_generic_member_iterator.html#a192f924969f2b9d99ed1ec4ec2552884", null ],
- [ "operator==", "classrapidjson_1_1_generic_member_iterator.html#a6036bfa6337e6aa30b5e5c8ee6a6b47a", null ],
- [ "operator>", "classrapidjson_1_1_generic_member_iterator.html#a075195a552e8624f3dd95b9cac9d377f", null ],
- [ "operator>=", "classrapidjson_1_1_generic_member_iterator.html#adc513705f7e344cf2eca93e8ae609e4b", null ],
- [ "operator[]", "classrapidjson_1_1_generic_member_iterator.html#aad9022156ee168a878bce7e0ff197087", null ],
+ [ "operator==", "classrapidjson_1_1_generic_member_iterator.html#a874f8e34f3ae9889e9380feb36582779", null ],
+ [ "operator>", "classrapidjson_1_1_generic_member_iterator.html#afeb581725f6ae68ed508803e73295a14", null ],
+ [ "operator>=", "classrapidjson_1_1_generic_member_iterator.html#a1cfebee3ec82a524dfe3788854eebb8c", null ],
+ [ "operator[]", "classrapidjson_1_1_generic_member_iterator.html#a76a73a0206437a1318bb93af83f0b7ec", null ],
[ "GenericMemberIterator", "classrapidjson_1_1_generic_member_iterator.html#aa375aeb1ffac85cddc3a72a6c24ec6e1", null ],
[ "GenericValue< Encoding, Allocator >", "classrapidjson_1_1_generic_member_iterator.html#a82bdd5798f1a5ac0e3e7ba4bd6938cfc", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_generic_object-members.html b/zh-cn/classrapidjson_1_1_generic_object-members.html
index 248f6a37..9f52324b 100644
--- a/zh-cn/classrapidjson_1_1_generic_object-members.html
+++ b/zh-cn/classrapidjson_1_1_generic_object-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_object.html
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -77,56 +78,56 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_object.html
<div class="header">
<div class="headertitle">
-<div class="title">rapidjson::GenericObject&lt; bool, typename &gt; 成员列表</div> </div>
+<div class="title">rapidjson::GenericObject&lt; Const, ValueT &gt; 成员列表</div> </div>
</div><!--header-->
<div class="contents">
-<p>成员的完整列表,这些成员属于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>,包括所有继承而来的类成员</p>
+<p>成员的完整列表,这些成员属于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>,包括所有继承而来的类成员</p>
<table class="directory">
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AddMember</b>(ValueType &amp;name, ValueType &amp;value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>AddMember</b>(ValueType &amp;name, StringRefType value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AddMember</b>(ValueType &amp;name, std::basic_string&lt; Ch &gt; &amp;value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>AddMember</b>(ValueType &amp;name, T value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AddMember</b>(StringRefType name, ValueType &amp;value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>AddMember</b>(StringRefType name, StringRefType value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AddMember</b>(StringRefType name, T value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>AllocatorType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Ch</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>ConstMemberIterator</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ConstObject</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>EncodingType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EraseMember</b>(ConstMemberIterator pos) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>EraseMember</b>(ConstMemberIterator first, ConstMemberIterator last) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EraseMember</b>(const Ch *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>EraseMember</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EraseMember</b>(const GenericValue&lt; EncodingType, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>FindMember</b>(const Ch *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FindMember</b>(const GenericValue&lt; EncodingType, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>FindMember</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GenericObject</b>(const GenericObject &amp;rhs) (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GenericValue</b> (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>HasMember</b>(const Ch *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>HasMember</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>HasMember</b>(const GenericValue&lt; EncodingType, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>MemberBegin</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MemberCount</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>MemberEnd</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MemberIterator</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Object</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ObjectEmpty</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const GenericObject &amp;rhs) (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(T *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>operator[]</b>(const GenericValue&lt; EncodingType, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>PlainType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RemoveAllMembers</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>RemoveMember</b>(const Ch *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RemoveMember</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>RemoveMember</b>(const GenericValue&lt; EncodingType, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RemoveMember</b>(MemberIterator m) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>StringRefType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ValueType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>~GenericObject</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AddMember</b>(ValueType &amp;name, ValueType &amp;value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>AddMember</b>(ValueType &amp;name, StringRefType value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AddMember</b>(ValueType &amp;name, std::basic_string&lt; Ch &gt; &amp;value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>AddMember</b>(ValueType &amp;name, T value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AddMember</b>(StringRefType name, ValueType &amp;value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>AddMember</b>(StringRefType name, StringRefType value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AddMember</b>(StringRefType name, T value, AllocatorType &amp;allocator) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>AllocatorType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Ch</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>ConstMemberIterator</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ConstObject</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>EncodingType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EraseMember</b>(ConstMemberIterator pos) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>EraseMember</b>(ConstMemberIterator first, ConstMemberIterator last) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EraseMember</b>(const Ch *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>EraseMember</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EraseMember</b>(const GenericValue&lt; EncodingType, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>FindMember</b>(const Ch *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FindMember</b>(const GenericValue&lt; EncodingType, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>FindMember</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GenericObject</b>(const GenericObject &amp;rhs) (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GenericValue</b> (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>HasMember</b>(const Ch *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>HasMember</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>HasMember</b>(const GenericValue&lt; EncodingType, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>MemberBegin</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MemberCount</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>MemberEnd</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MemberIterator</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Object</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ObjectEmpty</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>operator=</b>(const GenericObject &amp;rhs) (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(T *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>operator[]</b>(const GenericValue&lt; EncodingType, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator[]</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>PlainType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RemoveAllMembers</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>RemoveMember</b>(const Ch *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RemoveMember</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>RemoveMember</b>(const GenericValue&lt; EncodingType, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RemoveMember</b>(MemberIterator m) const (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>StringRefType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>ValueType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>~GenericObject</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/classrapidjson_1_1_generic_object.html b/zh-cn/classrapidjson_1_1_generic_object.html
index a0f8bc1b..e8c4f7b1 100644
--- a/zh-cn/classrapidjson_1_1_generic_object.html
+++ b/zh-cn/classrapidjson_1_1_generic_object.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
-<title>RapidJSON: rapidjson::GenericObject&lt; bool, typename &gt; 模板类 参考</title>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<title>RapidJSON: rapidjson::GenericObject&lt; Const, ValueT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_object.html
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -82,7 +83,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_object.html
<a href="#friends">友元</a> &#124;
<a href="classrapidjson_1_1_generic_object-members.html">所有成员列表</a> </div>
<div class="headertitle">
-<div class="title">rapidjson::GenericObject&lt; bool, typename &gt; 模板类 参考</div> </div>
+<div class="title">rapidjson::GenericObject&lt; Const, ValueT &gt; 模板类 参考</div> </div>
</div><!--header-->
<div class="contents">
@@ -93,164 +94,154 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_object.html
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:ab69826a21c401352104a4cc803b254ed"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab69826a21c401352104a4cc803b254ed"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&lt; true, <br class="typebreak" />
-ValueT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstObject</b></td></tr>
-<tr class="separator:ab69826a21c401352104a4cc803b254ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a316aaee9efc32f7599e8335b0dfcb994"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a316aaee9efc32f7599e8335b0dfcb994"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&lt; false, <br class="typebreak" />
-ValueT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Object</b></td></tr>
-<tr class="separator:a316aaee9efc32f7599e8335b0dfcb994"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adaa6f8aa349c16363035170c5cdda4c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adaa6f8aa349c16363035170c5cdda4c2"></a>
+<tr class="memitem:a00d71a7ee4d903e74fdc5a83750dd0f7"><td class="memItemLeft" align="right" valign="top"><a id="a00d71a7ee4d903e74fdc5a83750dd0f7"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&lt; true, ValueT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstObject</b></td></tr>
+<tr class="separator:a00d71a7ee4d903e74fdc5a83750dd0f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a046e47c2bc624f677603d34d0f108347"><td class="memItemLeft" align="right" valign="top"><a id="a046e47c2bc624f677603d34d0f108347"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&lt; false, ValueT &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Object</b></td></tr>
+<tr class="separator:a046e47c2bc624f677603d34d0f108347"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a46c7868bddba87a819cccca94bbdbda9"><td class="memItemLeft" align="right" valign="top"><a id="a46c7868bddba87a819cccca94bbdbda9"></a>
typedef ValueT&#160;</td><td class="memItemRight" valign="bottom"><b>PlainType</b></td></tr>
-<tr class="separator:adaa6f8aa349c16363035170c5cdda4c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2e9bdc3415548283c8977d4368415cf0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e9bdc3415548283c8977d4368415cf0"></a>
-typedef <br class="typebreak" />
-internal::MaybeAddConst&lt; Const, <br class="typebreak" />
-PlainType &gt;::<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>&#160;</td><td class="memItemRight" valign="bottom"><b>ValueType</b></td></tr>
-<tr class="separator:a2e9bdc3415548283c8977d4368415cf0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acb878d8d0ea52ab7f9f91d622e412d1c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb878d8d0ea52ab7f9f91d622e412d1c"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a><br class="typebreak" />
-&lt; Const, typename <br class="typebreak" />
-ValueT::EncodingType, typename <br class="typebreak" />
-ValueT::AllocatorType &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>MemberIterator</b></td></tr>
-<tr class="separator:acb878d8d0ea52ab7f9f91d622e412d1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2d5a458d0b48498cc46be82aba937e10"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d5a458d0b48498cc46be82aba937e10"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a><br class="typebreak" />
-&lt; true, typename <br class="typebreak" />
-ValueT::EncodingType, typename <br class="typebreak" />
-ValueT::AllocatorType &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstMemberIterator</b></td></tr>
-<tr class="separator:a2d5a458d0b48498cc46be82aba937e10"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad5445b0f7623a17b20f4d947cc9c46a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5445b0f7623a17b20f4d947cc9c46a1"></a>
+<tr class="separator:a46c7868bddba87a819cccca94bbdbda9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a282660500748eff5ebab93b88a9d478f"><td class="memItemLeft" align="right" valign="top"><a id="a282660500748eff5ebab93b88a9d478f"></a>
+typedef internal::MaybeAddConst&lt; Const, PlainType &gt;::<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>&#160;</td><td class="memItemRight" valign="bottom"><b>ValueType</b></td></tr>
+<tr class="separator:a282660500748eff5ebab93b88a9d478f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a598fd1d5f55289eca275847f0e8ef295"><td class="memItemLeft" align="right" valign="top"><a id="a598fd1d5f55289eca275847f0e8ef295"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>&lt; Const, typename ValueT::EncodingType, typename ValueT::AllocatorType &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>MemberIterator</b></td></tr>
+<tr class="separator:a598fd1d5f55289eca275847f0e8ef295"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a579a7d7ab7102bcf86c948d0df3d2f2d"><td class="memItemLeft" align="right" valign="top"><a id="a579a7d7ab7102bcf86c948d0df3d2f2d"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>&lt; true, typename ValueT::EncodingType, typename ValueT::AllocatorType &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstMemberIterator</b></td></tr>
+<tr class="separator:a579a7d7ab7102bcf86c948d0df3d2f2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae30003e248368737382eed69ec8fe1eb"><td class="memItemLeft" align="right" valign="top"><a id="ae30003e248368737382eed69ec8fe1eb"></a>
typedef ValueType::AllocatorType&#160;</td><td class="memItemRight" valign="bottom"><b>AllocatorType</b></td></tr>
-<tr class="separator:ad5445b0f7623a17b20f4d947cc9c46a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9acdd4367fa4bcdd0a42cac9407826b4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9acdd4367fa4bcdd0a42cac9407826b4"></a>
+<tr class="separator:ae30003e248368737382eed69ec8fe1eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab47bc8d841321d77c140e9df729f5233"><td class="memItemLeft" align="right" valign="top"><a id="ab47bc8d841321d77c140e9df729f5233"></a>
typedef ValueType::StringRefType&#160;</td><td class="memItemRight" valign="bottom"><b>StringRefType</b></td></tr>
-<tr class="separator:a9acdd4367fa4bcdd0a42cac9407826b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4db59e277c974a365636e422e391c3b4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4db59e277c974a365636e422e391c3b4"></a>
+<tr class="separator:ab47bc8d841321d77c140e9df729f5233"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac412c8d073aa02f622b3904e4195425c"><td class="memItemLeft" align="right" valign="top"><a id="ac412c8d073aa02f622b3904e4195425c"></a>
typedef ValueType::EncodingType&#160;</td><td class="memItemRight" valign="bottom"><b>EncodingType</b></td></tr>
-<tr class="separator:a4db59e277c974a365636e422e391c3b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9782c6609c13d9ad2b5bd892d8cbf4a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9782c6609c13d9ad2b5bd892d8cbf4a1"></a>
+<tr class="separator:ac412c8d073aa02f622b3904e4195425c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a947f543afbdd5e6d1c5b2dd1fe5a6e60"><td class="memItemLeft" align="right" valign="top"><a id="a947f543afbdd5e6d1c5b2dd1fe5a6e60"></a>
typedef ValueType::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
-<tr class="separator:a9782c6609c13d9ad2b5bd892d8cbf4a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="separator:a947f543afbdd5e6d1c5b2dd1fe5a6e60"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:a996ed0f2d6de222eaa5e555964e4c20e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a996ed0f2d6de222eaa5e555964e4c20e"></a>
+<tr class="memitem:aae420e2eac920ff10d5c749f567e4905"><td class="memItemLeft" align="right" valign="top"><a id="aae420e2eac920ff10d5c749f567e4905"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>GenericObject</b> (const <a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a> &amp;rhs)</td></tr>
-<tr class="separator:a996ed0f2d6de222eaa5e555964e4c20e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3dd23b20c0ba292f7a09676493d1db27"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3dd23b20c0ba292f7a09676493d1db27"></a>
+<tr class="separator:aae420e2eac920ff10d5c749f567e4905"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af94485b6c52b821203fe2c23a92c282f"><td class="memItemLeft" align="right" valign="top"><a id="af94485b6c52b821203fe2c23a92c282f"></a>
<a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a> &amp;rhs)</td></tr>
-<tr class="separator:a3dd23b20c0ba292f7a09676493d1db27"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2542a5003f90a98626d55fcd2bbe07f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2542a5003f90a98626d55fcd2bbe07f6"></a>
-<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>MemberCount</b> () const </td></tr>
-<tr class="separator:a2542a5003f90a98626d55fcd2bbe07f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a394415edfd48d9a5f371c260fc37496c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a394415edfd48d9a5f371c260fc37496c"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>ObjectEmpty</b> () const </td></tr>
-<tr class="separator:a394415edfd48d9a5f371c260fc37496c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab72467cb9b73248d1c98ba6ae0d47bf2"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab72467cb9b73248d1c98ba6ae0d47bf2"></a>
+<tr class="separator:af94485b6c52b821203fe2c23a92c282f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a583962734202dfdf22ab851d78f24d92"><td class="memItemLeft" align="right" valign="top"><a id="a583962734202dfdf22ab851d78f24d92"></a>
+<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>MemberCount</b> () const</td></tr>
+<tr class="separator:a583962734202dfdf22ab851d78f24d92"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad5ad0ae2038d629f17b10b2b11ced58b"><td class="memItemLeft" align="right" valign="top"><a id="ad5ad0ae2038d629f17b10b2b11ced58b"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>ObjectEmpty</b> () const</td></tr>
+<tr class="separator:ad5ad0ae2038d629f17b10b2b11ced58b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a158d16b9052e356436211158f2fb0638"><td class="memTemplParams" colspan="2"><a id="a158d16b9052e356436211158f2fb0638"></a>
template&lt;typename T &gt; </td></tr>
-<tr class="memitem:ab72467cb9b73248d1c98ba6ae0d47bf2"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>operator[]</b> (T *name) const </td></tr>
-<tr class="separator:ab72467cb9b73248d1c98ba6ae0d47bf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a376c9e20c133ddb8bbbc678f174dc8bc"><td class="memTemplParams" colspan="2"><a class="anchor" id="a376c9e20c133ddb8bbbc678f174dc8bc"></a>
+<tr class="memitem:a158d16b9052e356436211158f2fb0638"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>operator[]</b> (T *name) const</td></tr>
+<tr class="separator:a158d16b9052e356436211158f2fb0638"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a920c32f4acd1f8a896c467777452595a"><td class="memTemplParams" colspan="2"><a id="a920c32f4acd1f8a896c467777452595a"></a>
template&lt;typename SourceAllocator &gt; </td></tr>
-<tr class="memitem:a376c9e20c133ddb8bbbc678f174dc8bc"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>operator[]</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; EncodingType, SourceAllocator &gt; &amp;name) const </td></tr>
-<tr class="separator:a376c9e20c133ddb8bbbc678f174dc8bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a024444704ef3ab6dd64b9ae544d31f6f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a024444704ef3ab6dd64b9ae544d31f6f"></a>
-ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (const std::basic_string&lt; Ch &gt; &amp;name) const </td></tr>
-<tr class="separator:a024444704ef3ab6dd64b9ae544d31f6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aec5d23c7e1e0156c254c5e9f73d96c0f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec5d23c7e1e0156c254c5e9f73d96c0f"></a>
-<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>MemberBegin</b> () const </td></tr>
-<tr class="separator:aec5d23c7e1e0156c254c5e9f73d96c0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3b563f651f5eba238c87aa8a692b97e5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3b563f651f5eba238c87aa8a692b97e5"></a>
-<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>MemberEnd</b> () const </td></tr>
-<tr class="separator:a3b563f651f5eba238c87aa8a692b97e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae3375abc321cef3e23d96be8ccfc2095"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3375abc321cef3e23d96be8ccfc2095"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>HasMember</b> (const Ch *name) const </td></tr>
-<tr class="separator:ae3375abc321cef3e23d96be8ccfc2095"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a125760c64421601e341eb90b6cfe95c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a125760c64421601e341eb90b6cfe95c4"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>HasMember</b> (const std::basic_string&lt; Ch &gt; &amp;name) const </td></tr>
-<tr class="separator:a125760c64421601e341eb90b6cfe95c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a947c52731e84a33bbcd2729ad72272b3"><td class="memTemplParams" colspan="2"><a class="anchor" id="a947c52731e84a33bbcd2729ad72272b3"></a>
+<tr class="memitem:a920c32f4acd1f8a896c467777452595a"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>operator[]</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; EncodingType, SourceAllocator &gt; &amp;name) const</td></tr>
+<tr class="separator:a920c32f4acd1f8a896c467777452595a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab9a78993f69240bff0744f05436aaf80"><td class="memItemLeft" align="right" valign="top"><a id="ab9a78993f69240bff0744f05436aaf80"></a>
+ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (const std::basic_string&lt; Ch &gt; &amp;name) const</td></tr>
+<tr class="separator:ab9a78993f69240bff0744f05436aaf80"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac3410e31a3a38bd7004daf8e76d5327c"><td class="memItemLeft" align="right" valign="top"><a id="ac3410e31a3a38bd7004daf8e76d5327c"></a>
+<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>MemberBegin</b> () const</td></tr>
+<tr class="separator:ac3410e31a3a38bd7004daf8e76d5327c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a446032e977f37638cf3c44eb3a972fdd"><td class="memItemLeft" align="right" valign="top"><a id="a446032e977f37638cf3c44eb3a972fdd"></a>
+<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>MemberEnd</b> () const</td></tr>
+<tr class="separator:a446032e977f37638cf3c44eb3a972fdd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a10fd0c5b5ef61479725590b78c006234"><td class="memItemLeft" align="right" valign="top"><a id="a10fd0c5b5ef61479725590b78c006234"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>HasMember</b> (const Ch *name) const</td></tr>
+<tr class="separator:a10fd0c5b5ef61479725590b78c006234"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa5cd5126d5965b6dfe0b630e53ad6cff"><td class="memItemLeft" align="right" valign="top"><a id="aa5cd5126d5965b6dfe0b630e53ad6cff"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>HasMember</b> (const std::basic_string&lt; Ch &gt; &amp;name) const</td></tr>
+<tr class="separator:aa5cd5126d5965b6dfe0b630e53ad6cff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a05c6698dd3203dbbe537942d63073fcc"><td class="memTemplParams" colspan="2"><a id="a05c6698dd3203dbbe537942d63073fcc"></a>
template&lt;typename SourceAllocator &gt; </td></tr>
-<tr class="memitem:a947c52731e84a33bbcd2729ad72272b3"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>HasMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; EncodingType, SourceAllocator &gt; &amp;name) const </td></tr>
-<tr class="separator:a947c52731e84a33bbcd2729ad72272b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abc0323708e17b4df4e3878f3a616e641"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc0323708e17b4df4e3878f3a616e641"></a>
-<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>FindMember</b> (const Ch *name) const </td></tr>
-<tr class="separator:abc0323708e17b4df4e3878f3a616e641"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2b792e93071a8aeeb19814400302b6ad"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2b792e93071a8aeeb19814400302b6ad"></a>
+<tr class="memitem:a05c6698dd3203dbbe537942d63073fcc"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>HasMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; EncodingType, SourceAllocator &gt; &amp;name) const</td></tr>
+<tr class="separator:a05c6698dd3203dbbe537942d63073fcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afaa41ea8c0ed91b7e064d31f6a6ab9ef"><td class="memItemLeft" align="right" valign="top"><a id="afaa41ea8c0ed91b7e064d31f6a6ab9ef"></a>
+<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>FindMember</b> (const Ch *name) const</td></tr>
+<tr class="separator:afaa41ea8c0ed91b7e064d31f6a6ab9ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae4681bdff872d25f5100bc53d8a48bb3"><td class="memTemplParams" colspan="2"><a id="ae4681bdff872d25f5100bc53d8a48bb3"></a>
template&lt;typename SourceAllocator &gt; </td></tr>
-<tr class="memitem:a2b792e93071a8aeeb19814400302b6ad"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><b>FindMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; EncodingType, SourceAllocator &gt; &amp;name) const </td></tr>
-<tr class="separator:a2b792e93071a8aeeb19814400302b6ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7df3a1a583291a8bd5fb0d771d57096e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7df3a1a583291a8bd5fb0d771d57096e"></a>
-<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>FindMember</b> (const std::basic_string&lt; Ch &gt; &amp;name) const </td></tr>
-<tr class="separator:a7df3a1a583291a8bd5fb0d771d57096e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5512f4339f327885b21a232f499a402b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5512f4339f327885b21a232f499a402b"></a>
-<a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&#160;</td><td class="memItemRight" valign="bottom"><b>AddMember</b> (ValueType &amp;name, ValueType &amp;value, AllocatorType &amp;allocator) const </td></tr>
-<tr class="separator:a5512f4339f327885b21a232f499a402b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acd99a41ea60aa60bcf782dbbc02af8aa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd99a41ea60aa60bcf782dbbc02af8aa"></a>
-<a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&#160;</td><td class="memItemRight" valign="bottom"><b>AddMember</b> (ValueType &amp;name, StringRefType value, AllocatorType &amp;allocator) const </td></tr>
-<tr class="separator:acd99a41ea60aa60bcf782dbbc02af8aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a134228f1d98876dc00a4d1355abb1c5c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a134228f1d98876dc00a4d1355abb1c5c"></a>
-<a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&#160;</td><td class="memItemRight" valign="bottom"><b>AddMember</b> (ValueType &amp;name, std::basic_string&lt; Ch &gt; &amp;value, AllocatorType &amp;allocator) const </td></tr>
-<tr class="separator:a134228f1d98876dc00a4d1355abb1c5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7ce499ac2bae523c94f39c17fb0edce5"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7ce499ac2bae523c94f39c17fb0edce5"></a>
+<tr class="memitem:ae4681bdff872d25f5100bc53d8a48bb3"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><b>FindMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; EncodingType, SourceAllocator &gt; &amp;name) const</td></tr>
+<tr class="separator:ae4681bdff872d25f5100bc53d8a48bb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac238b3e856310ca7f8622e1252ea7f0f"><td class="memItemLeft" align="right" valign="top"><a id="ac238b3e856310ca7f8622e1252ea7f0f"></a>
+<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>FindMember</b> (const std::basic_string&lt; Ch &gt; &amp;name) const</td></tr>
+<tr class="separator:ac238b3e856310ca7f8622e1252ea7f0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae811070cbc37cc67bb80a8bdb7d6db14"><td class="memItemLeft" align="right" valign="top"><a id="ae811070cbc37cc67bb80a8bdb7d6db14"></a>
+<a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&#160;</td><td class="memItemRight" valign="bottom"><b>AddMember</b> (ValueType &amp;name, ValueType &amp;value, AllocatorType &amp;allocator) const</td></tr>
+<tr class="separator:ae811070cbc37cc67bb80a8bdb7d6db14"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aebd8b710e89673cd279b798ba2f3cf85"><td class="memItemLeft" align="right" valign="top"><a id="aebd8b710e89673cd279b798ba2f3cf85"></a>
+<a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&#160;</td><td class="memItemRight" valign="bottom"><b>AddMember</b> (ValueType &amp;name, StringRefType value, AllocatorType &amp;allocator) const</td></tr>
+<tr class="separator:aebd8b710e89673cd279b798ba2f3cf85"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a414fb36461847d576c8d0b2386655703"><td class="memItemLeft" align="right" valign="top"><a id="a414fb36461847d576c8d0b2386655703"></a>
+<a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&#160;</td><td class="memItemRight" valign="bottom"><b>AddMember</b> (ValueType &amp;name, std::basic_string&lt; Ch &gt; &amp;value, AllocatorType &amp;allocator) const</td></tr>
+<tr class="separator:a414fb36461847d576c8d0b2386655703"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a99752a443910d9aa7658ae7f893a0ab1"><td class="memTemplParams" colspan="2"><a id="a99752a443910d9aa7658ae7f893a0ab1"></a>
template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a7ce499ac2bae523c94f39c17fb0edce5"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>AddMember</b> (ValueType &amp;name, T value, AllocatorType &amp;allocator) const </td></tr>
-<tr class="separator:a7ce499ac2bae523c94f39c17fb0edce5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a383111febedcaf84a7fd72fab5ed90cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a383111febedcaf84a7fd72fab5ed90cb"></a>
-<a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&#160;</td><td class="memItemRight" valign="bottom"><b>AddMember</b> (StringRefType name, ValueType &amp;value, AllocatorType &amp;allocator) const </td></tr>
-<tr class="separator:a383111febedcaf84a7fd72fab5ed90cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae38ccb43fb8bbd15ebcfbfb7ef02b6ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae38ccb43fb8bbd15ebcfbfb7ef02b6ce"></a>
-<a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&#160;</td><td class="memItemRight" valign="bottom"><b>AddMember</b> (StringRefType name, StringRefType value, AllocatorType &amp;allocator) const </td></tr>
-<tr class="separator:ae38ccb43fb8bbd15ebcfbfb7ef02b6ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a60dee2db688a5084e0e40e3685df8284"><td class="memTemplParams" colspan="2"><a class="anchor" id="a60dee2db688a5084e0e40e3685df8284"></a>
+<tr class="memitem:a99752a443910d9aa7658ae7f893a0ab1"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>AddMember</b> (ValueType &amp;name, T value, AllocatorType &amp;allocator) const</td></tr>
+<tr class="separator:a99752a443910d9aa7658ae7f893a0ab1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad0bc0d524c95b4e7eb816843ac40f264"><td class="memItemLeft" align="right" valign="top"><a id="ad0bc0d524c95b4e7eb816843ac40f264"></a>
+<a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&#160;</td><td class="memItemRight" valign="bottom"><b>AddMember</b> (StringRefType name, ValueType &amp;value, AllocatorType &amp;allocator) const</td></tr>
+<tr class="separator:ad0bc0d524c95b4e7eb816843ac40f264"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2222165c8e1d29b8a6f534a8b54a2115"><td class="memItemLeft" align="right" valign="top"><a id="a2222165c8e1d29b8a6f534a8b54a2115"></a>
+<a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&#160;</td><td class="memItemRight" valign="bottom"><b>AddMember</b> (StringRefType name, StringRefType value, AllocatorType &amp;allocator) const</td></tr>
+<tr class="separator:a2222165c8e1d29b8a6f534a8b54a2115"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a09c45c8e0e61ada9eb511d3601a52c29"><td class="memTemplParams" colspan="2"><a id="a09c45c8e0e61ada9eb511d3601a52c29"></a>
template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a60dee2db688a5084e0e40e3685df8284"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><b>AddMember</b> (StringRefType name, T value, AllocatorType &amp;allocator) const </td></tr>
-<tr class="separator:a60dee2db688a5084e0e40e3685df8284"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9ea4749d28efae46e021da377ce86901"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ea4749d28efae46e021da377ce86901"></a>
+<tr class="memitem:a09c45c8e0e61ada9eb511d3601a52c29"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><b>AddMember</b> (StringRefType name, T value, AllocatorType &amp;allocator) const</td></tr>
+<tr class="separator:a09c45c8e0e61ada9eb511d3601a52c29"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adce47ea944260d77171c710f34d4e402"><td class="memItemLeft" align="right" valign="top"><a id="adce47ea944260d77171c710f34d4e402"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>RemoveAllMembers</b> ()</td></tr>
-<tr class="separator:a9ea4749d28efae46e021da377ce86901"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a896032a27a88a16b2b9c4f9e6636f876"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a896032a27a88a16b2b9c4f9e6636f876"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>RemoveMember</b> (const Ch *name) const </td></tr>
-<tr class="separator:a896032a27a88a16b2b9c4f9e6636f876"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a793b002c81a0380e41acb8225b9cc2cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a793b002c81a0380e41acb8225b9cc2cc"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>RemoveMember</b> (const std::basic_string&lt; Ch &gt; &amp;name) const </td></tr>
-<tr class="separator:a793b002c81a0380e41acb8225b9cc2cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a096552670a1217ab1e91659b23a169ab"><td class="memTemplParams" colspan="2"><a class="anchor" id="a096552670a1217ab1e91659b23a169ab"></a>
+<tr class="separator:adce47ea944260d77171c710f34d4e402"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa96ab7566d9d7cce166d8b51cd072b92"><td class="memItemLeft" align="right" valign="top"><a id="aa96ab7566d9d7cce166d8b51cd072b92"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>RemoveMember</b> (const Ch *name) const</td></tr>
+<tr class="separator:aa96ab7566d9d7cce166d8b51cd072b92"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a77468ae046c9366a52e1baa75d963f6d"><td class="memItemLeft" align="right" valign="top"><a id="a77468ae046c9366a52e1baa75d963f6d"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>RemoveMember</b> (const std::basic_string&lt; Ch &gt; &amp;name) const</td></tr>
+<tr class="separator:a77468ae046c9366a52e1baa75d963f6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af2fa07494d817effd1b50c0a84e442cf"><td class="memTemplParams" colspan="2"><a id="af2fa07494d817effd1b50c0a84e442cf"></a>
template&lt;typename SourceAllocator &gt; </td></tr>
-<tr class="memitem:a096552670a1217ab1e91659b23a169ab"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>RemoveMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; EncodingType, SourceAllocator &gt; &amp;name) const </td></tr>
-<tr class="separator:a096552670a1217ab1e91659b23a169ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab671c0cf6ffb6cefa505fb5b5c735d18"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab671c0cf6ffb6cefa505fb5b5c735d18"></a>
-<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>RemoveMember</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> m) const </td></tr>
-<tr class="separator:ab671c0cf6ffb6cefa505fb5b5c735d18"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab1e58e0d9459ebb104f447210ff869d7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab1e58e0d9459ebb104f447210ff869d7"></a>
-<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>EraseMember</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> pos) const </td></tr>
-<tr class="separator:ab1e58e0d9459ebb104f447210ff869d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a34d1b04528351f00a0c0c7f90f5020ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a34d1b04528351f00a0c0c7f90f5020ae"></a>
-<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>EraseMember</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> first, <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> last) const </td></tr>
-<tr class="separator:a34d1b04528351f00a0c0c7f90f5020ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a87a6318cc1bec3706825f698d79c1f5e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a87a6318cc1bec3706825f698d79c1f5e"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>EraseMember</b> (const Ch *name) const </td></tr>
-<tr class="separator:a87a6318cc1bec3706825f698d79c1f5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1a1977c940f432dcf644b410632b0276"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1a1977c940f432dcf644b410632b0276"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>EraseMember</b> (const std::basic_string&lt; Ch &gt; &amp;name) const </td></tr>
-<tr class="separator:a1a1977c940f432dcf644b410632b0276"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad9da896f4105810ad8c03db97b7009c2"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad9da896f4105810ad8c03db97b7009c2"></a>
+<tr class="memitem:af2fa07494d817effd1b50c0a84e442cf"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>RemoveMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; EncodingType, SourceAllocator &gt; &amp;name) const</td></tr>
+<tr class="separator:af2fa07494d817effd1b50c0a84e442cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9227df396b62534391cd9a52ab7cdf37"><td class="memItemLeft" align="right" valign="top"><a id="a9227df396b62534391cd9a52ab7cdf37"></a>
+<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>RemoveMember</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> m) const</td></tr>
+<tr class="separator:a9227df396b62534391cd9a52ab7cdf37"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad8569180721b7194fffb0f289c0f8956"><td class="memItemLeft" align="right" valign="top"><a id="ad8569180721b7194fffb0f289c0f8956"></a>
+<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>EraseMember</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> pos) const</td></tr>
+<tr class="separator:ad8569180721b7194fffb0f289c0f8956"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af5d1661531777782d90249fe5ee748cb"><td class="memItemLeft" align="right" valign="top"><a id="af5d1661531777782d90249fe5ee748cb"></a>
+<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>EraseMember</b> (<a class="el" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> first, <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> last) const</td></tr>
+<tr class="separator:af5d1661531777782d90249fe5ee748cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1bdc4fd5a89c27b4e8aa5d7e39ece85b"><td class="memItemLeft" align="right" valign="top"><a id="a1bdc4fd5a89c27b4e8aa5d7e39ece85b"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>EraseMember</b> (const Ch *name) const</td></tr>
+<tr class="separator:a1bdc4fd5a89c27b4e8aa5d7e39ece85b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a50a9c9ee7e8a8321de28390f5290f89c"><td class="memItemLeft" align="right" valign="top"><a id="a50a9c9ee7e8a8321de28390f5290f89c"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>EraseMember</b> (const std::basic_string&lt; Ch &gt; &amp;name) const</td></tr>
+<tr class="separator:a50a9c9ee7e8a8321de28390f5290f89c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5df619ffdefc3a7e1f6f7c2670c305f7"><td class="memTemplParams" colspan="2"><a id="a5df619ffdefc3a7e1f6f7c2670c305f7"></a>
template&lt;typename SourceAllocator &gt; </td></tr>
-<tr class="memitem:ad9da896f4105810ad8c03db97b7009c2"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>EraseMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; EncodingType, SourceAllocator &gt; &amp;name) const </td></tr>
-<tr class="separator:ad9da896f4105810ad8c03db97b7009c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5df619ffdefc3a7e1f6f7c2670c305f7"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>EraseMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; EncodingType, SourceAllocator &gt; &amp;name) const</td></tr>
+<tr class="separator:a5df619ffdefc3a7e1f6f7c2670c305f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
友元</h2></td></tr>
-<tr class="memitem:a899449e1a645b5e377af059fb61113d8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a899449e1a645b5e377af059fb61113d8"></a>
+<tr class="memitem:a899449e1a645b5e377af059fb61113d8"><td class="memTemplParams" colspan="2"><a id="a899449e1a645b5e377af059fb61113d8"></a>
template&lt;typename , typename &gt; </td></tr>
<tr class="memitem:a899449e1a645b5e377af059fb61113d8"><td class="memTemplItemLeft" align="right" valign="top">class&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GenericValue</b></td></tr>
<tr class="separator:a899449e1a645b5e377af059fb61113d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<div class="textblock"><h3>template&lt;bool, typename&gt;<br />
-class rapidjson::GenericObject&lt; bool, typename &gt;</h3>
+<div class="textblock"><h3>template&lt;bool Const, typename ValueT&gt;<br />
+class rapidjson::GenericObject&lt; Const, ValueT &gt;</h3>
<p>Helper class for accessing Value of object type. </p>
<p>Instance of this helper class is obtained by <code>GenericValue::GetObject()</code>. In addition to all APIs for array type, it provides range-based for loop if <code>RAPIDJSON_HAS_CXX11_RANGE_FOR=1</code>. </p>
diff --git a/zh-cn/classrapidjson_1_1_generic_object.js b/zh-cn/classrapidjson_1_1_generic_object.js
index ca64ff5c..a17147f7 100644
--- a/zh-cn/classrapidjson_1_1_generic_object.js
+++ b/zh-cn/classrapidjson_1_1_generic_object.js
@@ -1,47 +1,47 @@
var classrapidjson_1_1_generic_object =
[
- [ "AllocatorType", "classrapidjson_1_1_generic_object.html#ad5445b0f7623a17b20f4d947cc9c46a1", null ],
- [ "Ch", "classrapidjson_1_1_generic_object.html#a9782c6609c13d9ad2b5bd892d8cbf4a1", null ],
- [ "ConstMemberIterator", "classrapidjson_1_1_generic_object.html#a2d5a458d0b48498cc46be82aba937e10", null ],
- [ "ConstObject", "classrapidjson_1_1_generic_object.html#ab69826a21c401352104a4cc803b254ed", null ],
- [ "EncodingType", "classrapidjson_1_1_generic_object.html#a4db59e277c974a365636e422e391c3b4", null ],
- [ "MemberIterator", "classrapidjson_1_1_generic_object.html#acb878d8d0ea52ab7f9f91d622e412d1c", null ],
- [ "Object", "classrapidjson_1_1_generic_object.html#a316aaee9efc32f7599e8335b0dfcb994", null ],
- [ "PlainType", "classrapidjson_1_1_generic_object.html#adaa6f8aa349c16363035170c5cdda4c2", null ],
- [ "StringRefType", "classrapidjson_1_1_generic_object.html#a9acdd4367fa4bcdd0a42cac9407826b4", null ],
- [ "ValueType", "classrapidjson_1_1_generic_object.html#a2e9bdc3415548283c8977d4368415cf0", null ],
- [ "GenericObject", "classrapidjson_1_1_generic_object.html#a996ed0f2d6de222eaa5e555964e4c20e", null ],
- [ "~GenericObject", "classrapidjson_1_1_generic_object.html#a921de3b7a412a705ca90b9385eaabb28", null ],
- [ "AddMember", "classrapidjson_1_1_generic_object.html#a5512f4339f327885b21a232f499a402b", null ],
- [ "AddMember", "classrapidjson_1_1_generic_object.html#acd99a41ea60aa60bcf782dbbc02af8aa", null ],
- [ "AddMember", "classrapidjson_1_1_generic_object.html#a134228f1d98876dc00a4d1355abb1c5c", null ],
- [ "AddMember", "classrapidjson_1_1_generic_object.html#a7ce499ac2bae523c94f39c17fb0edce5", null ],
- [ "AddMember", "classrapidjson_1_1_generic_object.html#a383111febedcaf84a7fd72fab5ed90cb", null ],
- [ "AddMember", "classrapidjson_1_1_generic_object.html#ae38ccb43fb8bbd15ebcfbfb7ef02b6ce", null ],
- [ "AddMember", "classrapidjson_1_1_generic_object.html#a60dee2db688a5084e0e40e3685df8284", null ],
- [ "EraseMember", "classrapidjson_1_1_generic_object.html#ab1e58e0d9459ebb104f447210ff869d7", null ],
- [ "EraseMember", "classrapidjson_1_1_generic_object.html#a34d1b04528351f00a0c0c7f90f5020ae", null ],
- [ "EraseMember", "classrapidjson_1_1_generic_object.html#a87a6318cc1bec3706825f698d79c1f5e", null ],
- [ "EraseMember", "classrapidjson_1_1_generic_object.html#a1a1977c940f432dcf644b410632b0276", null ],
- [ "EraseMember", "classrapidjson_1_1_generic_object.html#ad9da896f4105810ad8c03db97b7009c2", null ],
- [ "FindMember", "classrapidjson_1_1_generic_object.html#abc0323708e17b4df4e3878f3a616e641", null ],
- [ "FindMember", "classrapidjson_1_1_generic_object.html#a2b792e93071a8aeeb19814400302b6ad", null ],
- [ "FindMember", "classrapidjson_1_1_generic_object.html#a7df3a1a583291a8bd5fb0d771d57096e", null ],
- [ "HasMember", "classrapidjson_1_1_generic_object.html#ae3375abc321cef3e23d96be8ccfc2095", null ],
- [ "HasMember", "classrapidjson_1_1_generic_object.html#a125760c64421601e341eb90b6cfe95c4", null ],
- [ "HasMember", "classrapidjson_1_1_generic_object.html#a947c52731e84a33bbcd2729ad72272b3", null ],
- [ "MemberBegin", "classrapidjson_1_1_generic_object.html#aec5d23c7e1e0156c254c5e9f73d96c0f", null ],
- [ "MemberCount", "classrapidjson_1_1_generic_object.html#a2542a5003f90a98626d55fcd2bbe07f6", null ],
- [ "MemberEnd", "classrapidjson_1_1_generic_object.html#a3b563f651f5eba238c87aa8a692b97e5", null ],
- [ "ObjectEmpty", "classrapidjson_1_1_generic_object.html#a394415edfd48d9a5f371c260fc37496c", null ],
- [ "operator=", "classrapidjson_1_1_generic_object.html#a3dd23b20c0ba292f7a09676493d1db27", null ],
- [ "operator[]", "classrapidjson_1_1_generic_object.html#ab72467cb9b73248d1c98ba6ae0d47bf2", null ],
- [ "operator[]", "classrapidjson_1_1_generic_object.html#a376c9e20c133ddb8bbbc678f174dc8bc", null ],
- [ "operator[]", "classrapidjson_1_1_generic_object.html#a024444704ef3ab6dd64b9ae544d31f6f", null ],
- [ "RemoveAllMembers", "classrapidjson_1_1_generic_object.html#a9ea4749d28efae46e021da377ce86901", null ],
- [ "RemoveMember", "classrapidjson_1_1_generic_object.html#a896032a27a88a16b2b9c4f9e6636f876", null ],
- [ "RemoveMember", "classrapidjson_1_1_generic_object.html#a793b002c81a0380e41acb8225b9cc2cc", null ],
- [ "RemoveMember", "classrapidjson_1_1_generic_object.html#a096552670a1217ab1e91659b23a169ab", null ],
- [ "RemoveMember", "classrapidjson_1_1_generic_object.html#ab671c0cf6ffb6cefa505fb5b5c735d18", null ],
+ [ "AllocatorType", "classrapidjson_1_1_generic_object.html#ae30003e248368737382eed69ec8fe1eb", null ],
+ [ "Ch", "classrapidjson_1_1_generic_object.html#a947f543afbdd5e6d1c5b2dd1fe5a6e60", null ],
+ [ "ConstMemberIterator", "classrapidjson_1_1_generic_object.html#a579a7d7ab7102bcf86c948d0df3d2f2d", null ],
+ [ "ConstObject", "classrapidjson_1_1_generic_object.html#a00d71a7ee4d903e74fdc5a83750dd0f7", null ],
+ [ "EncodingType", "classrapidjson_1_1_generic_object.html#ac412c8d073aa02f622b3904e4195425c", null ],
+ [ "MemberIterator", "classrapidjson_1_1_generic_object.html#a598fd1d5f55289eca275847f0e8ef295", null ],
+ [ "Object", "classrapidjson_1_1_generic_object.html#a046e47c2bc624f677603d34d0f108347", null ],
+ [ "PlainType", "classrapidjson_1_1_generic_object.html#a46c7868bddba87a819cccca94bbdbda9", null ],
+ [ "StringRefType", "classrapidjson_1_1_generic_object.html#ab47bc8d841321d77c140e9df729f5233", null ],
+ [ "ValueType", "classrapidjson_1_1_generic_object.html#a282660500748eff5ebab93b88a9d478f", null ],
+ [ "GenericObject", "classrapidjson_1_1_generic_object.html#aae420e2eac920ff10d5c749f567e4905", null ],
+ [ "~GenericObject", "classrapidjson_1_1_generic_object.html#acd045fbc7ffebf7902244fb1034b8751", null ],
+ [ "AddMember", "classrapidjson_1_1_generic_object.html#ae811070cbc37cc67bb80a8bdb7d6db14", null ],
+ [ "AddMember", "classrapidjson_1_1_generic_object.html#aebd8b710e89673cd279b798ba2f3cf85", null ],
+ [ "AddMember", "classrapidjson_1_1_generic_object.html#a414fb36461847d576c8d0b2386655703", null ],
+ [ "AddMember", "classrapidjson_1_1_generic_object.html#a99752a443910d9aa7658ae7f893a0ab1", null ],
+ [ "AddMember", "classrapidjson_1_1_generic_object.html#ad0bc0d524c95b4e7eb816843ac40f264", null ],
+ [ "AddMember", "classrapidjson_1_1_generic_object.html#a2222165c8e1d29b8a6f534a8b54a2115", null ],
+ [ "AddMember", "classrapidjson_1_1_generic_object.html#a09c45c8e0e61ada9eb511d3601a52c29", null ],
+ [ "EraseMember", "classrapidjson_1_1_generic_object.html#ad8569180721b7194fffb0f289c0f8956", null ],
+ [ "EraseMember", "classrapidjson_1_1_generic_object.html#af5d1661531777782d90249fe5ee748cb", null ],
+ [ "EraseMember", "classrapidjson_1_1_generic_object.html#a1bdc4fd5a89c27b4e8aa5d7e39ece85b", null ],
+ [ "EraseMember", "classrapidjson_1_1_generic_object.html#a50a9c9ee7e8a8321de28390f5290f89c", null ],
+ [ "EraseMember", "classrapidjson_1_1_generic_object.html#a5df619ffdefc3a7e1f6f7c2670c305f7", null ],
+ [ "FindMember", "classrapidjson_1_1_generic_object.html#afaa41ea8c0ed91b7e064d31f6a6ab9ef", null ],
+ [ "FindMember", "classrapidjson_1_1_generic_object.html#ae4681bdff872d25f5100bc53d8a48bb3", null ],
+ [ "FindMember", "classrapidjson_1_1_generic_object.html#ac238b3e856310ca7f8622e1252ea7f0f", null ],
+ [ "HasMember", "classrapidjson_1_1_generic_object.html#a10fd0c5b5ef61479725590b78c006234", null ],
+ [ "HasMember", "classrapidjson_1_1_generic_object.html#aa5cd5126d5965b6dfe0b630e53ad6cff", null ],
+ [ "HasMember", "classrapidjson_1_1_generic_object.html#a05c6698dd3203dbbe537942d63073fcc", null ],
+ [ "MemberBegin", "classrapidjson_1_1_generic_object.html#ac3410e31a3a38bd7004daf8e76d5327c", null ],
+ [ "MemberCount", "classrapidjson_1_1_generic_object.html#a583962734202dfdf22ab851d78f24d92", null ],
+ [ "MemberEnd", "classrapidjson_1_1_generic_object.html#a446032e977f37638cf3c44eb3a972fdd", null ],
+ [ "ObjectEmpty", "classrapidjson_1_1_generic_object.html#ad5ad0ae2038d629f17b10b2b11ced58b", null ],
+ [ "operator=", "classrapidjson_1_1_generic_object.html#af94485b6c52b821203fe2c23a92c282f", null ],
+ [ "operator[]", "classrapidjson_1_1_generic_object.html#a158d16b9052e356436211158f2fb0638", null ],
+ [ "operator[]", "classrapidjson_1_1_generic_object.html#a920c32f4acd1f8a896c467777452595a", null ],
+ [ "operator[]", "classrapidjson_1_1_generic_object.html#ab9a78993f69240bff0744f05436aaf80", null ],
+ [ "RemoveAllMembers", "classrapidjson_1_1_generic_object.html#adce47ea944260d77171c710f34d4e402", null ],
+ [ "RemoveMember", "classrapidjson_1_1_generic_object.html#aa96ab7566d9d7cce166d8b51cd072b92", null ],
+ [ "RemoveMember", "classrapidjson_1_1_generic_object.html#a77468ae046c9366a52e1baa75d963f6d", null ],
+ [ "RemoveMember", "classrapidjson_1_1_generic_object.html#af2fa07494d817effd1b50c0a84e442cf", null ],
+ [ "RemoveMember", "classrapidjson_1_1_generic_object.html#a9227df396b62534391cd9a52ab7cdf37", null ],
[ "GenericValue", "classrapidjson_1_1_generic_object.html#a899449e1a645b5e377af059fb61113d8", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_generic_pointer-members.html b/zh-cn/classrapidjson_1_1_generic_pointer-members.html
index a1083214..548574e7 100644
--- a/zh-cn/classrapidjson_1_1_generic_pointer-members.html
+++ b/zh-cn/classrapidjson_1_1_generic_pointer-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_pointer.htm
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -83,56 +84,56 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_pointer.htm
<p>成员的完整列表,这些成员属于 <a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>,包括所有继承而来的类成员</p>
<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a64f7bb98da73976b59597cdde96a40b8">Append</a>(const Token &amp;token, Allocator *allocator=0) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a96e6f4c01632be39df82917f833710bc">Append</a>(const Ch *name, SizeType length, Allocator *allocator=0) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af2e3630aeaebb6628c2b1694a0595452">Append</a>(T *name, Allocator *allocator=0) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ac4b35d8051c17a8c9408f71ae8541d19">Append</a>(const std::basic_string&lt; Ch &gt; &amp;name, Allocator *allocator=0) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ad0bd4948e56dce4b75b39f744050322c">Append</a>(SizeType index, Allocator *allocator=0) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a3baa23b919dc9ba9421b8e6fbf3e0605">Append</a>(const ValueType &amp;token, Allocator *allocator=0) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a7cb5eda2af1722e52efa591c4103ebec">Append</a>(const Token &amp;token, Allocator *allocator=0) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a30f4eac82e9fded60dead3f7d1cb3941">Append</a>(const Ch *name, SizeType length, Allocator *allocator=0) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a033a099aaa6b36df2d5171bdc593e98e">Append</a>(T *name, Allocator *allocator=0) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a18494d59f0317c037fa3bd037e436cec">Append</a>(const std::basic_string&lt; Ch &gt; &amp;name, Allocator *allocator=0) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a4aadec8f0efe9a7ac42ac4906a5f676d">Append</a>(SizeType index, Allocator *allocator=0) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a618808f066fb1104d36f012cced3b27a">Append</a>(const ValueType &amp;token, Allocator *allocator=0) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a3733a6d6cf2a3a13f2a59b109b56d800">Create</a>(ValueType &amp;root, typename ValueType::AllocatorType &amp;allocator, bool *alreadyExist=0) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a2b5a8fb688e6b6a1b077ce103df455c3">Create</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, bool *alreadyExist=0) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856">Create</a>(ValueType &amp;root, typename ValueType::AllocatorType &amp;allocator, bool *alreadyExist=0) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#adc4bf5a3892f5626a8517f90c88e4b7f">Create</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, bool *alreadyExist=0) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#aec10492caf6e853935d9a360bbe73713">Erase</a>(ValueType &amp;root) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a923a1100c029a28e25894708bdce784c">Erase</a>(ValueType &amp;root) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#aa077ce171ea25cf501c12f2d5df7f248">GenericPointer</a>(Allocator *allocator=0)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a8f831aae14afc493a82b5fb6aa9c3c43">GenericPointer</a>(const Ch *source, Allocator *allocator=0)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#aeefcd60e5ad37d80ec43f5315ae84809">GenericPointer</a>(const std::basic_string&lt; Ch &gt; &amp;source, Allocator *allocator=0)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a00ad17ea227d2556404df7cc64c6aeb5">GenericPointer</a>(const Ch *source, size_t length, Allocator *allocator=0)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a6df9f6a01d1b5945811055e1cf8aead6">GenericPointer</a>(const Token *tokens, size_t tokenCount)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a9f8119f2c714f78794854828789b832e">GenericPointer</a>(const GenericPointer &amp;rhs, Allocator *allocator=0)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a309d819cc14e9d2183df4807bc99fea5">Get</a>(ValueType &amp;root, size_t *unresolvedTokenIndex=0) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ab6982b814e41d8f64bea7d5faab93b1f">Get</a>(const ValueType &amp;root, size_t *unresolvedTokenIndex=0) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd">Get</a>(ValueType &amp;root, size_t *unresolvedTokenIndex=0) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#aac2171a0ac38298b2d0ae063351ec176">Get</a>(const ValueType &amp;root, size_t *unresolvedTokenIndex=0) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#acdac4ea8e57920194827be4afb942d97">GetAllocator</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ac817b123619422f03c44a46978d9fbd0">GetParseErrorCode</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#adc01f1be5f05127f849a2bf10a97e89b">GetParseErrorOffset</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a2949cb104effdf323781ae70ce469ed9">GetTokenCount</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a0ee51e6c996d4665b398dae5dbf00bc4">GetTokens</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a6c615761374ddce265d542f4b4b476b1">GetWithDefault</a>(ValueType &amp;root, const ValueType &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ae9f3e27a210a0974892c1260c2e4a39f">GetWithDefault</a>(ValueType &amp;root, const Ch *defaultValue, typename ValueType::AllocatorType &amp;allocator) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ab914090864d0ded21a376867c33ad865">GetWithDefault</a>(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a3bb1e63a2c0aa61a9e95d6d65c4c3ffd">GetWithDefault</a>(ValueType &amp;root, T defaultValue, typename ValueType::AllocatorType &amp;allocator) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af89e3e8f87bb833d4eb4bb2fd4074431">GetWithDefault</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;defaultValue) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ad96e263ba29209259fd4abe63d7f4458">GetWithDefault</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *defaultValue) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a5e9e740bec7f5a1703088171e0b2557b">GetWithDefault</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;defaultValue) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a573a35dd96aacffe209e1442720f447a">GetWithDefault</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T defaultValue) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a112f364fe9aeabba2a72e83bcbeb8fda">IsValid</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a3e74f5b9c9fd3307f6ebac61a7131524">operator!=</a>(const GenericPointer &amp;rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af649a48d77aa856cddaa748ad6b0d6ac">GetParseErrorCode</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a75caef2a047c56466f0b599bdda882c9">GetParseErrorOffset</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a791e40c10682b9db0adf2b6e0b8b3d78">GetTokenCount</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ac07c300d43f04dad9caa0cb209cb2853">GetTokens</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2">GetWithDefault</a>(ValueType &amp;root, const ValueType &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#abdc025b8391b271f1134a7ba7039c27f">GetWithDefault</a>(ValueType &amp;root, const Ch *defaultValue, typename ValueType::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a2ac51ee7af5b9d7628140ae8501edcf4">GetWithDefault</a>(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a16833ef8a38386e6c310d602426b45f0">GetWithDefault</a>(ValueType &amp;root, T defaultValue, typename ValueType::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a07fa31c03c96e260f234087882dce408">GetWithDefault</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;defaultValue) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#aaa4e92344cc07e98adb5b9f5b93927b8">GetWithDefault</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *defaultValue) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af19e2313004885cfa9c45f50b30b32e2">GetWithDefault</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;defaultValue) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a1f428c25a3a905683e616d76c2d9efcf">GetWithDefault</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T defaultValue) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c">IsValid</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a8ca73989b4f3ffa5154a229f95f1e0c9">operator!=</a>(const GenericPointer &amp;rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a23194bb6ce6c07c78981344fe80ac3a6">operator=</a>(const GenericPointer &amp;rhs)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af0d009a8322a7b61f63a9539ca8bddaf">operator==</a>(const GenericPointer &amp;rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#aecea7b5c4786f509e35c3917efa57fce">Set</a>(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ac19f479c656ddd6a8bd9888a9fb27f96">Set</a>(ValueType &amp;root, const ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a98454081fb9557b3d2285c4e89bd34f6">Set</a>(ValueType &amp;root, const Ch *value, typename ValueType::AllocatorType &amp;allocator) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a151f17dc1c655b9dc0a9a3cf06e6bdcb">Set</a>(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;value, typename ValueType::AllocatorType &amp;allocator) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ae9037fa1a22498e2a8c0f96f866f6288">Set</a>(ValueType &amp;root, T value, typename ValueType::AllocatorType &amp;allocator) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#add58edd4f813645f8ffead6956967f96">Set</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a83ff802b8fcacd96e60ba1c2627a19f0">Set</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;value) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a2ee50bcbfa76119094eef0284eeddfbe">Set</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *value) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a9bd1c4076e732ffc1b4527ac5659264e">Set</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;value) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af547130d348ca1805d882955a377bbe4">Set</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T value) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ab9166f175517b1bff8c2219ea769e506">Stringify</a>(OutputStream &amp;os) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a40413907ac94e218f93625d3a5c8c454">StringifyUriFragment</a>(OutputStream &amp;os) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#aaaa5b0ecdfa6af45e7dabc1987c87cac">Swap</a>(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ad9f28da15453d91c3669618a6f48bfcc">Swap</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a3bb15fa5592f2bfad6f2c9af7940b952">operator==</a>(const GenericPointer &amp;rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663">Set</a>(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af2f51d68c82136086bed9593719abd1a">Set</a>(ValueType &amp;root, const ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a4f0ef2b49a9561d570217249343d9335">Set</a>(ValueType &amp;root, const Ch *value, typename ValueType::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a0ae84f686e1af593b9445c2c502101b2">Set</a>(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;value, typename ValueType::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#aa6df2ca27eecabbbad825a64a3d2bfe9">Set</a>(ValueType &amp;root, T value, typename ValueType::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a9371832d9089cca9b7f549172fd75cc8">Set</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ad7a692d4e08d578f7e24afb7c4004276">Set</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;value) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#afb649edbdbe09a6840b12d67c9f2501e">Set</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *value) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a3a7ff4e0b700c2975cf455fef23226b4">Set</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;value) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a8e5ed62ba30bb3f7a09a826746f70574">Set</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T value) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a73073ca3c9e47eba7c27c16151b269ac">Stringify</a>(OutputStream &amp;os) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ae985c27c1d061b93ba4f8875cfa5f7b5">StringifyUriFragment</a>(OutputStream &amp;os) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a4690cd1d6c85168ebd2ce0afe186a4fa">Swap</a>(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a29d7ee42eb5646f829aeca6c6989555a">Swap</a>(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a0e144b9956a5272c13ceff3b9306e748">~GenericPointer</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
diff --git a/zh-cn/classrapidjson_1_1_generic_pointer.html b/zh-cn/classrapidjson_1_1_generic_pointer.html
index a2dc6f5a..5804a0bf 100644
--- a/zh-cn/classrapidjson_1_1_generic_pointer.html
+++ b/zh-cn/classrapidjson_1_1_generic_pointer.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericPointer&lt; ValueType, Allocator &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_pointer.htm
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -99,26 +100,26 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_pointer.htm
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a399790c5fe8076d91a58c621c0c2a79e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a399790c5fe8076d91a58c621c0c2a79e"></a>
+<tr class="memitem:a399790c5fe8076d91a58c621c0c2a79e"><td class="memItemLeft" align="right" valign="top"><a id="a399790c5fe8076d91a58c621c0c2a79e"></a>
typedef ValueType::EncodingType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a></td></tr>
-<tr class="memdesc:a399790c5fe8076d91a58c621c0c2a79e"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_encoding.html" title="Concept for encoding of Unicode characters. ">Encoding</a> type from Value. <br /></td></tr>
+<tr class="memdesc:a399790c5fe8076d91a58c621c0c2a79e"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_encoding.html" title="Concept for encoding of Unicode characters. ">Encoding</a> type from Value <br /></td></tr>
<tr class="separator:a399790c5fe8076d91a58c621c0c2a79e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a850f78846c5548565f8395be5f3427b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a850f78846c5548565f8395be5f3427b7"></a>
+<tr class="memitem:a850f78846c5548565f8395be5f3427b7"><td class="memItemLeft" align="right" valign="top"><a id="a850f78846c5548565f8395be5f3427b7"></a>
typedef ValueType::Ch&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a></td></tr>
-<tr class="memdesc:a850f78846c5548565f8395be5f3427b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Character type from Value. <br /></td></tr>
+<tr class="memdesc:a850f78846c5548565f8395be5f3427b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Character type from Value <br /></td></tr>
<tr class="separator:a850f78846c5548565f8395be5f3427b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:acdac4ea8e57920194827be4afb942d97"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acdac4ea8e57920194827be4afb942d97"></a>
+<tr class="memitem:acdac4ea8e57920194827be4afb942d97"><td class="memItemLeft" align="right" valign="top"><a id="acdac4ea8e57920194827be4afb942d97"></a>
<a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#acdac4ea8e57920194827be4afb942d97">GetAllocator</a> ()</td></tr>
<tr class="memdesc:acdac4ea8e57920194827be4afb942d97"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the allocator of this pointer. <br /></td></tr>
<tr class="separator:acdac4ea8e57920194827be4afb942d97"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aec10492caf6e853935d9a360bbe73713"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#aec10492caf6e853935d9a360bbe73713">Erase</a> (ValueType &amp;root) const </td></tr>
-<tr class="memdesc:aec10492caf6e853935d9a360bbe73713"><td class="mdescLeft">&#160;</td><td class="mdescRight">Erase a value in a subtree. <a href="#aec10492caf6e853935d9a360bbe73713">更多...</a><br /></td></tr>
-<tr class="separator:aec10492caf6e853935d9a360bbe73713"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a923a1100c029a28e25894708bdce784c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a923a1100c029a28e25894708bdce784c">Erase</a> (ValueType &amp;root) const</td></tr>
+<tr class="memdesc:a923a1100c029a28e25894708bdce784c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Erase a value in a subtree. <a href="#a923a1100c029a28e25894708bdce784c">更多...</a><br /></td></tr>
+<tr class="separator:a923a1100c029a28e25894708bdce784c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Constructors and destructor.</div></td></tr>
-<tr class="memitem:aa077ce171ea25cf501c12f2d5df7f248"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa077ce171ea25cf501c12f2d5df7f248"></a>
+<tr class="memitem:aa077ce171ea25cf501c12f2d5df7f248"><td class="memItemLeft" align="right" valign="top"><a id="aa077ce171ea25cf501c12f2d5df7f248"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#aa077ce171ea25cf501c12f2d5df7f248">GenericPointer</a> (<a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0)</td></tr>
<tr class="memdesc:aa077ce171ea25cf501c12f2d5df7f248"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:aa077ce171ea25cf501c12f2d5df7f248"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -134,182 +135,182 @@ Public 成员函数</h2></td></tr>
<tr class="memitem:a6df9f6a01d1b5945811055e1cf8aead6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a6df9f6a01d1b5945811055e1cf8aead6">GenericPointer</a> (const <a class="el" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> *tokens, size_t tokenCount)</td></tr>
<tr class="memdesc:a6df9f6a01d1b5945811055e1cf8aead6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor with user-supplied tokens. <a href="#a6df9f6a01d1b5945811055e1cf8aead6">更多...</a><br /></td></tr>
<tr class="separator:a6df9f6a01d1b5945811055e1cf8aead6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9f8119f2c714f78794854828789b832e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f8119f2c714f78794854828789b832e"></a>
+<tr class="memitem:a9f8119f2c714f78794854828789b832e"><td class="memItemLeft" align="right" valign="top"><a id="a9f8119f2c714f78794854828789b832e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a9f8119f2c714f78794854828789b832e">GenericPointer</a> (const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> &amp;rhs, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0)</td></tr>
<tr class="memdesc:a9f8119f2c714f78794854828789b832e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br /></td></tr>
<tr class="separator:a9f8119f2c714f78794854828789b832e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0e144b9956a5272c13ceff3b9306e748"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e144b9956a5272c13ceff3b9306e748"></a>
+<tr class="memitem:a0e144b9956a5272c13ceff3b9306e748"><td class="memItemLeft" align="right" valign="top"><a id="a0e144b9956a5272c13ceff3b9306e748"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a0e144b9956a5272c13ceff3b9306e748">~GenericPointer</a> ()</td></tr>
<tr class="memdesc:a0e144b9956a5272c13ceff3b9306e748"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:a0e144b9956a5272c13ceff3b9306e748"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a23194bb6ce6c07c78981344fe80ac3a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23194bb6ce6c07c78981344fe80ac3a6"></a>
+<tr class="memitem:a23194bb6ce6c07c78981344fe80ac3a6"><td class="memItemLeft" align="right" valign="top"><a id="a23194bb6ce6c07c78981344fe80ac3a6"></a>
<a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a23194bb6ce6c07c78981344fe80ac3a6">operator=</a> (const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> &amp;rhs)</td></tr>
<tr class="memdesc:a23194bb6ce6c07c78981344fe80ac3a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment operator. <br /></td></tr>
<tr class="separator:a23194bb6ce6c07c78981344fe80ac3a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Append token</div></td></tr>
-<tr class="memitem:a64f7bb98da73976b59597cdde96a40b8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a64f7bb98da73976b59597cdde96a40b8">Append</a> (const <a class="el" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> &amp;token, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0) const </td></tr>
-<tr class="memdesc:a64f7bb98da73976b59597cdde96a40b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a token and return a new Pointer. <a href="#a64f7bb98da73976b59597cdde96a40b8">更多...</a><br /></td></tr>
-<tr class="separator:a64f7bb98da73976b59597cdde96a40b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a96e6f4c01632be39df82917f833710bc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a96e6f4c01632be39df82917f833710bc">Append</a> (const <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> *name, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0) const </td></tr>
-<tr class="memdesc:a96e6f4c01632be39df82917f833710bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a name token with length, and return a new Pointer. <a href="#a96e6f4c01632be39df82917f833710bc">更多...</a><br /></td></tr>
-<tr class="separator:a96e6f4c01632be39df82917f833710bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af2e3630aeaebb6628c2b1694a0595452"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:af2e3630aeaebb6628c2b1694a0595452"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af2e3630aeaebb6628c2b1694a0595452">Append</a> (T *name, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0) const </td></tr>
-<tr class="memdesc:af2e3630aeaebb6628c2b1694a0595452"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a name token without length, and return a new Pointer. <a href="#af2e3630aeaebb6628c2b1694a0595452">更多...</a><br /></td></tr>
-<tr class="separator:af2e3630aeaebb6628c2b1694a0595452"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac4b35d8051c17a8c9408f71ae8541d19"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ac4b35d8051c17a8c9408f71ae8541d19">Append</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> &gt; &amp;name, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0) const </td></tr>
-<tr class="memdesc:ac4b35d8051c17a8c9408f71ae8541d19"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a name token, and return a new Pointer. <a href="#ac4b35d8051c17a8c9408f71ae8541d19">更多...</a><br /></td></tr>
-<tr class="separator:ac4b35d8051c17a8c9408f71ae8541d19"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad0bd4948e56dce4b75b39f744050322c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ad0bd4948e56dce4b75b39f744050322c">Append</a> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0) const </td></tr>
-<tr class="memdesc:ad0bd4948e56dce4b75b39f744050322c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a index token, and return a new Pointer. <a href="#ad0bd4948e56dce4b75b39f744050322c">更多...</a><br /></td></tr>
-<tr class="separator:ad0bd4948e56dce4b75b39f744050322c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3baa23b919dc9ba9421b8e6fbf3e0605"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a3baa23b919dc9ba9421b8e6fbf3e0605">Append</a> (const ValueType &amp;token, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0) const </td></tr>
-<tr class="memdesc:a3baa23b919dc9ba9421b8e6fbf3e0605"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a token by value, and return a new Pointer. <a href="#a3baa23b919dc9ba9421b8e6fbf3e0605">更多...</a><br /></td></tr>
-<tr class="separator:a3baa23b919dc9ba9421b8e6fbf3e0605"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7cb5eda2af1722e52efa591c4103ebec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a7cb5eda2af1722e52efa591c4103ebec">Append</a> (const <a class="el" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> &amp;token, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0) const</td></tr>
+<tr class="memdesc:a7cb5eda2af1722e52efa591c4103ebec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a token and return a new Pointer <a href="#a7cb5eda2af1722e52efa591c4103ebec">更多...</a><br /></td></tr>
+<tr class="separator:a7cb5eda2af1722e52efa591c4103ebec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a30f4eac82e9fded60dead3f7d1cb3941"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a30f4eac82e9fded60dead3f7d1cb3941">Append</a> (const <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> *name, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0) const</td></tr>
+<tr class="memdesc:a30f4eac82e9fded60dead3f7d1cb3941"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a name token with length, and return a new Pointer <a href="#a30f4eac82e9fded60dead3f7d1cb3941">更多...</a><br /></td></tr>
+<tr class="separator:a30f4eac82e9fded60dead3f7d1cb3941"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a033a099aaa6b36df2d5171bdc593e98e"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<tr class="memitem:a033a099aaa6b36df2d5171bdc593e98e"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a033a099aaa6b36df2d5171bdc593e98e">Append</a> (T *name, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0) const</td></tr>
+<tr class="memdesc:a033a099aaa6b36df2d5171bdc593e98e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a name token without length, and return a new Pointer <a href="#a033a099aaa6b36df2d5171bdc593e98e">更多...</a><br /></td></tr>
+<tr class="separator:a033a099aaa6b36df2d5171bdc593e98e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a18494d59f0317c037fa3bd037e436cec"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a18494d59f0317c037fa3bd037e436cec">Append</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> &gt; &amp;name, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0) const</td></tr>
+<tr class="memdesc:a18494d59f0317c037fa3bd037e436cec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a name token, and return a new Pointer <a href="#a18494d59f0317c037fa3bd037e436cec">更多...</a><br /></td></tr>
+<tr class="separator:a18494d59f0317c037fa3bd037e436cec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4aadec8f0efe9a7ac42ac4906a5f676d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a4aadec8f0efe9a7ac42ac4906a5f676d">Append</a> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0) const</td></tr>
+<tr class="memdesc:a4aadec8f0efe9a7ac42ac4906a5f676d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a index token, and return a new Pointer <a href="#a4aadec8f0efe9a7ac42ac4906a5f676d">更多...</a><br /></td></tr>
+<tr class="separator:a4aadec8f0efe9a7ac42ac4906a5f676d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a618808f066fb1104d36f012cced3b27a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a618808f066fb1104d36f012cced3b27a">Append</a> (const ValueType &amp;token, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0) const</td></tr>
+<tr class="memdesc:a618808f066fb1104d36f012cced3b27a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append a token by value, and return a new Pointer <a href="#a618808f066fb1104d36f012cced3b27a">更多...</a><br /></td></tr>
+<tr class="separator:a618808f066fb1104d36f012cced3b27a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Handling Parse Error</div></td></tr>
-<tr class="memitem:a112f364fe9aeabba2a72e83bcbeb8fda"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a112f364fe9aeabba2a72e83bcbeb8fda"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a112f364fe9aeabba2a72e83bcbeb8fda">IsValid</a> () const </td></tr>
-<tr class="memdesc:a112f364fe9aeabba2a72e83bcbeb8fda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether this is a valid pointer. <br /></td></tr>
-<tr class="separator:a112f364fe9aeabba2a72e83bcbeb8fda"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adc01f1be5f05127f849a2bf10a97e89b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adc01f1be5f05127f849a2bf10a97e89b"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#adc01f1be5f05127f849a2bf10a97e89b">GetParseErrorOffset</a> () const </td></tr>
-<tr class="memdesc:adc01f1be5f05127f849a2bf10a97e89b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the parsing error offset in code unit. <br /></td></tr>
-<tr class="separator:adc01f1be5f05127f849a2bf10a97e89b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac817b123619422f03c44a46978d9fbd0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac817b123619422f03c44a46978d9fbd0"></a>
-<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b">PointerParseErrorCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ac817b123619422f03c44a46978d9fbd0">GetParseErrorCode</a> () const </td></tr>
-<tr class="memdesc:ac817b123619422f03c44a46978d9fbd0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the parsing error code. <br /></td></tr>
-<tr class="separator:ac817b123619422f03c44a46978d9fbd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a98b96d54c2c3378f1892ffffc501069c"><td class="memItemLeft" align="right" valign="top"><a id="a98b96d54c2c3378f1892ffffc501069c"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c">IsValid</a> () const</td></tr>
+<tr class="memdesc:a98b96d54c2c3378f1892ffffc501069c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether this is a valid pointer. <br /></td></tr>
+<tr class="separator:a98b96d54c2c3378f1892ffffc501069c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a75caef2a047c56466f0b599bdda882c9"><td class="memItemLeft" align="right" valign="top"><a id="a75caef2a047c56466f0b599bdda882c9"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a75caef2a047c56466f0b599bdda882c9">GetParseErrorOffset</a> () const</td></tr>
+<tr class="memdesc:a75caef2a047c56466f0b599bdda882c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the parsing error offset in code unit. <br /></td></tr>
+<tr class="separator:a75caef2a047c56466f0b599bdda882c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af649a48d77aa856cddaa748ad6b0d6ac"><td class="memItemLeft" align="right" valign="top"><a id="af649a48d77aa856cddaa748ad6b0d6ac"></a>
+<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b">PointerParseErrorCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af649a48d77aa856cddaa748ad6b0d6ac">GetParseErrorCode</a> () const</td></tr>
+<tr class="memdesc:af649a48d77aa856cddaa748ad6b0d6ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the parsing error code. <br /></td></tr>
+<tr class="separator:af649a48d77aa856cddaa748ad6b0d6ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Tokens</div></td></tr>
-<tr class="memitem:a0ee51e6c996d4665b398dae5dbf00bc4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ee51e6c996d4665b398dae5dbf00bc4"></a>
-const <a class="el" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a0ee51e6c996d4665b398dae5dbf00bc4">GetTokens</a> () const </td></tr>
-<tr class="memdesc:a0ee51e6c996d4665b398dae5dbf00bc4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the token array (const version only). <br /></td></tr>
-<tr class="separator:a0ee51e6c996d4665b398dae5dbf00bc4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2949cb104effdf323781ae70ce469ed9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2949cb104effdf323781ae70ce469ed9"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a2949cb104effdf323781ae70ce469ed9">GetTokenCount</a> () const </td></tr>
-<tr class="memdesc:a2949cb104effdf323781ae70ce469ed9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of tokens. <br /></td></tr>
-<tr class="separator:a2949cb104effdf323781ae70ce469ed9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac07c300d43f04dad9caa0cb209cb2853"><td class="memItemLeft" align="right" valign="top"><a id="ac07c300d43f04dad9caa0cb209cb2853"></a>
+const <a class="el" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ac07c300d43f04dad9caa0cb209cb2853">GetTokens</a> () const</td></tr>
+<tr class="memdesc:ac07c300d43f04dad9caa0cb209cb2853"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the token array (const version only). <br /></td></tr>
+<tr class="separator:ac07c300d43f04dad9caa0cb209cb2853"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a791e40c10682b9db0adf2b6e0b8b3d78"><td class="memItemLeft" align="right" valign="top"><a id="a791e40c10682b9db0adf2b6e0b8b3d78"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a791e40c10682b9db0adf2b6e0b8b3d78">GetTokenCount</a> () const</td></tr>
+<tr class="memdesc:a791e40c10682b9db0adf2b6e0b8b3d78"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of tokens. <br /></td></tr>
+<tr class="separator:a791e40c10682b9db0adf2b6e0b8b3d78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Equality/inequality operators</div></td></tr>
-<tr class="memitem:af0d009a8322a7b61f63a9539ca8bddaf"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af0d009a8322a7b61f63a9539ca8bddaf">operator==</a> (const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> &amp;rhs) const </td></tr>
-<tr class="memdesc:af0d009a8322a7b61f63a9539ca8bddaf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equality operator. <a href="#af0d009a8322a7b61f63a9539ca8bddaf">更多...</a><br /></td></tr>
-<tr class="separator:af0d009a8322a7b61f63a9539ca8bddaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3e74f5b9c9fd3307f6ebac61a7131524"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a3e74f5b9c9fd3307f6ebac61a7131524">operator!=</a> (const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> &amp;rhs) const </td></tr>
-<tr class="memdesc:a3e74f5b9c9fd3307f6ebac61a7131524"><td class="mdescLeft">&#160;</td><td class="mdescRight">Inequality operator. <a href="#a3e74f5b9c9fd3307f6ebac61a7131524">更多...</a><br /></td></tr>
-<tr class="separator:a3e74f5b9c9fd3307f6ebac61a7131524"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3bb15fa5592f2bfad6f2c9af7940b952"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a3bb15fa5592f2bfad6f2c9af7940b952">operator==</a> (const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> &amp;rhs) const</td></tr>
+<tr class="memdesc:a3bb15fa5592f2bfad6f2c9af7940b952"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equality operator. <a href="#a3bb15fa5592f2bfad6f2c9af7940b952">更多...</a><br /></td></tr>
+<tr class="separator:a3bb15fa5592f2bfad6f2c9af7940b952"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8ca73989b4f3ffa5154a229f95f1e0c9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a8ca73989b4f3ffa5154a229f95f1e0c9">operator!=</a> (const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> &amp;rhs) const</td></tr>
+<tr class="memdesc:a8ca73989b4f3ffa5154a229f95f1e0c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Inequality operator. <a href="#a8ca73989b4f3ffa5154a229f95f1e0c9">更多...</a><br /></td></tr>
+<tr class="separator:a8ca73989b4f3ffa5154a229f95f1e0c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Stringify</div></td></tr>
-<tr class="memitem:ab9166f175517b1bff8c2219ea769e506"><td class="memTemplParams" colspan="2">template&lt;typename OutputStream &gt; </td></tr>
-<tr class="memitem:ab9166f175517b1bff8c2219ea769e506"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ab9166f175517b1bff8c2219ea769e506">Stringify</a> (OutputStream &amp;os) const </td></tr>
-<tr class="memdesc:ab9166f175517b1bff8c2219ea769e506"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stringify the pointer into string representation. <a href="#ab9166f175517b1bff8c2219ea769e506">更多...</a><br /></td></tr>
-<tr class="separator:ab9166f175517b1bff8c2219ea769e506"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a40413907ac94e218f93625d3a5c8c454"><td class="memTemplParams" colspan="2">template&lt;typename OutputStream &gt; </td></tr>
-<tr class="memitem:a40413907ac94e218f93625d3a5c8c454"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a40413907ac94e218f93625d3a5c8c454">StringifyUriFragment</a> (OutputStream &amp;os) const </td></tr>
-<tr class="memdesc:a40413907ac94e218f93625d3a5c8c454"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stringify the pointer into URI fragment representation. <a href="#a40413907ac94e218f93625d3a5c8c454">更多...</a><br /></td></tr>
-<tr class="separator:a40413907ac94e218f93625d3a5c8c454"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a73073ca3c9e47eba7c27c16151b269ac"><td class="memTemplParams" colspan="2">template&lt;typename OutputStream &gt; </td></tr>
+<tr class="memitem:a73073ca3c9e47eba7c27c16151b269ac"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a73073ca3c9e47eba7c27c16151b269ac">Stringify</a> (OutputStream &amp;os) const</td></tr>
+<tr class="memdesc:a73073ca3c9e47eba7c27c16151b269ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stringify the pointer into string representation. <a href="#a73073ca3c9e47eba7c27c16151b269ac">更多...</a><br /></td></tr>
+<tr class="separator:a73073ca3c9e47eba7c27c16151b269ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae985c27c1d061b93ba4f8875cfa5f7b5"><td class="memTemplParams" colspan="2">template&lt;typename OutputStream &gt; </td></tr>
+<tr class="memitem:ae985c27c1d061b93ba4f8875cfa5f7b5"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ae985c27c1d061b93ba4f8875cfa5f7b5">StringifyUriFragment</a> (OutputStream &amp;os) const</td></tr>
+<tr class="memdesc:ae985c27c1d061b93ba4f8875cfa5f7b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stringify the pointer into URI fragment representation. <a href="#ae985c27c1d061b93ba4f8875cfa5f7b5">更多...</a><br /></td></tr>
+<tr class="separator:ae985c27c1d061b93ba4f8875cfa5f7b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Create value</div></td></tr>
-<tr class="memitem:a3733a6d6cf2a3a13f2a59b109b56d800"><td class="memItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a3733a6d6cf2a3a13f2a59b109b56d800">Create</a> (ValueType &amp;root, typename ValueType::AllocatorType &amp;allocator, bool *alreadyExist=0) const </td></tr>
-<tr class="memdesc:a3733a6d6cf2a3a13f2a59b109b56d800"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a value in a subtree. <a href="#a3733a6d6cf2a3a13f2a59b109b56d800">更多...</a><br /></td></tr>
-<tr class="separator:a3733a6d6cf2a3a13f2a59b109b56d800"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2b5a8fb688e6b6a1b077ce103df455c3"><td class="memTemplParams" colspan="2">template&lt;typename stackAllocator &gt; </td></tr>
-<tr class="memitem:a2b5a8fb688e6b6a1b077ce103df455c3"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a2b5a8fb688e6b6a1b077ce103df455c3">Create</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, bool *alreadyExist=0) const </td></tr>
-<tr class="memdesc:a2b5a8fb688e6b6a1b077ce103df455c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a value in a document. <a href="#a2b5a8fb688e6b6a1b077ce103df455c3">更多...</a><br /></td></tr>
-<tr class="separator:a2b5a8fb688e6b6a1b077ce103df455c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad0b5b67c57572e81689762094ac8c856"><td class="memItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856">Create</a> (ValueType &amp;root, typename ValueType::AllocatorType &amp;allocator, bool *alreadyExist=0) const</td></tr>
+<tr class="memdesc:ad0b5b67c57572e81689762094ac8c856"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a value in a subtree. <a href="#ad0b5b67c57572e81689762094ac8c856">更多...</a><br /></td></tr>
+<tr class="separator:ad0b5b67c57572e81689762094ac8c856"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adc4bf5a3892f5626a8517f90c88e4b7f"><td class="memTemplParams" colspan="2">template&lt;typename stackAllocator &gt; </td></tr>
+<tr class="memitem:adc4bf5a3892f5626a8517f90c88e4b7f"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#adc4bf5a3892f5626a8517f90c88e4b7f">Create</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, bool *alreadyExist=0) const</td></tr>
+<tr class="memdesc:adc4bf5a3892f5626a8517f90c88e4b7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a value in a document. <a href="#adc4bf5a3892f5626a8517f90c88e4b7f">更多...</a><br /></td></tr>
+<tr class="separator:adc4bf5a3892f5626a8517f90c88e4b7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Query value</div></td></tr>
-<tr class="memitem:a309d819cc14e9d2183df4807bc99fea5"><td class="memItemLeft" align="right" valign="top">ValueType *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a309d819cc14e9d2183df4807bc99fea5">Get</a> (ValueType &amp;root, size_t *unresolvedTokenIndex=0) const </td></tr>
-<tr class="memdesc:a309d819cc14e9d2183df4807bc99fea5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a subtree. <a href="#a309d819cc14e9d2183df4807bc99fea5">更多...</a><br /></td></tr>
-<tr class="separator:a309d819cc14e9d2183df4807bc99fea5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab6982b814e41d8f64bea7d5faab93b1f"><td class="memItemLeft" align="right" valign="top">const ValueType *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ab6982b814e41d8f64bea7d5faab93b1f">Get</a> (const ValueType &amp;root, size_t *unresolvedTokenIndex=0) const </td></tr>
-<tr class="memdesc:ab6982b814e41d8f64bea7d5faab93b1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a const value in a const subtree. <a href="#ab6982b814e41d8f64bea7d5faab93b1f">更多...</a><br /></td></tr>
-<tr class="separator:ab6982b814e41d8f64bea7d5faab93b1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af09e26073a7263fc9e8f0c14160f45bd"><td class="memItemLeft" align="right" valign="top">ValueType *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd">Get</a> (ValueType &amp;root, size_t *unresolvedTokenIndex=0) const</td></tr>
+<tr class="memdesc:af09e26073a7263fc9e8f0c14160f45bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a subtree. <a href="#af09e26073a7263fc9e8f0c14160f45bd">更多...</a><br /></td></tr>
+<tr class="separator:af09e26073a7263fc9e8f0c14160f45bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aac2171a0ac38298b2d0ae063351ec176"><td class="memItemLeft" align="right" valign="top">const ValueType *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#aac2171a0ac38298b2d0ae063351ec176">Get</a> (const ValueType &amp;root, size_t *unresolvedTokenIndex=0) const</td></tr>
+<tr class="memdesc:aac2171a0ac38298b2d0ae063351ec176"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a const value in a const subtree. <a href="#aac2171a0ac38298b2d0ae063351ec176">更多...</a><br /></td></tr>
+<tr class="separator:aac2171a0ac38298b2d0ae063351ec176"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Query a value with default</div></td></tr>
-<tr class="memitem:a6c615761374ddce265d542f4b4b476b1"><td class="memItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a6c615761374ddce265d542f4b4b476b1">GetWithDefault</a> (ValueType &amp;root, const ValueType &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const </td></tr>
-<tr class="memdesc:a6c615761374ddce265d542f4b4b476b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a subtree with default value. <a href="#a6c615761374ddce265d542f4b4b476b1">更多...</a><br /></td></tr>
-<tr class="separator:a6c615761374ddce265d542f4b4b476b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae9f3e27a210a0974892c1260c2e4a39f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae9f3e27a210a0974892c1260c2e4a39f"></a>
-ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ae9f3e27a210a0974892c1260c2e4a39f">GetWithDefault</a> (ValueType &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> *defaultValue, typename ValueType::AllocatorType &amp;allocator) const </td></tr>
-<tr class="memdesc:ae9f3e27a210a0974892c1260c2e4a39f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a subtree with default null-terminated string. <br /></td></tr>
-<tr class="separator:ae9f3e27a210a0974892c1260c2e4a39f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab914090864d0ded21a376867c33ad865"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab914090864d0ded21a376867c33ad865"></a>
-ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ab914090864d0ded21a376867c33ad865">GetWithDefault</a> (ValueType &amp;root, const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> &gt; &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const </td></tr>
-<tr class="memdesc:ab914090864d0ded21a376867c33ad865"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a subtree with default std::basic_string. <br /></td></tr>
-<tr class="separator:ab914090864d0ded21a376867c33ad865"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3bb1e63a2c0aa61a9e95d6d65c4c3ffd"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a3bb1e63a2c0aa61a9e95d6d65c4c3ffd"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a3bb1e63a2c0aa61a9e95d6d65c4c3ffd">GetWithDefault</a> (ValueType &amp;root, T defaultValue, typename ValueType::AllocatorType &amp;allocator) const </td></tr>
-<tr class="memdesc:a3bb1e63a2c0aa61a9e95d6d65c4c3ffd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a subtree with default primitive value. <a href="#a3bb1e63a2c0aa61a9e95d6d65c4c3ffd">更多...</a><br /></td></tr>
-<tr class="separator:a3bb1e63a2c0aa61a9e95d6d65c4c3ffd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af89e3e8f87bb833d4eb4bb2fd4074431"><td class="memTemplParams" colspan="2"><a class="anchor" id="af89e3e8f87bb833d4eb4bb2fd4074431"></a>
+<tr class="memitem:acd36d0bbfcca43feaeeba5488d8384c2"><td class="memItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2">GetWithDefault</a> (ValueType &amp;root, const ValueType &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const</td></tr>
+<tr class="memdesc:acd36d0bbfcca43feaeeba5488d8384c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a subtree with default value. <a href="#acd36d0bbfcca43feaeeba5488d8384c2">更多...</a><br /></td></tr>
+<tr class="separator:acd36d0bbfcca43feaeeba5488d8384c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abdc025b8391b271f1134a7ba7039c27f"><td class="memItemLeft" align="right" valign="top"><a id="abdc025b8391b271f1134a7ba7039c27f"></a>
+ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#abdc025b8391b271f1134a7ba7039c27f">GetWithDefault</a> (ValueType &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> *defaultValue, typename ValueType::AllocatorType &amp;allocator) const</td></tr>
+<tr class="memdesc:abdc025b8391b271f1134a7ba7039c27f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a subtree with default null-terminated string. <br /></td></tr>
+<tr class="separator:abdc025b8391b271f1134a7ba7039c27f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2ac51ee7af5b9d7628140ae8501edcf4"><td class="memItemLeft" align="right" valign="top"><a id="a2ac51ee7af5b9d7628140ae8501edcf4"></a>
+ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a2ac51ee7af5b9d7628140ae8501edcf4">GetWithDefault</a> (ValueType &amp;root, const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> &gt; &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const</td></tr>
+<tr class="memdesc:a2ac51ee7af5b9d7628140ae8501edcf4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a subtree with default std::basic_string. <br /></td></tr>
+<tr class="separator:a2ac51ee7af5b9d7628140ae8501edcf4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a16833ef8a38386e6c310d602426b45f0"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<tr class="memitem:a16833ef8a38386e6c310d602426b45f0"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a16833ef8a38386e6c310d602426b45f0">GetWithDefault</a> (ValueType &amp;root, T defaultValue, typename ValueType::AllocatorType &amp;allocator) const</td></tr>
+<tr class="memdesc:a16833ef8a38386e6c310d602426b45f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a subtree with default primitive value. <a href="#a16833ef8a38386e6c310d602426b45f0">更多...</a><br /></td></tr>
+<tr class="separator:a16833ef8a38386e6c310d602426b45f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a07fa31c03c96e260f234087882dce408"><td class="memTemplParams" colspan="2"><a id="a07fa31c03c96e260f234087882dce408"></a>
template&lt;typename stackAllocator &gt; </td></tr>
-<tr class="memitem:af89e3e8f87bb833d4eb4bb2fd4074431"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af89e3e8f87bb833d4eb4bb2fd4074431">GetWithDefault</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;defaultValue) const </td></tr>
-<tr class="memdesc:af89e3e8f87bb833d4eb4bb2fd4074431"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a document with default value. <br /></td></tr>
-<tr class="separator:af89e3e8f87bb833d4eb4bb2fd4074431"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad96e263ba29209259fd4abe63d7f4458"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad96e263ba29209259fd4abe63d7f4458"></a>
+<tr class="memitem:a07fa31c03c96e260f234087882dce408"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a07fa31c03c96e260f234087882dce408">GetWithDefault</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;defaultValue) const</td></tr>
+<tr class="memdesc:a07fa31c03c96e260f234087882dce408"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a document with default value. <br /></td></tr>
+<tr class="separator:a07fa31c03c96e260f234087882dce408"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaa4e92344cc07e98adb5b9f5b93927b8"><td class="memTemplParams" colspan="2"><a id="aaa4e92344cc07e98adb5b9f5b93927b8"></a>
template&lt;typename stackAllocator &gt; </td></tr>
-<tr class="memitem:ad96e263ba29209259fd4abe63d7f4458"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ad96e263ba29209259fd4abe63d7f4458">GetWithDefault</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> *defaultValue) const </td></tr>
-<tr class="memdesc:ad96e263ba29209259fd4abe63d7f4458"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a document with default null-terminated string. <br /></td></tr>
-<tr class="separator:ad96e263ba29209259fd4abe63d7f4458"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5e9e740bec7f5a1703088171e0b2557b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5e9e740bec7f5a1703088171e0b2557b"></a>
+<tr class="memitem:aaa4e92344cc07e98adb5b9f5b93927b8"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#aaa4e92344cc07e98adb5b9f5b93927b8">GetWithDefault</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> *defaultValue) const</td></tr>
+<tr class="memdesc:aaa4e92344cc07e98adb5b9f5b93927b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a document with default null-terminated string. <br /></td></tr>
+<tr class="separator:aaa4e92344cc07e98adb5b9f5b93927b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af19e2313004885cfa9c45f50b30b32e2"><td class="memTemplParams" colspan="2"><a id="af19e2313004885cfa9c45f50b30b32e2"></a>
template&lt;typename stackAllocator &gt; </td></tr>
-<tr class="memitem:a5e9e740bec7f5a1703088171e0b2557b"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a5e9e740bec7f5a1703088171e0b2557b">GetWithDefault</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> &gt; &amp;defaultValue) const </td></tr>
-<tr class="memdesc:a5e9e740bec7f5a1703088171e0b2557b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a document with default std::basic_string. <br /></td></tr>
-<tr class="separator:a5e9e740bec7f5a1703088171e0b2557b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a573a35dd96aacffe209e1442720f447a"><td class="memTemplParams" colspan="2">template&lt;typename T , typename stackAllocator &gt; </td></tr>
-<tr class="memitem:a573a35dd96aacffe209e1442720f447a"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a573a35dd96aacffe209e1442720f447a">GetWithDefault</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T defaultValue) const </td></tr>
-<tr class="memdesc:a573a35dd96aacffe209e1442720f447a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a document with default primitive value. <a href="#a573a35dd96aacffe209e1442720f447a">更多...</a><br /></td></tr>
-<tr class="separator:a573a35dd96aacffe209e1442720f447a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af19e2313004885cfa9c45f50b30b32e2"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af19e2313004885cfa9c45f50b30b32e2">GetWithDefault</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> &gt; &amp;defaultValue) const</td></tr>
+<tr class="memdesc:af19e2313004885cfa9c45f50b30b32e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a document with default std::basic_string. <br /></td></tr>
+<tr class="separator:af19e2313004885cfa9c45f50b30b32e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1f428c25a3a905683e616d76c2d9efcf"><td class="memTemplParams" colspan="2">template&lt;typename T , typename stackAllocator &gt; </td></tr>
+<tr class="memitem:a1f428c25a3a905683e616d76c2d9efcf"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a1f428c25a3a905683e616d76c2d9efcf">GetWithDefault</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T defaultValue) const</td></tr>
+<tr class="memdesc:a1f428c25a3a905683e616d76c2d9efcf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query a value in a document with default primitive value. <a href="#a1f428c25a3a905683e616d76c2d9efcf">更多...</a><br /></td></tr>
+<tr class="separator:a1f428c25a3a905683e616d76c2d9efcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Set a value</div></td></tr>
-<tr class="memitem:aecea7b5c4786f509e35c3917efa57fce"><td class="memItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#aecea7b5c4786f509e35c3917efa57fce">Set</a> (ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const </td></tr>
-<tr class="memdesc:aecea7b5c4786f509e35c3917efa57fce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a value in a subtree, with move semantics. <a href="#aecea7b5c4786f509e35c3917efa57fce">更多...</a><br /></td></tr>
-<tr class="separator:aecea7b5c4786f509e35c3917efa57fce"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac19f479c656ddd6a8bd9888a9fb27f96"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac19f479c656ddd6a8bd9888a9fb27f96"></a>
-ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ac19f479c656ddd6a8bd9888a9fb27f96">Set</a> (ValueType &amp;root, const ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const </td></tr>
-<tr class="memdesc:ac19f479c656ddd6a8bd9888a9fb27f96"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a value in a subtree, with copy semantics. <br /></td></tr>
-<tr class="separator:ac19f479c656ddd6a8bd9888a9fb27f96"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a98454081fb9557b3d2285c4e89bd34f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98454081fb9557b3d2285c4e89bd34f6"></a>
-ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a98454081fb9557b3d2285c4e89bd34f6">Set</a> (ValueType &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> *value, typename ValueType::AllocatorType &amp;allocator) const </td></tr>
-<tr class="memdesc:a98454081fb9557b3d2285c4e89bd34f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a null-terminated string in a subtree. <br /></td></tr>
-<tr class="separator:a98454081fb9557b3d2285c4e89bd34f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a151f17dc1c655b9dc0a9a3cf06e6bdcb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a151f17dc1c655b9dc0a9a3cf06e6bdcb"></a>
-ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a151f17dc1c655b9dc0a9a3cf06e6bdcb">Set</a> (ValueType &amp;root, const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> &gt; &amp;value, typename ValueType::AllocatorType &amp;allocator) const </td></tr>
-<tr class="memdesc:a151f17dc1c655b9dc0a9a3cf06e6bdcb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a std::basic_string in a subtree. <br /></td></tr>
-<tr class="separator:a151f17dc1c655b9dc0a9a3cf06e6bdcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae9037fa1a22498e2a8c0f96f866f6288"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:ae9037fa1a22498e2a8c0f96f866f6288"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ae9037fa1a22498e2a8c0f96f866f6288">Set</a> (ValueType &amp;root, T value, typename ValueType::AllocatorType &amp;allocator) const </td></tr>
-<tr class="memdesc:ae9037fa1a22498e2a8c0f96f866f6288"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a primitive value in a subtree. <a href="#ae9037fa1a22498e2a8c0f96f866f6288">更多...</a><br /></td></tr>
-<tr class="separator:ae9037fa1a22498e2a8c0f96f866f6288"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:add58edd4f813645f8ffead6956967f96"><td class="memTemplParams" colspan="2"><a class="anchor" id="add58edd4f813645f8ffead6956967f96"></a>
+<tr class="memitem:a0759b70ec70a6eb7a7545a34764ac663"><td class="memItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663">Set</a> (ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const</td></tr>
+<tr class="memdesc:a0759b70ec70a6eb7a7545a34764ac663"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a value in a subtree, with move semantics. <a href="#a0759b70ec70a6eb7a7545a34764ac663">更多...</a><br /></td></tr>
+<tr class="separator:a0759b70ec70a6eb7a7545a34764ac663"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af2f51d68c82136086bed9593719abd1a"><td class="memItemLeft" align="right" valign="top"><a id="af2f51d68c82136086bed9593719abd1a"></a>
+ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af2f51d68c82136086bed9593719abd1a">Set</a> (ValueType &amp;root, const ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const</td></tr>
+<tr class="memdesc:af2f51d68c82136086bed9593719abd1a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a value in a subtree, with copy semantics. <br /></td></tr>
+<tr class="separator:af2f51d68c82136086bed9593719abd1a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4f0ef2b49a9561d570217249343d9335"><td class="memItemLeft" align="right" valign="top"><a id="a4f0ef2b49a9561d570217249343d9335"></a>
+ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a4f0ef2b49a9561d570217249343d9335">Set</a> (ValueType &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> *value, typename ValueType::AllocatorType &amp;allocator) const</td></tr>
+<tr class="memdesc:a4f0ef2b49a9561d570217249343d9335"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a null-terminated string in a subtree. <br /></td></tr>
+<tr class="separator:a4f0ef2b49a9561d570217249343d9335"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0ae84f686e1af593b9445c2c502101b2"><td class="memItemLeft" align="right" valign="top"><a id="a0ae84f686e1af593b9445c2c502101b2"></a>
+ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a0ae84f686e1af593b9445c2c502101b2">Set</a> (ValueType &amp;root, const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> &gt; &amp;value, typename ValueType::AllocatorType &amp;allocator) const</td></tr>
+<tr class="memdesc:a0ae84f686e1af593b9445c2c502101b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a std::basic_string in a subtree. <br /></td></tr>
+<tr class="separator:a0ae84f686e1af593b9445c2c502101b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa6df2ca27eecabbbad825a64a3d2bfe9"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<tr class="memitem:aa6df2ca27eecabbbad825a64a3d2bfe9"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#aa6df2ca27eecabbbad825a64a3d2bfe9">Set</a> (ValueType &amp;root, T value, typename ValueType::AllocatorType &amp;allocator) const</td></tr>
+<tr class="memdesc:aa6df2ca27eecabbbad825a64a3d2bfe9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a primitive value in a subtree. <a href="#aa6df2ca27eecabbbad825a64a3d2bfe9">更多...</a><br /></td></tr>
+<tr class="separator:aa6df2ca27eecabbbad825a64a3d2bfe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9371832d9089cca9b7f549172fd75cc8"><td class="memTemplParams" colspan="2"><a id="a9371832d9089cca9b7f549172fd75cc8"></a>
template&lt;typename stackAllocator &gt; </td></tr>
-<tr class="memitem:add58edd4f813645f8ffead6956967f96"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#add58edd4f813645f8ffead6956967f96">Set</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const </td></tr>
-<tr class="memdesc:add58edd4f813645f8ffead6956967f96"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a value in a document, with move semantics. <br /></td></tr>
-<tr class="separator:add58edd4f813645f8ffead6956967f96"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a83ff802b8fcacd96e60ba1c2627a19f0"><td class="memTemplParams" colspan="2"><a class="anchor" id="a83ff802b8fcacd96e60ba1c2627a19f0"></a>
+<tr class="memitem:a9371832d9089cca9b7f549172fd75cc8"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a9371832d9089cca9b7f549172fd75cc8">Set</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const</td></tr>
+<tr class="memdesc:a9371832d9089cca9b7f549172fd75cc8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a value in a document, with move semantics. <br /></td></tr>
+<tr class="separator:a9371832d9089cca9b7f549172fd75cc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad7a692d4e08d578f7e24afb7c4004276"><td class="memTemplParams" colspan="2"><a id="ad7a692d4e08d578f7e24afb7c4004276"></a>
template&lt;typename stackAllocator &gt; </td></tr>
-<tr class="memitem:a83ff802b8fcacd96e60ba1c2627a19f0"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a83ff802b8fcacd96e60ba1c2627a19f0">Set</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;value) const </td></tr>
-<tr class="memdesc:a83ff802b8fcacd96e60ba1c2627a19f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a value in a document, with copy semantics. <br /></td></tr>
-<tr class="separator:a83ff802b8fcacd96e60ba1c2627a19f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2ee50bcbfa76119094eef0284eeddfbe"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2ee50bcbfa76119094eef0284eeddfbe"></a>
+<tr class="memitem:ad7a692d4e08d578f7e24afb7c4004276"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ad7a692d4e08d578f7e24afb7c4004276">Set</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;value) const</td></tr>
+<tr class="memdesc:ad7a692d4e08d578f7e24afb7c4004276"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a value in a document, with copy semantics. <br /></td></tr>
+<tr class="separator:ad7a692d4e08d578f7e24afb7c4004276"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afb649edbdbe09a6840b12d67c9f2501e"><td class="memTemplParams" colspan="2"><a id="afb649edbdbe09a6840b12d67c9f2501e"></a>
template&lt;typename stackAllocator &gt; </td></tr>
-<tr class="memitem:a2ee50bcbfa76119094eef0284eeddfbe"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a2ee50bcbfa76119094eef0284eeddfbe">Set</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> *value) const </td></tr>
-<tr class="memdesc:a2ee50bcbfa76119094eef0284eeddfbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a null-terminated string in a document. <br /></td></tr>
-<tr class="separator:a2ee50bcbfa76119094eef0284eeddfbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9bd1c4076e732ffc1b4527ac5659264e"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9bd1c4076e732ffc1b4527ac5659264e"></a>
+<tr class="memitem:afb649edbdbe09a6840b12d67c9f2501e"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#afb649edbdbe09a6840b12d67c9f2501e">Set</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> *value) const</td></tr>
+<tr class="memdesc:afb649edbdbe09a6840b12d67c9f2501e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a null-terminated string in a document. <br /></td></tr>
+<tr class="separator:afb649edbdbe09a6840b12d67c9f2501e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3a7ff4e0b700c2975cf455fef23226b4"><td class="memTemplParams" colspan="2"><a id="a3a7ff4e0b700c2975cf455fef23226b4"></a>
template&lt;typename stackAllocator &gt; </td></tr>
-<tr class="memitem:a9bd1c4076e732ffc1b4527ac5659264e"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a9bd1c4076e732ffc1b4527ac5659264e">Set</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> &gt; &amp;value) const </td></tr>
-<tr class="memdesc:a9bd1c4076e732ffc1b4527ac5659264e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a std::basic_string in a document. <br /></td></tr>
-<tr class="separator:a9bd1c4076e732ffc1b4527ac5659264e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af547130d348ca1805d882955a377bbe4"><td class="memTemplParams" colspan="2">template&lt;typename T , typename stackAllocator &gt; </td></tr>
-<tr class="memitem:af547130d348ca1805d882955a377bbe4"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#af547130d348ca1805d882955a377bbe4">Set</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T value) const </td></tr>
-<tr class="memdesc:af547130d348ca1805d882955a377bbe4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a primitive value in a document. <a href="#af547130d348ca1805d882955a377bbe4">更多...</a><br /></td></tr>
-<tr class="separator:af547130d348ca1805d882955a377bbe4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3a7ff4e0b700c2975cf455fef23226b4"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a3a7ff4e0b700c2975cf455fef23226b4">Set</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> &gt; &amp;value) const</td></tr>
+<tr class="memdesc:a3a7ff4e0b700c2975cf455fef23226b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a std::basic_string in a document. <br /></td></tr>
+<tr class="separator:a3a7ff4e0b700c2975cf455fef23226b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8e5ed62ba30bb3f7a09a826746f70574"><td class="memTemplParams" colspan="2">template&lt;typename T , typename stackAllocator &gt; </td></tr>
+<tr class="memitem:a8e5ed62ba30bb3f7a09a826746f70574"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a8e5ed62ba30bb3f7a09a826746f70574">Set</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T value) const</td></tr>
+<tr class="memdesc:a8e5ed62ba30bb3f7a09a826746f70574"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a primitive value in a document. <a href="#a8e5ed62ba30bb3f7a09a826746f70574">更多...</a><br /></td></tr>
+<tr class="separator:a8e5ed62ba30bb3f7a09a826746f70574"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Swap a value</div></td></tr>
-<tr class="memitem:aaaa5b0ecdfa6af45e7dabc1987c87cac"><td class="memItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#aaaa5b0ecdfa6af45e7dabc1987c87cac">Swap</a> (ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const </td></tr>
-<tr class="memdesc:aaaa5b0ecdfa6af45e7dabc1987c87cac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swap a value with a value in a subtree. <a href="#aaaa5b0ecdfa6af45e7dabc1987c87cac">更多...</a><br /></td></tr>
-<tr class="separator:aaaa5b0ecdfa6af45e7dabc1987c87cac"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad9f28da15453d91c3669618a6f48bfcc"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad9f28da15453d91c3669618a6f48bfcc"></a>
+<tr class="memitem:a4690cd1d6c85168ebd2ce0afe186a4fa"><td class="memItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a4690cd1d6c85168ebd2ce0afe186a4fa">Swap</a> (ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const</td></tr>
+<tr class="memdesc:a4690cd1d6c85168ebd2ce0afe186a4fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swap a value with a value in a subtree. <a href="#a4690cd1d6c85168ebd2ce0afe186a4fa">更多...</a><br /></td></tr>
+<tr class="separator:a4690cd1d6c85168ebd2ce0afe186a4fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a29d7ee42eb5646f829aeca6c6989555a"><td class="memTemplParams" colspan="2"><a id="a29d7ee42eb5646f829aeca6c6989555a"></a>
template&lt;typename stackAllocator &gt; </td></tr>
-<tr class="memitem:ad9f28da15453d91c3669618a6f48bfcc"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#ad9f28da15453d91c3669618a6f48bfcc">Swap</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const </td></tr>
-<tr class="memdesc:ad9f28da15453d91c3669618a6f48bfcc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swap a value with a value in a document. <br /></td></tr>
-<tr class="separator:ad9f28da15453d91c3669618a6f48bfcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a29d7ee42eb5646f829aeca6c6989555a"><td class="memTemplItemLeft" align="right" valign="top">ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_pointer.html#a29d7ee42eb5646f829aeca6c6989555a">Swap</a> (<a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const</td></tr>
+<tr class="memdesc:a29d7ee42eb5646f829aeca6c6989555a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swap a value with a value in a document. <br /></td></tr>
+<tr class="separator:a29d7ee42eb5646f829aeca6c6989555a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<div class="textblock"><h3>template&lt;typename ValueType, typename Allocator&gt;<br />
+<div class="textblock"><h3>template&lt;typename ValueType, typename Allocator = CrtAllocator&gt;<br />
class rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</h3>
<p>Represents a JSON Pointer. Use Pointer for <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding and default allocator. </p>
@@ -328,11 +329,13 @@ class rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</h3>
</dl>
<dl class="section note"><dt>注解</dt><dd><a class="el" href="classrapidjson_1_1_generic_pointer.html" title="Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator. ">GenericPointer</a> uses same encoding of ValueType. However, <a class="el" href="classrapidjson_1_1_allocator.html" title="Concept for allocating, resizing and freeing memory block. ">Allocator</a> of <a class="el" href="classrapidjson_1_1_generic_pointer.html" title="Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator. ">GenericPointer</a> is independent of <a class="el" href="classrapidjson_1_1_allocator.html" title="Concept for allocating, resizing and freeing memory block. ">Allocator</a> of Value. </dd></dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
-<a class="anchor" id="a8f831aae14afc493a82b5fb6aa9c3c43"></a>
+<a id="a8f831aae14afc493a82b5fb6aa9c3c43"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8f831aae14afc493a82b5fb6aa9c3c43">&#9670;&nbsp;</a></span>GenericPointer() <span class="overload">[1/4]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -373,11 +376,13 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</div>
</div>
-<a class="anchor" id="aeefcd60e5ad37d80ec43f5315ae84809"></a>
+<a id="aeefcd60e5ad37d80ec43f5315ae84809"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeefcd60e5ad37d80ec43f5315ae84809">&#9670;&nbsp;</a></span>GenericPointer() <span class="overload">[2/4]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -419,11 +424,13 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</div>
</div>
-<a class="anchor" id="a00ad17ea227d2556404df7cc64c6aeb5"></a>
+<a id="a00ad17ea227d2556404df7cc64c6aeb5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a00ad17ea227d2556404df7cc64c6aeb5">&#9670;&nbsp;</a></span>GenericPointer() <span class="overload">[3/4]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -472,11 +479,13 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</div>
</div>
-<a class="anchor" id="a6df9f6a01d1b5945811055e1cf8aead6"></a>
+<a id="a6df9f6a01d1b5945811055e1cf8aead6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6df9f6a01d1b5945811055e1cf8aead6">&#9670;&nbsp;</a></span>GenericPointer() <span class="overload">[4/4]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -515,24 +524,17 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</table>
</dd>
</dl>
-<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="preprocessor">#define NAME(s) { s, sizeof(s) / sizeof(s[0]) - 1, kPointerInvalidIndex }</span></div>
-<div class="line"><span class="preprocessor">#define INDEX(i) { #i, sizeof(#i) - 1, i }</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">static</span> <span class="keyword">const</span> Pointer::Token kTokens[] = { NAME(<span class="stringliteral">&quot;foo&quot;</span>), INDEX(123) };</div>
-<div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a> p(kTokens, <span class="keyword">sizeof</span>(kTokens) / <span class="keyword">sizeof</span>(kTokens[0]));</div>
-<div class="line"><span class="comment">// Equivalent to static const Pointer p(&quot;/foo/123&quot;);</span></div>
-<div class="line"></div>
-<div class="line"><span class="preprocessor">#undef NAME</span></div>
-<div class="line"><span class="preprocessor">#undef INDEX</span></div>
-</div><!-- fragment -->
+<p><b>Example</b> </p><div class="fragment"><div class="line"><span class="preprocessor">#define NAME(s) { s, sizeof(s) / sizeof(s[0]) - 1, kPointerInvalidIndex }</span></div><div class="line"><span class="preprocessor">#define INDEX(i) { #i, sizeof(#i) - 1, i }</span></div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keyword">const</span> Pointer::Token kTokens[] = { NAME(<span class="stringliteral">&quot;foo&quot;</span>), INDEX(123) };</div><div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a> p(kTokens, <span class="keyword">sizeof</span>(kTokens) / <span class="keyword">sizeof</span>(kTokens[0]));</div><div class="line"><span class="comment">// Equivalent to static const Pointer p(&quot;/foo/123&quot;);</span></div><div class="line"></div><div class="line"><span class="preprocessor">#undef NAME</span></div><div class="line"><span class="preprocessor">#undef INDEX</span></div></div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
-<a class="anchor" id="a64f7bb98da73976b59597cdde96a40b8"></a>
+<a id="a7cb5eda2af1722e52efa591c4103ebec"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7cb5eda2af1722e52efa591c4103ebec">&#9670;&nbsp;</a></span>Append() <span class="overload">[1/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -562,7 +564,7 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</table>
</div><div class="memdoc">
-<p>Append a token and return a new Pointer. </p>
+<p>Append a token and return a new Pointer </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">token</td><td><a class="el" href="structrapidjson_1_1_generic_pointer_1_1_token.html" title="A token is the basic units of internal representation. ">Token</a> to be appended. </td></tr>
@@ -574,11 +576,13 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</div>
</div>
-<a class="anchor" id="a96e6f4c01632be39df82917f833710bc"></a>
+<a id="a30f4eac82e9fded60dead3f7d1cb3941"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a30f4eac82e9fded60dead3f7d1cb3941">&#9670;&nbsp;</a></span>Append() <span class="overload">[2/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -614,7 +618,7 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</table>
</div><div class="memdoc">
-<p>Append a name token with length, and return a new Pointer. </p>
+<p>Append a name token with length, and return a new Pointer </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name to be appended. </td></tr>
@@ -627,11 +631,13 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</div>
</div>
-<a class="anchor" id="af2e3630aeaebb6628c2b1694a0595452"></a>
+<a id="a033a099aaa6b36df2d5171bdc593e98e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a033a099aaa6b36df2d5171bdc593e98e">&#9670;&nbsp;</a></span>Append() <span class="overload">[3/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
@@ -663,7 +669,7 @@ template&lt;typename T &gt; </div>
</table>
</div><div class="memdoc">
-<p>Append a name token without length, and return a new Pointer. </p>
+<p>Append a name token without length, and return a new Pointer </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name (const Ch*) to be appended. </td></tr>
@@ -675,11 +681,13 @@ template&lt;typename T &gt; </div>
</div>
</div>
-<a class="anchor" id="ac4b35d8051c17a8c9408f71ae8541d19"></a>
+<a id="a18494d59f0317c037fa3bd037e436cec"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a18494d59f0317c037fa3bd037e436cec">&#9670;&nbsp;</a></span>Append() <span class="overload">[4/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -709,7 +717,7 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</table>
</div><div class="memdoc">
-<p>Append a name token, and return a new Pointer. </p>
+<p>Append a name token, and return a new Pointer </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name to be appended. </td></tr>
@@ -721,11 +729,13 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</div>
</div>
-<a class="anchor" id="ad0bd4948e56dce4b75b39f744050322c"></a>
+<a id="a4aadec8f0efe9a7ac42ac4906a5f676d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4aadec8f0efe9a7ac42ac4906a5f676d">&#9670;&nbsp;</a></span>Append() <span class="overload">[5/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -755,7 +765,7 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</table>
</div><div class="memdoc">
-<p>Append a index token, and return a new Pointer. </p>
+<p>Append a index token, and return a new Pointer </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">index</td><td>Index to be appended. </td></tr>
@@ -767,11 +777,13 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</div>
</div>
-<a class="anchor" id="a3baa23b919dc9ba9421b8e6fbf3e0605"></a>
+<a id="a618808f066fb1104d36f012cced3b27a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a618808f066fb1104d36f012cced3b27a">&#9670;&nbsp;</a></span>Append() <span class="overload">[6/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -801,7 +813,7 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</table>
</div><div class="memdoc">
-<p>Append a token by value, and return a new Pointer. </p>
+<p>Append a token by value, and return a new Pointer </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">token</td><td>token to be appended. </td></tr>
@@ -813,11 +825,13 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</div>
</div>
-<a class="anchor" id="a3733a6d6cf2a3a13f2a59b109b56d800"></a>
+<a id="ad0b5b67c57572e81689762094ac8c856"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad0b5b67c57572e81689762094ac8c856">&#9670;&nbsp;</a></span>Create() <span class="overload">[1/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -868,11 +882,13 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</div>
</div>
-<a class="anchor" id="a2b5a8fb688e6b6a1b077ce103df455c3"></a>
+<a id="adc4bf5a3892f5626a8517f90c88e4b7f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adc4bf5a3892f5626a8517f90c88e4b7f">&#9670;&nbsp;</a></span>Create() <span class="overload">[2/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;typename stackAllocator &gt; </div>
<table class="mlabels">
@@ -916,11 +932,13 @@ template&lt;typename stackAllocator &gt; </div>
</div>
</div>
-<a class="anchor" id="aec10492caf6e853935d9a360bbe73713"></a>
+<a id="a923a1100c029a28e25894708bdce784c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a923a1100c029a28e25894708bdce784c">&#9670;&nbsp;</a></span>Erase()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -952,11 +970,13 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</div>
</div>
-<a class="anchor" id="a309d819cc14e9d2183df4807bc99fea5"></a>
+<a id="af09e26073a7263fc9e8f0c14160f45bd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af09e26073a7263fc9e8f0c14160f45bd">&#9670;&nbsp;</a></span>Get() <span class="overload">[1/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1005,11 +1025,13 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</div>
</div>
-<a class="anchor" id="ab6982b814e41d8f64bea7d5faab93b1f"></a>
+<a id="aac2171a0ac38298b2d0ae063351ec176"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aac2171a0ac38298b2d0ae063351ec176">&#9670;&nbsp;</a></span>Get() <span class="overload">[2/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1050,11 +1072,13 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</div>
</div>
-<a class="anchor" id="a6c615761374ddce265d542f4b4b476b1"></a>
+<a id="acd36d0bbfcca43feaeeba5488d8384c2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acd36d0bbfcca43feaeeba5488d8384c2">&#9670;&nbsp;</a></span>GetWithDefault() <span class="overload">[1/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1091,7 +1115,7 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</div><div class="memdoc">
<p>Query a value in a subtree with default value. </p>
-<p>Similar to <a class="el" href="classrapidjson_1_1_generic_pointer.html#a309d819cc14e9d2183df4807bc99fea5" title="Query a value in a subtree. ">Get()</a>, but if the specified value do not exists, it creates all parents and clone the default value. So that this function always succeed.</p>
+<p>Similar to <a class="el" href="classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd" title="Query a value in a subtree. ">Get()</a>, but if the specified value do not exists, it creates all parents and clone the default value. So that this function always succeed.</p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">root</td><td>Root value of a DOM sub-tree to be resolved. It can be any value other than document root. </td></tr>
@@ -1100,15 +1124,17 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</table>
</dd>
</dl>
-<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_pointer.html#a3733a6d6cf2a3a13f2a59b109b56d800" title="Create a value in a subtree. ">Create()</a> </dd></dl>
+<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856" title="Create a value in a subtree. ">Create()</a> </dd></dl>
</div>
</div>
-<a class="anchor" id="a3bb1e63a2c0aa61a9e95d6d65c4c3ffd"></a>
+<a id="a16833ef8a38386e6c310d602426b45f0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a16833ef8a38386e6c310d602426b45f0">&#9670;&nbsp;</a></span>GetWithDefault() <span class="overload">[2/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
@@ -1156,11 +1182,13 @@ template&lt;typename T &gt; </div>
</div>
</div>
-<a class="anchor" id="a573a35dd96aacffe209e1442720f447a"></a>
+<a id="a1f428c25a3a905683e616d76c2d9efcf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1f428c25a3a905683e616d76c2d9efcf">&#9670;&nbsp;</a></span>GetWithDefault() <span class="overload">[3/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;typename T , typename stackAllocator &gt; </div>
<table class="mlabels">
@@ -1202,11 +1230,13 @@ template&lt;typename T , typename stackAllocator &gt; </div>
</div>
</div>
-<a class="anchor" id="a3e74f5b9c9fd3307f6ebac61a7131524"></a>
+<a id="a8ca73989b4f3ffa5154a229f95f1e0c9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8ca73989b4f3ffa5154a229f95f1e0c9">&#9670;&nbsp;</a></span>operator!=()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1231,11 +1261,13 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</div>
</div>
-<a class="anchor" id="af0d009a8322a7b61f63a9539ca8bddaf"></a>
+<a id="a3bb15fa5592f2bfad6f2c9af7940b952"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3bb15fa5592f2bfad6f2c9af7940b952">&#9670;&nbsp;</a></span>operator==()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1260,11 +1292,13 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</div>
</div>
-<a class="anchor" id="aecea7b5c4786f509e35c3917efa57fce"></a>
+<a id="a0759b70ec70a6eb7a7545a34764ac663"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0759b70ec70a6eb7a7545a34764ac663">&#9670;&nbsp;</a></span>Set() <span class="overload">[1/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1310,15 +1344,17 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</table>
</dd>
</dl>
-<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_pointer.html#a3733a6d6cf2a3a13f2a59b109b56d800" title="Create a value in a subtree. ">Create()</a> </dd></dl>
+<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856" title="Create a value in a subtree. ">Create()</a> </dd></dl>
</div>
</div>
-<a class="anchor" id="ae9037fa1a22498e2a8c0f96f866f6288"></a>
+<a id="aa6df2ca27eecabbbad825a64a3d2bfe9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa6df2ca27eecabbbad825a64a3d2bfe9">&#9670;&nbsp;</a></span>Set() <span class="overload">[2/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
@@ -1366,11 +1402,13 @@ template&lt;typename T &gt; </div>
</div>
</div>
-<a class="anchor" id="af547130d348ca1805d882955a377bbe4"></a>
+<a id="a8e5ed62ba30bb3f7a09a826746f70574"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8e5ed62ba30bb3f7a09a826746f70574">&#9670;&nbsp;</a></span>Set() <span class="overload">[3/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;typename T , typename stackAllocator &gt; </div>
<table class="mlabels">
@@ -1412,11 +1450,13 @@ template&lt;typename T , typename stackAllocator &gt; </div>
</div>
</div>
-<a class="anchor" id="ab9166f175517b1bff8c2219ea769e506"></a>
+<a id="a73073ca3c9e47eba7c27c16151b269ac"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a73073ca3c9e47eba7c27c16151b269ac">&#9670;&nbsp;</a></span>Stringify()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;typename OutputStream &gt; </div>
<table class="mlabels">
@@ -1454,11 +1494,13 @@ template&lt;typename OutputStream &gt; </div>
</div>
</div>
-<a class="anchor" id="a40413907ac94e218f93625d3a5c8c454"></a>
+<a id="ae985c27c1d061b93ba4f8875cfa5f7b5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae985c27c1d061b93ba4f8875cfa5f7b5">&#9670;&nbsp;</a></span>StringifyUriFragment()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;typename OutputStream &gt; </div>
<table class="mlabels">
@@ -1496,11 +1538,13 @@ template&lt;typename OutputStream &gt; </div>
</div>
</div>
-<a class="anchor" id="aaaa5b0ecdfa6af45e7dabc1987c87cac"></a>
+<a id="a4690cd1d6c85168ebd2ce0afe186a4fa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4690cd1d6c85168ebd2ce0afe186a4fa">&#9670;&nbsp;</a></span>Swap()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueType , typename Allocator &gt; </div>
+template&lt;typename ValueType, typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1546,7 +1590,7 @@ template&lt;typename ValueType , typename Allocator &gt; </div>
</table>
</dd>
</dl>
-<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_pointer.html#a3733a6d6cf2a3a13f2a59b109b56d800" title="Create a value in a subtree. ">Create()</a> </dd></dl>
+<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856" title="Create a value in a subtree. ">Create()</a> </dd></dl>
</div>
</div>
diff --git a/zh-cn/classrapidjson_1_1_generic_pointer.js b/zh-cn/classrapidjson_1_1_generic_pointer.js
index 5617c6e2..b1e3f62f 100644
--- a/zh-cn/classrapidjson_1_1_generic_pointer.js
+++ b/zh-cn/classrapidjson_1_1_generic_pointer.js
@@ -10,46 +10,46 @@ var classrapidjson_1_1_generic_pointer =
[ "GenericPointer", "classrapidjson_1_1_generic_pointer.html#a6df9f6a01d1b5945811055e1cf8aead6", null ],
[ "GenericPointer", "classrapidjson_1_1_generic_pointer.html#a9f8119f2c714f78794854828789b832e", null ],
[ "~GenericPointer", "classrapidjson_1_1_generic_pointer.html#a0e144b9956a5272c13ceff3b9306e748", null ],
- [ "Append", "classrapidjson_1_1_generic_pointer.html#a64f7bb98da73976b59597cdde96a40b8", null ],
- [ "Append", "classrapidjson_1_1_generic_pointer.html#a96e6f4c01632be39df82917f833710bc", null ],
- [ "Append", "classrapidjson_1_1_generic_pointer.html#af2e3630aeaebb6628c2b1694a0595452", null ],
- [ "Append", "classrapidjson_1_1_generic_pointer.html#ac4b35d8051c17a8c9408f71ae8541d19", null ],
- [ "Append", "classrapidjson_1_1_generic_pointer.html#ad0bd4948e56dce4b75b39f744050322c", null ],
- [ "Append", "classrapidjson_1_1_generic_pointer.html#a3baa23b919dc9ba9421b8e6fbf3e0605", null ],
- [ "Create", "classrapidjson_1_1_generic_pointer.html#a3733a6d6cf2a3a13f2a59b109b56d800", null ],
- [ "Create", "classrapidjson_1_1_generic_pointer.html#a2b5a8fb688e6b6a1b077ce103df455c3", null ],
- [ "Erase", "classrapidjson_1_1_generic_pointer.html#aec10492caf6e853935d9a360bbe73713", null ],
- [ "Get", "classrapidjson_1_1_generic_pointer.html#a309d819cc14e9d2183df4807bc99fea5", null ],
- [ "Get", "classrapidjson_1_1_generic_pointer.html#ab6982b814e41d8f64bea7d5faab93b1f", null ],
+ [ "Append", "classrapidjson_1_1_generic_pointer.html#a7cb5eda2af1722e52efa591c4103ebec", null ],
+ [ "Append", "classrapidjson_1_1_generic_pointer.html#a30f4eac82e9fded60dead3f7d1cb3941", null ],
+ [ "Append", "classrapidjson_1_1_generic_pointer.html#a033a099aaa6b36df2d5171bdc593e98e", null ],
+ [ "Append", "classrapidjson_1_1_generic_pointer.html#a18494d59f0317c037fa3bd037e436cec", null ],
+ [ "Append", "classrapidjson_1_1_generic_pointer.html#a4aadec8f0efe9a7ac42ac4906a5f676d", null ],
+ [ "Append", "classrapidjson_1_1_generic_pointer.html#a618808f066fb1104d36f012cced3b27a", null ],
+ [ "Create", "classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856", null ],
+ [ "Create", "classrapidjson_1_1_generic_pointer.html#adc4bf5a3892f5626a8517f90c88e4b7f", null ],
+ [ "Erase", "classrapidjson_1_1_generic_pointer.html#a923a1100c029a28e25894708bdce784c", null ],
+ [ "Get", "classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd", null ],
+ [ "Get", "classrapidjson_1_1_generic_pointer.html#aac2171a0ac38298b2d0ae063351ec176", null ],
[ "GetAllocator", "classrapidjson_1_1_generic_pointer.html#acdac4ea8e57920194827be4afb942d97", null ],
- [ "GetParseErrorCode", "classrapidjson_1_1_generic_pointer.html#ac817b123619422f03c44a46978d9fbd0", null ],
- [ "GetParseErrorOffset", "classrapidjson_1_1_generic_pointer.html#adc01f1be5f05127f849a2bf10a97e89b", null ],
- [ "GetTokenCount", "classrapidjson_1_1_generic_pointer.html#a2949cb104effdf323781ae70ce469ed9", null ],
- [ "GetTokens", "classrapidjson_1_1_generic_pointer.html#a0ee51e6c996d4665b398dae5dbf00bc4", null ],
- [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#a6c615761374ddce265d542f4b4b476b1", null ],
- [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#ae9f3e27a210a0974892c1260c2e4a39f", null ],
- [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#ab914090864d0ded21a376867c33ad865", null ],
- [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#a3bb1e63a2c0aa61a9e95d6d65c4c3ffd", null ],
- [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#af89e3e8f87bb833d4eb4bb2fd4074431", null ],
- [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#ad96e263ba29209259fd4abe63d7f4458", null ],
- [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#a5e9e740bec7f5a1703088171e0b2557b", null ],
- [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#a573a35dd96aacffe209e1442720f447a", null ],
- [ "IsValid", "classrapidjson_1_1_generic_pointer.html#a112f364fe9aeabba2a72e83bcbeb8fda", null ],
- [ "operator!=", "classrapidjson_1_1_generic_pointer.html#a3e74f5b9c9fd3307f6ebac61a7131524", null ],
+ [ "GetParseErrorCode", "classrapidjson_1_1_generic_pointer.html#af649a48d77aa856cddaa748ad6b0d6ac", null ],
+ [ "GetParseErrorOffset", "classrapidjson_1_1_generic_pointer.html#a75caef2a047c56466f0b599bdda882c9", null ],
+ [ "GetTokenCount", "classrapidjson_1_1_generic_pointer.html#a791e40c10682b9db0adf2b6e0b8b3d78", null ],
+ [ "GetTokens", "classrapidjson_1_1_generic_pointer.html#ac07c300d43f04dad9caa0cb209cb2853", null ],
+ [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2", null ],
+ [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#abdc025b8391b271f1134a7ba7039c27f", null ],
+ [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#a2ac51ee7af5b9d7628140ae8501edcf4", null ],
+ [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#a16833ef8a38386e6c310d602426b45f0", null ],
+ [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#a07fa31c03c96e260f234087882dce408", null ],
+ [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#aaa4e92344cc07e98adb5b9f5b93927b8", null ],
+ [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#af19e2313004885cfa9c45f50b30b32e2", null ],
+ [ "GetWithDefault", "classrapidjson_1_1_generic_pointer.html#a1f428c25a3a905683e616d76c2d9efcf", null ],
+ [ "IsValid", "classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c", null ],
+ [ "operator!=", "classrapidjson_1_1_generic_pointer.html#a8ca73989b4f3ffa5154a229f95f1e0c9", null ],
[ "operator=", "classrapidjson_1_1_generic_pointer.html#a23194bb6ce6c07c78981344fe80ac3a6", null ],
- [ "operator==", "classrapidjson_1_1_generic_pointer.html#af0d009a8322a7b61f63a9539ca8bddaf", null ],
- [ "Set", "classrapidjson_1_1_generic_pointer.html#aecea7b5c4786f509e35c3917efa57fce", null ],
- [ "Set", "classrapidjson_1_1_generic_pointer.html#ac19f479c656ddd6a8bd9888a9fb27f96", null ],
- [ "Set", "classrapidjson_1_1_generic_pointer.html#a98454081fb9557b3d2285c4e89bd34f6", null ],
- [ "Set", "classrapidjson_1_1_generic_pointer.html#a151f17dc1c655b9dc0a9a3cf06e6bdcb", null ],
- [ "Set", "classrapidjson_1_1_generic_pointer.html#ae9037fa1a22498e2a8c0f96f866f6288", null ],
- [ "Set", "classrapidjson_1_1_generic_pointer.html#add58edd4f813645f8ffead6956967f96", null ],
- [ "Set", "classrapidjson_1_1_generic_pointer.html#a83ff802b8fcacd96e60ba1c2627a19f0", null ],
- [ "Set", "classrapidjson_1_1_generic_pointer.html#a2ee50bcbfa76119094eef0284eeddfbe", null ],
- [ "Set", "classrapidjson_1_1_generic_pointer.html#a9bd1c4076e732ffc1b4527ac5659264e", null ],
- [ "Set", "classrapidjson_1_1_generic_pointer.html#af547130d348ca1805d882955a377bbe4", null ],
- [ "Stringify", "classrapidjson_1_1_generic_pointer.html#ab9166f175517b1bff8c2219ea769e506", null ],
- [ "StringifyUriFragment", "classrapidjson_1_1_generic_pointer.html#a40413907ac94e218f93625d3a5c8c454", null ],
- [ "Swap", "classrapidjson_1_1_generic_pointer.html#aaaa5b0ecdfa6af45e7dabc1987c87cac", null ],
- [ "Swap", "classrapidjson_1_1_generic_pointer.html#ad9f28da15453d91c3669618a6f48bfcc", null ]
+ [ "operator==", "classrapidjson_1_1_generic_pointer.html#a3bb15fa5592f2bfad6f2c9af7940b952", null ],
+ [ "Set", "classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663", null ],
+ [ "Set", "classrapidjson_1_1_generic_pointer.html#af2f51d68c82136086bed9593719abd1a", null ],
+ [ "Set", "classrapidjson_1_1_generic_pointer.html#a4f0ef2b49a9561d570217249343d9335", null ],
+ [ "Set", "classrapidjson_1_1_generic_pointer.html#a0ae84f686e1af593b9445c2c502101b2", null ],
+ [ "Set", "classrapidjson_1_1_generic_pointer.html#aa6df2ca27eecabbbad825a64a3d2bfe9", null ],
+ [ "Set", "classrapidjson_1_1_generic_pointer.html#a9371832d9089cca9b7f549172fd75cc8", null ],
+ [ "Set", "classrapidjson_1_1_generic_pointer.html#ad7a692d4e08d578f7e24afb7c4004276", null ],
+ [ "Set", "classrapidjson_1_1_generic_pointer.html#afb649edbdbe09a6840b12d67c9f2501e", null ],
+ [ "Set", "classrapidjson_1_1_generic_pointer.html#a3a7ff4e0b700c2975cf455fef23226b4", null ],
+ [ "Set", "classrapidjson_1_1_generic_pointer.html#a8e5ed62ba30bb3f7a09a826746f70574", null ],
+ [ "Stringify", "classrapidjson_1_1_generic_pointer.html#a73073ca3c9e47eba7c27c16151b269ac", null ],
+ [ "StringifyUriFragment", "classrapidjson_1_1_generic_pointer.html#ae985c27c1d061b93ba4f8875cfa5f7b5", null ],
+ [ "Swap", "classrapidjson_1_1_generic_pointer.html#a4690cd1d6c85168ebd2ce0afe186a4fa", null ],
+ [ "Swap", "classrapidjson_1_1_generic_pointer.html#a29d7ee42eb5646f829aeca6c6989555a", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_generic_reader-members.html b/zh-cn/classrapidjson_1_1_generic_reader-members.html
index 1874edc9..bb1f5699 100644
--- a/zh-cn/classrapidjson_1_1_generic_reader-members.html
+++ b/zh-cn/classrapidjson_1_1_generic_reader-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_reader.html
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -85,9 +86,9 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_reader.html
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html#a0781d19e8c6bc044d9cc5f5d3dde287e">Ch</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html#a56ab1065ea75167aeacb4802425bf57f">GenericReader</a>(StackAllocator *stackAllocator=0, size_t stackCapacity=kDefaultStackCapacity)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html#ab907a36c410e96154c99797a6a0ce16d">GetErrorOffset</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html#a40fd326bad7d7033f096b549cbf159db">GetParseErrorCode</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html#a46ded2951b8fa395ed421989d66e71fe">HasParseError</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html#ab50019e0a715320f83b7610b83dcef8f">GetErrorOffset</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html#a042c621cf745c5ed3a6f5ff9418dd05e">GetParseErrorCode</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html#ac42370c3497a0e2b6973110f298e3a59">HasParseError</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html#a60fa11ff60f71b3a466bbd962f35dfdb">IterativeParseComplete</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html#a90403a2c55dadf82fd2bb9d4c66b3280">IterativeParseInit</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html#abac6611bec17167de50fede5cd5194ca">IterativeParseNext</a>(InputStream &amp;is, Handler &amp;handler)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_reader.html">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
diff --git a/zh-cn/classrapidjson_1_1_generic_reader.html b/zh-cn/classrapidjson_1_1_generic_reader.html
index d46ef250..9cebc8ed 100644
--- a/zh-cn/classrapidjson_1_1_generic_reader.html
+++ b/zh-cn/classrapidjson_1_1_generic_reader.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_reader.html
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -94,9 +95,9 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_reader.html
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a0781d19e8c6bc044d9cc5f5d3dde287e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0781d19e8c6bc044d9cc5f5d3dde287e"></a>
+<tr class="memitem:a0781d19e8c6bc044d9cc5f5d3dde287e"><td class="memItemLeft" align="right" valign="top"><a id="a0781d19e8c6bc044d9cc5f5d3dde287e"></a>
typedef SourceEncoding::Ch&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_reader.html#a0781d19e8c6bc044d9cc5f5d3dde287e">Ch</a></td></tr>
-<tr class="memdesc:a0781d19e8c6bc044d9cc5f5d3dde287e"><td class="mdescLeft">&#160;</td><td class="mdescRight">SourceEncoding character type. <br /></td></tr>
+<tr class="memdesc:a0781d19e8c6bc044d9cc5f5d3dde287e"><td class="mdescLeft">&#160;</td><td class="mdescRight">SourceEncoding character type <br /></td></tr>
<tr class="separator:a0781d19e8c6bc044d9cc5f5d3dde287e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
@@ -112,38 +113,38 @@ Public 成员函数</h2></td></tr>
<tr class="memitem:a2bac14d193873d661d79ad000473a908"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_reader.html#a2bac14d193873d661d79ad000473a908">Parse</a> (InputStream &amp;is, <a class="el" href="classrapidjson_1_1_handler.html">Handler</a> &amp;handler)</td></tr>
<tr class="memdesc:a2bac14d193873d661d79ad000473a908"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse JSON text (with <a class="el" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a5640cb00db7814b7f22be3683dda9835">kParseDefaultFlags</a>) <a href="#a2bac14d193873d661d79ad000473a908">更多...</a><br /></td></tr>
<tr class="separator:a2bac14d193873d661d79ad000473a908"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a90403a2c55dadf82fd2bb9d4c66b3280"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a90403a2c55dadf82fd2bb9d4c66b3280"></a>
+<tr class="memitem:a90403a2c55dadf82fd2bb9d4c66b3280"><td class="memItemLeft" align="right" valign="top"><a id="a90403a2c55dadf82fd2bb9d4c66b3280"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_reader.html#a90403a2c55dadf82fd2bb9d4c66b3280">IterativeParseInit</a> ()</td></tr>
-<tr class="memdesc:a90403a2c55dadf82fd2bb9d4c66b3280"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize JSON text token-by-token parsing. <br /></td></tr>
+<tr class="memdesc:a90403a2c55dadf82fd2bb9d4c66b3280"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize JSON text token-by-token parsing <br /></td></tr>
<tr class="separator:a90403a2c55dadf82fd2bb9d4c66b3280"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abac6611bec17167de50fede5cd5194ca"><td class="memTemplParams" colspan="2">template&lt;unsigned parseFlags, typename InputStream , typename Handler &gt; </td></tr>
<tr class="memitem:abac6611bec17167de50fede5cd5194ca"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_reader.html#abac6611bec17167de50fede5cd5194ca">IterativeParseNext</a> (InputStream &amp;is, <a class="el" href="classrapidjson_1_1_handler.html">Handler</a> &amp;handler)</td></tr>
-<tr class="memdesc:abac6611bec17167de50fede5cd5194ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse one token from JSON text. <a href="#abac6611bec17167de50fede5cd5194ca">更多...</a><br /></td></tr>
+<tr class="memdesc:abac6611bec17167de50fede5cd5194ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse one token from JSON text <a href="#abac6611bec17167de50fede5cd5194ca">更多...</a><br /></td></tr>
<tr class="separator:abac6611bec17167de50fede5cd5194ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60fa11ff60f71b3a466bbd962f35dfdb"><td class="memItemLeft" align="right" valign="top">RAPIDJSON_FORCEINLINE bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_reader.html#a60fa11ff60f71b3a466bbd962f35dfdb">IterativeParseComplete</a> ()</td></tr>
-<tr class="memdesc:a60fa11ff60f71b3a466bbd962f35dfdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if token-by-token parsing JSON text is complete. <a href="#a60fa11ff60f71b3a466bbd962f35dfdb">更多...</a><br /></td></tr>
+<tr class="memdesc:a60fa11ff60f71b3a466bbd962f35dfdb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if token-by-token parsing JSON text is complete <a href="#a60fa11ff60f71b3a466bbd962f35dfdb">更多...</a><br /></td></tr>
<tr class="separator:a60fa11ff60f71b3a466bbd962f35dfdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a46ded2951b8fa395ed421989d66e71fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a46ded2951b8fa395ed421989d66e71fe"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_reader.html#a46ded2951b8fa395ed421989d66e71fe">HasParseError</a> () const </td></tr>
-<tr class="memdesc:a46ded2951b8fa395ed421989d66e71fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether a parse error has occured in the last parsing. <br /></td></tr>
-<tr class="separator:a46ded2951b8fa395ed421989d66e71fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a40fd326bad7d7033f096b549cbf159db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a40fd326bad7d7033f096b549cbf159db"></a>
-<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_reader.html#a40fd326bad7d7033f096b549cbf159db">GetParseErrorCode</a> () const </td></tr>
-<tr class="memdesc:a40fd326bad7d7033f096b549cbf159db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> of last parsing. <br /></td></tr>
-<tr class="separator:a40fd326bad7d7033f096b549cbf159db"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab907a36c410e96154c99797a6a0ce16d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab907a36c410e96154c99797a6a0ce16d"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_reader.html#ab907a36c410e96154c99797a6a0ce16d">GetErrorOffset</a> () const </td></tr>
-<tr class="memdesc:ab907a36c410e96154c99797a6a0ce16d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the position of last parsing error in input, 0 otherwise. <br /></td></tr>
-<tr class="separator:ab907a36c410e96154c99797a6a0ce16d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac42370c3497a0e2b6973110f298e3a59"><td class="memItemLeft" align="right" valign="top"><a id="ac42370c3497a0e2b6973110f298e3a59"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_reader.html#ac42370c3497a0e2b6973110f298e3a59">HasParseError</a> () const</td></tr>
+<tr class="memdesc:ac42370c3497a0e2b6973110f298e3a59"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether a parse error has occured in the last parsing. <br /></td></tr>
+<tr class="separator:ac42370c3497a0e2b6973110f298e3a59"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a042c621cf745c5ed3a6f5ff9418dd05e"><td class="memItemLeft" align="right" valign="top"><a id="a042c621cf745c5ed3a6f5ff9418dd05e"></a>
+<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_reader.html#a042c621cf745c5ed3a6f5ff9418dd05e">GetParseErrorCode</a> () const</td></tr>
+<tr class="memdesc:a042c621cf745c5ed3a6f5ff9418dd05e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> of last parsing. <br /></td></tr>
+<tr class="separator:a042c621cf745c5ed3a6f5ff9418dd05e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab50019e0a715320f83b7610b83dcef8f"><td class="memItemLeft" align="right" valign="top"><a id="ab50019e0a715320f83b7610b83dcef8f"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_reader.html#ab50019e0a715320f83b7610b83dcef8f">GetErrorOffset</a> () const</td></tr>
+<tr class="memdesc:ab50019e0a715320f83b7610b83dcef8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the position of last parsing error in input, 0 otherwise. <br /></td></tr>
+<tr class="separator:ab50019e0a715320f83b7610b83dcef8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
-<tr class="memitem:a544704abdce535d93ae0f45d0cf0bc0d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a544704abdce535d93ae0f45d0cf0bc0d"></a>
+<tr class="memitem:a544704abdce535d93ae0f45d0cf0bc0d"><td class="memItemLeft" align="right" valign="top"><a id="a544704abdce535d93ae0f45d0cf0bc0d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>SetParseError</b> (<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code, size_t offset)</td></tr>
<tr class="separator:a544704abdce535d93ae0f45d0cf0bc0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<div class="textblock"><h3>template&lt;typename SourceEncoding, typename TargetEncoding, typename StackAllocator&gt;<br />
+<div class="textblock"><h3>template&lt;typename SourceEncoding, typename TargetEncoding, typename StackAllocator = CrtAllocator&gt;<br />
class rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</h3>
<p>SAX-style JSON parser. Use <a class="el" href="md_doc_sax_8zh-cn.html#Reader">Reader</a> for <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding and default allocator. </p>
@@ -160,11 +161,13 @@ class rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocato
</dd>
</dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
-<a class="anchor" id="a56ab1065ea75167aeacb4802425bf57f"></a>
+<a id="a56ab1065ea75167aeacb4802425bf57f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a56ab1065ea75167aeacb4802425bf57f">&#9670;&nbsp;</a></span>GenericReader()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename SourceEncoding, typename TargetEncoding, typename StackAllocator&gt; </div>
+template&lt;typename SourceEncoding, typename TargetEncoding, typename StackAllocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -206,11 +209,13 @@ template&lt;typename SourceEncoding, typename TargetEncoding, typename StackAllo
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
-<a class="anchor" id="a60fa11ff60f71b3a466bbd962f35dfdb"></a>
+<a id="a60fa11ff60f71b3a466bbd962f35dfdb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a60fa11ff60f71b3a466bbd962f35dfdb">&#9670;&nbsp;</a></span>IterativeParseComplete()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename SourceEncoding, typename TargetEncoding, typename StackAllocator&gt; </div>
+template&lt;typename SourceEncoding, typename TargetEncoding, typename StackAllocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -229,16 +234,18 @@ template&lt;typename SourceEncoding, typename TargetEncoding, typename StackAllo
</table>
</div><div class="memdoc">
-<p>Check if token-by-token parsing JSON text is complete. </p>
+<p>Check if token-by-token parsing JSON text is complete </p>
<dl class="section return"><dt>返回</dt><dd>Whether the JSON has been fully decoded. </dd></dl>
</div>
</div>
-<a class="anchor" id="abac6611bec17167de50fede5cd5194ca"></a>
+<a id="abac6611bec17167de50fede5cd5194ca"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abac6611bec17167de50fede5cd5194ca">&#9670;&nbsp;</a></span>IterativeParseNext()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename SourceEncoding, typename TargetEncoding, typename StackAllocator&gt; </div>
+template&lt;typename SourceEncoding, typename TargetEncoding, typename StackAllocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;unsigned parseFlags, typename InputStream , typename Handler &gt; </div>
<table class="mlabels">
@@ -270,7 +277,7 @@ template&lt;unsigned parseFlags, typename InputStream , typename Handler &gt; </
</table>
</div><div class="memdoc">
-<p>Parse one token from JSON text. </p>
+<p>Parse one token from JSON text </p>
<dl class="tparams"><dt>模板参数</dt><dd>
<table class="tparams">
<tr><td class="paramname">InputStream</td><td>Type of input stream, implementing <a class="el" href="classrapidjson_1_1_stream.html" title="Concept for reading and writing characters. ">Stream</a> concept </td></tr>
@@ -289,11 +296,13 @@ template&lt;unsigned parseFlags, typename InputStream , typename Handler &gt; </
</div>
</div>
-<a class="anchor" id="ac9c540b77de19661f6f45e04b9b0937b"></a>
+<a id="ac9c540b77de19661f6f45e04b9b0937b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac9c540b77de19661f6f45e04b9b0937b">&#9670;&nbsp;</a></span>Parse() <span class="overload">[1/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename SourceEncoding, typename TargetEncoding, typename StackAllocator&gt; </div>
+template&lt;typename SourceEncoding, typename TargetEncoding, typename StackAllocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;unsigned parseFlags, typename InputStream , typename Handler &gt; </div>
<table class="mlabels">
@@ -345,11 +354,13 @@ template&lt;unsigned parseFlags, typename InputStream , typename Handler &gt; </
</div>
</div>
-<a class="anchor" id="a2bac14d193873d661d79ad000473a908"></a>
+<a id="a2bac14d193873d661d79ad000473a908"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2bac14d193873d661d79ad000473a908">&#9670;&nbsp;</a></span>Parse() <span class="overload">[2/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename SourceEncoding, typename TargetEncoding, typename StackAllocator&gt; </div>
+template&lt;typename SourceEncoding, typename TargetEncoding, typename StackAllocator = CrtAllocator&gt; </div>
<div class="memtemplate">
template&lt;typename InputStream , typename Handler &gt; </div>
<table class="mlabels">
diff --git a/zh-cn/classrapidjson_1_1_generic_reader.js b/zh-cn/classrapidjson_1_1_generic_reader.js
index f24954af..fc243b63 100644
--- a/zh-cn/classrapidjson_1_1_generic_reader.js
+++ b/zh-cn/classrapidjson_1_1_generic_reader.js
@@ -2,9 +2,9 @@ var classrapidjson_1_1_generic_reader =
[
[ "Ch", "classrapidjson_1_1_generic_reader.html#a0781d19e8c6bc044d9cc5f5d3dde287e", null ],
[ "GenericReader", "classrapidjson_1_1_generic_reader.html#a56ab1065ea75167aeacb4802425bf57f", null ],
- [ "GetErrorOffset", "classrapidjson_1_1_generic_reader.html#ab907a36c410e96154c99797a6a0ce16d", null ],
- [ "GetParseErrorCode", "classrapidjson_1_1_generic_reader.html#a40fd326bad7d7033f096b549cbf159db", null ],
- [ "HasParseError", "classrapidjson_1_1_generic_reader.html#a46ded2951b8fa395ed421989d66e71fe", null ],
+ [ "GetErrorOffset", "classrapidjson_1_1_generic_reader.html#ab50019e0a715320f83b7610b83dcef8f", null ],
+ [ "GetParseErrorCode", "classrapidjson_1_1_generic_reader.html#a042c621cf745c5ed3a6f5ff9418dd05e", null ],
+ [ "HasParseError", "classrapidjson_1_1_generic_reader.html#ac42370c3497a0e2b6973110f298e3a59", null ],
[ "IterativeParseComplete", "classrapidjson_1_1_generic_reader.html#a60fa11ff60f71b3a466bbd962f35dfdb", null ],
[ "IterativeParseInit", "classrapidjson_1_1_generic_reader.html#a90403a2c55dadf82fd2bb9d4c66b3280", null ],
[ "IterativeParseNext", "classrapidjson_1_1_generic_reader.html#abac6611bec17167de50fede5cd5194ca", null ],
diff --git a/zh-cn/classrapidjson_1_1_generic_schema_document-members.html b/zh-cn/classrapidjson_1_1_generic_schema_document-members.html
index b3438155..01af56c7 100644
--- a/zh-cn/classrapidjson_1_1_generic_schema_document-members.html
+++ b/zh-cn/classrapidjson_1_1_generic_schema_document-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_schema_docu
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -88,7 +89,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_schema_docu
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EncodingType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_schema_document.html">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_document.html">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_document.html#ad200cc7bcb193c8568cdbda7b7fd0496">GenericSchemaDocument</a>(const ValueType &amp;document, IRemoteSchemaDocumentProviderType *remoteProvider=0, Allocator *allocator=0)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_document.html">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GenericSchemaValidator</b> (定义于 <a class="el" href="classrapidjson_1_1_generic_schema_document.html">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_document.html">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_document.html#af64ea17654ab0f1a91e382d422f91daf">GetRoot</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_document.html">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_document.html#a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a">GetRoot</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_document.html">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IRemoteSchemaDocumentProviderType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_schema_document.html">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_document.html">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>PointerType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_schema_document.html">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_document.html">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>SchemaType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_schema_document.html">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_document.html">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a></td><td class="entry"></td></tr>
diff --git a/zh-cn/classrapidjson_1_1_generic_schema_document.html b/zh-cn/classrapidjson_1_1_generic_schema_document.html
index 9f47c353..71837241 100644
--- a/zh-cn/classrapidjson_1_1_generic_schema_document.html
+++ b/zh-cn/classrapidjson_1_1_generic_schema_document.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_schema_docu
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -94,30 +95,26 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_schema_docu
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a87eb1db271e7f57442802a5f4f6178f3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a87eb1db271e7f57442802a5f4f6178f3"></a>
+<tr class="memitem:a87eb1db271e7f57442802a5f4f6178f3"><td class="memItemLeft" align="right" valign="top"><a id="a87eb1db271e7f57442802a5f4f6178f3"></a>
typedef ValueT&#160;</td><td class="memItemRight" valign="bottom"><b>ValueType</b></td></tr>
<tr class="separator:a87eb1db271e7f57442802a5f4f6178f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab2764f2258889b3262eff6293d7ca015"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab2764f2258889b3262eff6293d7ca015"></a>
-typedef <br class="typebreak" />
-<a class="el" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IGenericRemoteSchemaDocumentProvider</a><br class="typebreak" />
-&lt; <a class="el" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IRemoteSchemaDocumentProviderType</b></td></tr>
+<tr class="memitem:ab2764f2258889b3262eff6293d7ca015"><td class="memItemLeft" align="right" valign="top"><a id="ab2764f2258889b3262eff6293d7ca015"></a>
+typedef <a class="el" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IGenericRemoteSchemaDocumentProvider</a>&lt; <a class="el" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IRemoteSchemaDocumentProviderType</b></td></tr>
<tr class="separator:ab2764f2258889b3262eff6293d7ca015"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6fc497ef6e303b3a3ecec9fefe82eade"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6fc497ef6e303b3a3ecec9fefe82eade"></a>
+<tr class="memitem:a6fc497ef6e303b3a3ecec9fefe82eade"><td class="memItemLeft" align="right" valign="top"><a id="a6fc497ef6e303b3a3ecec9fefe82eade"></a>
typedef <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>AllocatorType</b></td></tr>
<tr class="separator:a6fc497ef6e303b3a3ecec9fefe82eade"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a019035fd281ca52874ed434ce4f7d4d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a019035fd281ca52874ed434ce4f7d4d8"></a>
+<tr class="memitem:a019035fd281ca52874ed434ce4f7d4d8"><td class="memItemLeft" align="right" valign="top"><a id="a019035fd281ca52874ed434ce4f7d4d8"></a>
typedef ValueType::EncodingType&#160;</td><td class="memItemRight" valign="bottom"><b>EncodingType</b></td></tr>
<tr class="separator:a019035fd281ca52874ed434ce4f7d4d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af9b82162834b30bdcbe93cb065d0aedd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af9b82162834b30bdcbe93cb065d0aedd"></a>
+<tr class="memitem:af9b82162834b30bdcbe93cb065d0aedd"><td class="memItemLeft" align="right" valign="top"><a id="af9b82162834b30bdcbe93cb065d0aedd"></a>
typedef EncodingType::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:af9b82162834b30bdcbe93cb065d0aedd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aaf4e7f371de938025f7ed4be3b83266e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf4e7f371de938025f7ed4be3b83266e"></a>
-typedef internal::Schema<br class="typebreak" />
-&lt; <a class="el" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>SchemaType</b></td></tr>
+<tr class="memitem:aaf4e7f371de938025f7ed4be3b83266e"><td class="memItemLeft" align="right" valign="top"><a id="aaf4e7f371de938025f7ed4be3b83266e"></a>
+typedef internal::Schema&lt; <a class="el" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>SchemaType</b></td></tr>
<tr class="separator:aaf4e7f371de938025f7ed4be3b83266e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a61540c0f8aa542760ae03257a0e6dab7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61540c0f8aa542760ae03257a0e6dab7"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a><br class="typebreak" />
-&lt; ValueType, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointerType</b></td></tr>
+<tr class="memitem:a61540c0f8aa542760ae03257a0e6dab7"><td class="memItemLeft" align="right" valign="top"><a id="a61540c0f8aa542760ae03257a0e6dab7"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; ValueType, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointerType</b></td></tr>
<tr class="separator:a61540c0f8aa542760ae03257a0e6dab7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
@@ -125,24 +122,24 @@ Public 成员函数</h2></td></tr>
<tr class="memitem:ad200cc7bcb193c8568cdbda7b7fd0496"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_schema_document.html#ad200cc7bcb193c8568cdbda7b7fd0496">GenericSchemaDocument</a> (const ValueType &amp;document, <a class="el" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IRemoteSchemaDocumentProviderType</a> *remoteProvider=0, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0)</td></tr>
<tr class="memdesc:ad200cc7bcb193c8568cdbda7b7fd0496"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="#ad200cc7bcb193c8568cdbda7b7fd0496">更多...</a><br /></td></tr>
<tr class="separator:ad200cc7bcb193c8568cdbda7b7fd0496"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adf6f3372013227873ed392dee1e752bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adf6f3372013227873ed392dee1e752bf"></a>
+<tr class="memitem:adf6f3372013227873ed392dee1e752bf"><td class="memItemLeft" align="right" valign="top"><a id="adf6f3372013227873ed392dee1e752bf"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_schema_document.html#adf6f3372013227873ed392dee1e752bf">~GenericSchemaDocument</a> ()</td></tr>
-<tr class="memdesc:adf6f3372013227873ed392dee1e752bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
+<tr class="memdesc:adf6f3372013227873ed392dee1e752bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor <br /></td></tr>
<tr class="separator:adf6f3372013227873ed392dee1e752bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af64ea17654ab0f1a91e382d422f91daf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af64ea17654ab0f1a91e382d422f91daf"></a>
-const SchemaType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_schema_document.html#af64ea17654ab0f1a91e382d422f91daf">GetRoot</a> () const </td></tr>
-<tr class="memdesc:af64ea17654ab0f1a91e382d422f91daf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the root schema. <br /></td></tr>
-<tr class="separator:af64ea17654ab0f1a91e382d422f91daf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a"><td class="memItemLeft" align="right" valign="top"><a id="a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a"></a>
+const SchemaType &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_schema_document.html#a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a">GetRoot</a> () const</td></tr>
+<tr class="memdesc:a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the root schema. <br /></td></tr>
+<tr class="separator:a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
友元</h2></td></tr>
-<tr class="memitem:afcc03e6ba8f1a819e1a028c31ad38347"><td class="memTemplParams" colspan="2"><a class="anchor" id="afcc03e6ba8f1a819e1a028c31ad38347"></a>
+<tr class="memitem:afcc03e6ba8f1a819e1a028c31ad38347"><td class="memTemplParams" colspan="2"><a id="afcc03e6ba8f1a819e1a028c31ad38347"></a>
template&lt;typename , typename , typename &gt; </td></tr>
<tr class="memitem:afcc03e6ba8f1a819e1a028c31ad38347"><td class="memTemplItemLeft" align="right" valign="top">class&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GenericSchemaValidator</b></td></tr>
<tr class="separator:afcc03e6ba8f1a819e1a028c31ad38347"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<div class="textblock"><h3>template&lt;typename ValueT, typename Allocator&gt;<br />
+<div class="textblock"><h3>template&lt;typename ValueT, typename Allocator = CrtAllocator&gt;<br />
class rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</h3>
<p>JSON schema document. </p>
@@ -156,11 +153,13 @@ class rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</h3>
</dd>
</dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
-<a class="anchor" id="ad200cc7bcb193c8568cdbda7b7fd0496"></a>
+<a id="ad200cc7bcb193c8568cdbda7b7fd0496"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad200cc7bcb193c8568cdbda7b7fd0496">&#9670;&nbsp;</a></span>GenericSchemaDocument()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename ValueT , typename Allocator &gt; </div>
+template&lt;typename ValueT , typename Allocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
diff --git a/zh-cn/classrapidjson_1_1_generic_schema_document.js b/zh-cn/classrapidjson_1_1_generic_schema_document.js
index c80a835e..84cb4010 100644
--- a/zh-cn/classrapidjson_1_1_generic_schema_document.js
+++ b/zh-cn/classrapidjson_1_1_generic_schema_document.js
@@ -9,6 +9,6 @@ var classrapidjson_1_1_generic_schema_document =
[ "ValueType", "classrapidjson_1_1_generic_schema_document.html#a87eb1db271e7f57442802a5f4f6178f3", null ],
[ "GenericSchemaDocument", "classrapidjson_1_1_generic_schema_document.html#ad200cc7bcb193c8568cdbda7b7fd0496", null ],
[ "~GenericSchemaDocument", "classrapidjson_1_1_generic_schema_document.html#adf6f3372013227873ed392dee1e752bf", null ],
- [ "GetRoot", "classrapidjson_1_1_generic_schema_document.html#af64ea17654ab0f1a91e382d422f91daf", null ],
+ [ "GetRoot", "classrapidjson_1_1_generic_schema_document.html#a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a", null ],
[ "GenericSchemaValidator", "classrapidjson_1_1_generic_schema_document.html#afcc03e6ba8f1a819e1a028c31ad38347", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_generic_schema_validator-members.html b/zh-cn/classrapidjson_1_1_generic_schema_validator-members.html
index 338f3ec3..7e401c5e 100644
--- a/zh-cn/classrapidjson_1_1_generic_schema_validator-members.html
+++ b/zh-cn/classrapidjson_1_1_generic_schema_validator-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_schema_vali
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -97,12 +98,12 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_schema_vali
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#acc07bd08b00195d84bb5b83f59c593d3">GenericSchemaValidator</a>(const SchemaDocumentType &amp;schemaDocument, StateAllocator *allocator=0, size_t schemaStackCapacity=kDefaultSchemaStackCapacity, size_t documentStackCapacity=kDefaultDocumentStackCapacity)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a0e1d8f19381bd53d77cc00a9a6dcd067">GenericSchemaValidator</a>(const SchemaDocumentType &amp;schemaDocument, OutputHandler &amp;outputHandler, StateAllocator *allocator=0, size_t schemaStackCapacity=kDefaultSchemaStackCapacity, size_t documentStackCapacity=kDefaultDocumentStackCapacity)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>GetHashCode</b>(void *hasher) (定义于 <a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#af66e4a41d71c89edfabb176af7839f04">GetInvalidDocumentPointer</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a914628c4d69faea91ada1dee61d25d59">GetInvalidSchemaKeyword</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a8381f8d4dca195449f086ffbd25bb9b7">GetInvalidSchemaPointer</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a60dfb4a89593c8d3ca4c89a6202feb52">GetInvalidDocumentPointer</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a03bcd5497a574cffbd066d0aec2b5585">GetInvalidSchemaKeyword</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a3238efb9d9144c2d6577362d8dc5f61b">GetInvalidSchemaPointer</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Int</b>(int i) (定义于 <a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Int64</b>(int64_t i) (定义于 <a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#ab520a4ee6df3e23ffb948c8d5ae7bf38">IsValid</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#ad32a9ad31dbb588edaaf038ab053275b">IsValid</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Key</b>(const Ch *str, SizeType len, bool copy) (定义于 <a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>MallocState</b>(size_t size) (定义于 <a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Null</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
diff --git a/zh-cn/classrapidjson_1_1_generic_schema_validator.html b/zh-cn/classrapidjson_1_1_generic_schema_validator.html
index ad45a9cf..3e21874c 100644
--- a/zh-cn/classrapidjson_1_1_generic_schema_validator.html
+++ b/zh-cn/classrapidjson_1_1_generic_schema_validator.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_schema_vali
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -93,25 +94,23 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_schema_vali
类 rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt; 继承关系图:</div>
<div class="dyncontent">
<div class="center">
- <img src="classrapidjson_1_1_generic_schema_validator.png" usemap="#rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;_map" alt=""/>
- <map id="rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;_map" name="rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;_map">
+ <img src="classrapidjson_1_1_generic_schema_validator.png" usemap="#rapidjson::GenericSchemaValidator_3C_20SchemaDocumentType_2C_20OutputHandler_2C_20StateAllocator_20_3E_map" alt=""/>
+ <map id="rapidjson::GenericSchemaValidator_3C_20SchemaDocumentType_2C_20OutputHandler_2C_20StateAllocator_20_3E_map" name="rapidjson::GenericSchemaValidator_3C_20SchemaDocumentType_2C_20OutputHandler_2C_20StateAllocator_20_3E_map">
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a0619c9faf3014ef141d1c6d05ae04ddc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0619c9faf3014ef141d1c6d05ae04ddc"></a>
-typedef <br class="typebreak" />
-SchemaDocumentType::SchemaType&#160;</td><td class="memItemRight" valign="bottom"><b>SchemaType</b></td></tr>
+<tr class="memitem:a0619c9faf3014ef141d1c6d05ae04ddc"><td class="memItemLeft" align="right" valign="top"><a id="a0619c9faf3014ef141d1c6d05ae04ddc"></a>
+typedef SchemaDocumentType::SchemaType&#160;</td><td class="memItemRight" valign="bottom"><b>SchemaType</b></td></tr>
<tr class="separator:a0619c9faf3014ef141d1c6d05ae04ddc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aace9622f8ebac1c386081f6d1dcd774e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aace9622f8ebac1c386081f6d1dcd774e"></a>
-typedef <br class="typebreak" />
-SchemaDocumentType::PointerType&#160;</td><td class="memItemRight" valign="bottom"><b>PointerType</b></td></tr>
+<tr class="memitem:aace9622f8ebac1c386081f6d1dcd774e"><td class="memItemLeft" align="right" valign="top"><a id="aace9622f8ebac1c386081f6d1dcd774e"></a>
+typedef SchemaDocumentType::PointerType&#160;</td><td class="memItemRight" valign="bottom"><b>PointerType</b></td></tr>
<tr class="separator:aace9622f8ebac1c386081f6d1dcd774e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abaea0f74722261f6dde0db65594efdfe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abaea0f74722261f6dde0db65594efdfe"></a>
+<tr class="memitem:abaea0f74722261f6dde0db65594efdfe"><td class="memItemLeft" align="right" valign="top"><a id="abaea0f74722261f6dde0db65594efdfe"></a>
typedef SchemaType::EncodingType&#160;</td><td class="memItemRight" valign="bottom"><b>EncodingType</b></td></tr>
<tr class="separator:abaea0f74722261f6dde0db65594efdfe"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab5b7093443e29cf66eb7cf47f3d8583d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5b7093443e29cf66eb7cf47f3d8583d"></a>
+<tr class="memitem:ab5b7093443e29cf66eb7cf47f3d8583d"><td class="memItemLeft" align="right" valign="top"><a id="ab5b7093443e29cf66eb7cf47f3d8583d"></a>
typedef EncodingType::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:ab5b7093443e29cf66eb7cf47f3d8583d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
@@ -123,96 +122,96 @@ Public 成员函数</h2></td></tr>
<tr class="memitem:a0e1d8f19381bd53d77cc00a9a6dcd067"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a0e1d8f19381bd53d77cc00a9a6dcd067">GenericSchemaValidator</a> (const SchemaDocumentType &amp;schemaDocument, OutputHandler &amp;outputHandler, StateAllocator *allocator=0, size_t schemaStackCapacity=kDefaultSchemaStackCapacity, size_t documentStackCapacity=kDefaultDocumentStackCapacity)</td></tr>
<tr class="memdesc:a0e1d8f19381bd53d77cc00a9a6dcd067"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor with output handler. <a href="#a0e1d8f19381bd53d77cc00a9a6dcd067">更多...</a><br /></td></tr>
<tr class="separator:a0e1d8f19381bd53d77cc00a9a6dcd067"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad9f00d71bf62b8983cf2514c43fb1572"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad9f00d71bf62b8983cf2514c43fb1572"></a>
+<tr class="memitem:ad9f00d71bf62b8983cf2514c43fb1572"><td class="memItemLeft" align="right" valign="top"><a id="ad9f00d71bf62b8983cf2514c43fb1572"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#ad9f00d71bf62b8983cf2514c43fb1572">~GenericSchemaValidator</a> ()</td></tr>
<tr class="memdesc:ad9f00d71bf62b8983cf2514c43fb1572"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:ad9f00d71bf62b8983cf2514c43fb1572"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afe6cd0d9088a1d4cf8100c0efc9f76fc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe6cd0d9088a1d4cf8100c0efc9f76fc"></a>
+<tr class="memitem:afe6cd0d9088a1d4cf8100c0efc9f76fc"><td class="memItemLeft" align="right" valign="top"><a id="afe6cd0d9088a1d4cf8100c0efc9f76fc"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#afe6cd0d9088a1d4cf8100c0efc9f76fc">Reset</a> ()</td></tr>
<tr class="memdesc:afe6cd0d9088a1d4cf8100c0efc9f76fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the internal states. <br /></td></tr>
<tr class="separator:afe6cd0d9088a1d4cf8100c0efc9f76fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab520a4ee6df3e23ffb948c8d5ae7bf38"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab520a4ee6df3e23ffb948c8d5ae7bf38"></a>
-virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#ab520a4ee6df3e23ffb948c8d5ae7bf38">IsValid</a> () const </td></tr>
-<tr class="memdesc:ab520a4ee6df3e23ffb948c8d5ae7bf38"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether the current state is valid. <br /></td></tr>
-<tr class="separator:ab520a4ee6df3e23ffb948c8d5ae7bf38"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8381f8d4dca195449f086ffbd25bb9b7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8381f8d4dca195449f086ffbd25bb9b7"></a>
-PointerType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a8381f8d4dca195449f086ffbd25bb9b7">GetInvalidSchemaPointer</a> () const </td></tr>
-<tr class="memdesc:a8381f8d4dca195449f086ffbd25bb9b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the JSON pointer pointed to the invalid schema. <br /></td></tr>
-<tr class="separator:a8381f8d4dca195449f086ffbd25bb9b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a914628c4d69faea91ada1dee61d25d59"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a914628c4d69faea91ada1dee61d25d59"></a>
-const Ch *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a914628c4d69faea91ada1dee61d25d59">GetInvalidSchemaKeyword</a> () const </td></tr>
-<tr class="memdesc:a914628c4d69faea91ada1dee61d25d59"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the keyword of invalid schema. <br /></td></tr>
-<tr class="separator:a914628c4d69faea91ada1dee61d25d59"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af66e4a41d71c89edfabb176af7839f04"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af66e4a41d71c89edfabb176af7839f04"></a>
-PointerType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#af66e4a41d71c89edfabb176af7839f04">GetInvalidDocumentPointer</a> () const </td></tr>
-<tr class="memdesc:af66e4a41d71c89edfabb176af7839f04"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the JSON pointer pointed to the invalid value. <br /></td></tr>
-<tr class="separator:af66e4a41d71c89edfabb176af7839f04"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aefcbbbdba183ef7b13347aa3b4f352bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefcbbbdba183ef7b13347aa3b4f352bd"></a>
+<tr class="memitem:ad32a9ad31dbb588edaaf038ab053275b"><td class="memItemLeft" align="right" valign="top"><a id="ad32a9ad31dbb588edaaf038ab053275b"></a>
+virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#ad32a9ad31dbb588edaaf038ab053275b">IsValid</a> () const</td></tr>
+<tr class="memdesc:ad32a9ad31dbb588edaaf038ab053275b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether the current state is valid. <br /></td></tr>
+<tr class="separator:ad32a9ad31dbb588edaaf038ab053275b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3238efb9d9144c2d6577362d8dc5f61b"><td class="memItemLeft" align="right" valign="top"><a id="a3238efb9d9144c2d6577362d8dc5f61b"></a>
+PointerType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a3238efb9d9144c2d6577362d8dc5f61b">GetInvalidSchemaPointer</a> () const</td></tr>
+<tr class="memdesc:a3238efb9d9144c2d6577362d8dc5f61b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the JSON pointer pointed to the invalid schema. <br /></td></tr>
+<tr class="separator:a3238efb9d9144c2d6577362d8dc5f61b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a03bcd5497a574cffbd066d0aec2b5585"><td class="memItemLeft" align="right" valign="top"><a id="a03bcd5497a574cffbd066d0aec2b5585"></a>
+const Ch *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a03bcd5497a574cffbd066d0aec2b5585">GetInvalidSchemaKeyword</a> () const</td></tr>
+<tr class="memdesc:a03bcd5497a574cffbd066d0aec2b5585"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the keyword of invalid schema. <br /></td></tr>
+<tr class="separator:a03bcd5497a574cffbd066d0aec2b5585"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a60dfb4a89593c8d3ca4c89a6202feb52"><td class="memItemLeft" align="right" valign="top"><a id="a60dfb4a89593c8d3ca4c89a6202feb52"></a>
+PointerType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a60dfb4a89593c8d3ca4c89a6202feb52">GetInvalidDocumentPointer</a> () const</td></tr>
+<tr class="memdesc:a60dfb4a89593c8d3ca4c89a6202feb52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the JSON pointer pointed to the invalid value. <br /></td></tr>
+<tr class="separator:a60dfb4a89593c8d3ca4c89a6202feb52"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aefcbbbdba183ef7b13347aa3b4f352bd"><td class="memItemLeft" align="right" valign="top"><a id="aefcbbbdba183ef7b13347aa3b4f352bd"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Null</b> ()</td></tr>
<tr class="separator:aefcbbbdba183ef7b13347aa3b4f352bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac2247fb21e5dd87c9590f45fb089d3d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2247fb21e5dd87c9590f45fb089d3d1"></a>
+<tr class="memitem:ac2247fb21e5dd87c9590f45fb089d3d1"><td class="memItemLeft" align="right" valign="top"><a id="ac2247fb21e5dd87c9590f45fb089d3d1"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Bool</b> (bool b)</td></tr>
<tr class="separator:ac2247fb21e5dd87c9590f45fb089d3d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a98561df249a90a257fb8a57ffcf1b581"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98561df249a90a257fb8a57ffcf1b581"></a>
+<tr class="memitem:a98561df249a90a257fb8a57ffcf1b581"><td class="memItemLeft" align="right" valign="top"><a id="a98561df249a90a257fb8a57ffcf1b581"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Int</b> (int i)</td></tr>
<tr class="separator:a98561df249a90a257fb8a57ffcf1b581"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3a628f6b520c40707329c60b06847a18"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3a628f6b520c40707329c60b06847a18"></a>
+<tr class="memitem:a3a628f6b520c40707329c60b06847a18"><td class="memItemLeft" align="right" valign="top"><a id="a3a628f6b520c40707329c60b06847a18"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Uint</b> (unsigned u)</td></tr>
<tr class="separator:a3a628f6b520c40707329c60b06847a18"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1be5d3b3f73c05d84a76cad3a9948a35"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1be5d3b3f73c05d84a76cad3a9948a35"></a>
+<tr class="memitem:a1be5d3b3f73c05d84a76cad3a9948a35"><td class="memItemLeft" align="right" valign="top"><a id="a1be5d3b3f73c05d84a76cad3a9948a35"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Int64</b> (int64_t i)</td></tr>
<tr class="separator:a1be5d3b3f73c05d84a76cad3a9948a35"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2bee26a73c644a72c2baa2970b35c7ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2bee26a73c644a72c2baa2970b35c7ac"></a>
+<tr class="memitem:a2bee26a73c644a72c2baa2970b35c7ac"><td class="memItemLeft" align="right" valign="top"><a id="a2bee26a73c644a72c2baa2970b35c7ac"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Uint64</b> (uint64_t u)</td></tr>
<tr class="separator:a2bee26a73c644a72c2baa2970b35c7ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9d1110efc1a7f8c18cd88020310b35bf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9d1110efc1a7f8c18cd88020310b35bf"></a>
+<tr class="memitem:a9d1110efc1a7f8c18cd88020310b35bf"><td class="memItemLeft" align="right" valign="top"><a id="a9d1110efc1a7f8c18cd88020310b35bf"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Double</b> (double d)</td></tr>
<tr class="separator:a9d1110efc1a7f8c18cd88020310b35bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a58fb3589123904533021926530a206ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a58fb3589123904533021926530a206ce"></a>
+<tr class="memitem:a58fb3589123904533021926530a206ce"><td class="memItemLeft" align="right" valign="top"><a id="a58fb3589123904533021926530a206ce"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>RawNumber</b> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, bool copy)</td></tr>
<tr class="separator:a58fb3589123904533021926530a206ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a92a6d2ba413cfd05cb2122fc119efd46"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92a6d2ba413cfd05cb2122fc119efd46"></a>
+<tr class="memitem:a92a6d2ba413cfd05cb2122fc119efd46"><td class="memItemLeft" align="right" valign="top"><a id="a92a6d2ba413cfd05cb2122fc119efd46"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>String</b> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, bool copy)</td></tr>
<tr class="separator:a92a6d2ba413cfd05cb2122fc119efd46"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a311489ae16471b5e111a62090a8675e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a311489ae16471b5e111a62090a8675e0"></a>
+<tr class="memitem:a311489ae16471b5e111a62090a8675e0"><td class="memItemLeft" align="right" valign="top"><a id="a311489ae16471b5e111a62090a8675e0"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>StartObject</b> ()</td></tr>
<tr class="separator:a311489ae16471b5e111a62090a8675e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af2ad6b4fb9837b90643da7cdd62e413b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af2ad6b4fb9837b90643da7cdd62e413b"></a>
+<tr class="memitem:af2ad6b4fb9837b90643da7cdd62e413b"><td class="memItemLeft" align="right" valign="top"><a id="af2ad6b4fb9837b90643da7cdd62e413b"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Key</b> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, bool copy)</td></tr>
<tr class="separator:af2ad6b4fb9837b90643da7cdd62e413b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae3d4ceb7937a1a6ac3702c29e9243128"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3d4ceb7937a1a6ac3702c29e9243128"></a>
+<tr class="memitem:ae3d4ceb7937a1a6ac3702c29e9243128"><td class="memItemLeft" align="right" valign="top"><a id="ae3d4ceb7937a1a6ac3702c29e9243128"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndObject</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount)</td></tr>
<tr class="separator:ae3d4ceb7937a1a6ac3702c29e9243128"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a615b93b84c732e405f3847c7d789acf8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a615b93b84c732e405f3847c7d789acf8"></a>
+<tr class="memitem:a615b93b84c732e405f3847c7d789acf8"><td class="memItemLeft" align="right" valign="top"><a id="a615b93b84c732e405f3847c7d789acf8"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>StartArray</b> ()</td></tr>
<tr class="separator:a615b93b84c732e405f3847c7d789acf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a98a80c23569edb89af722c124a136b49"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a98a80c23569edb89af722c124a136b49"></a>
+<tr class="memitem:a98a80c23569edb89af722c124a136b49"><td class="memItemLeft" align="right" valign="top"><a id="a98a80c23569edb89af722c124a136b49"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndArray</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount)</td></tr>
<tr class="separator:a98a80c23569edb89af722c124a136b49"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae5b23d65482201d75072b958308d9d7b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae5b23d65482201d75072b958308d9d7b"></a>
+<tr class="memitem:ae5b23d65482201d75072b958308d9d7b"><td class="memItemLeft" align="right" valign="top"><a id="ae5b23d65482201d75072b958308d9d7b"></a>
virtual ISchemaValidator *&#160;</td><td class="memItemRight" valign="bottom"><b>CreateSchemaValidator</b> (const SchemaType &amp;root)</td></tr>
<tr class="separator:ae5b23d65482201d75072b958308d9d7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aec8a2e41bc8185df35ebf9ebedb52355"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec8a2e41bc8185df35ebf9ebedb52355"></a>
+<tr class="memitem:aec8a2e41bc8185df35ebf9ebedb52355"><td class="memItemLeft" align="right" valign="top"><a id="aec8a2e41bc8185df35ebf9ebedb52355"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>DestroySchemaValidator</b> (ISchemaValidator *validator)</td></tr>
<tr class="separator:aec8a2e41bc8185df35ebf9ebedb52355"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aec2362f03fb6edc575d9bb50d4f99c94"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec2362f03fb6edc575d9bb50d4f99c94"></a>
+<tr class="memitem:aec2362f03fb6edc575d9bb50d4f99c94"><td class="memItemLeft" align="right" valign="top"><a id="aec2362f03fb6edc575d9bb50d4f99c94"></a>
virtual void *&#160;</td><td class="memItemRight" valign="bottom"><b>CreateHasher</b> ()</td></tr>
<tr class="separator:aec2362f03fb6edc575d9bb50d4f99c94"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8d24483082f9b4b2b3f35bff78c66529"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d24483082f9b4b2b3f35bff78c66529"></a>
+<tr class="memitem:a8d24483082f9b4b2b3f35bff78c66529"><td class="memItemLeft" align="right" valign="top"><a id="a8d24483082f9b4b2b3f35bff78c66529"></a>
virtual uint64_t&#160;</td><td class="memItemRight" valign="bottom"><b>GetHashCode</b> (void *hasher)</td></tr>
<tr class="separator:a8d24483082f9b4b2b3f35bff78c66529"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af7620c515a7ea2f75ff300cfbf9916cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af7620c515a7ea2f75ff300cfbf9916cf"></a>
+<tr class="memitem:af7620c515a7ea2f75ff300cfbf9916cf"><td class="memItemLeft" align="right" valign="top"><a id="af7620c515a7ea2f75ff300cfbf9916cf"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>DestroryHasher</b> (void *hasher)</td></tr>
<tr class="separator:af7620c515a7ea2f75ff300cfbf9916cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a73d58da18b6e77665daaa977852f205c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a73d58da18b6e77665daaa977852f205c"></a>
+<tr class="memitem:a73d58da18b6e77665daaa977852f205c"><td class="memItemLeft" align="right" valign="top"><a id="a73d58da18b6e77665daaa977852f205c"></a>
virtual void *&#160;</td><td class="memItemRight" valign="bottom"><b>MallocState</b> (size_t size)</td></tr>
<tr class="separator:a73d58da18b6e77665daaa977852f205c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acd4ac0e7042c9ab63e5b9e443dbc0d14"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd4ac0e7042c9ab63e5b9e443dbc0d14"></a>
+<tr class="memitem:acd4ac0e7042c9ab63e5b9e443dbc0d14"><td class="memItemLeft" align="right" valign="top"><a id="acd4ac0e7042c9ab63e5b9e443dbc0d14"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>FreeState</b> (void *p)</td></tr>
<tr class="separator:acd4ac0e7042c9ab63e5b9e443dbc0d14"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<div class="textblock"><h3>template&lt;typename SchemaDocumentType, typename OutputHandler, typename StateAllocator&gt;<br />
+<div class="textblock"><h3>template&lt;typename SchemaDocumentType, typename OutputHandler = BaseReaderHandler&lt;typename SchemaDocumentType::SchemaType::EncodingType&gt;, typename StateAllocator = CrtAllocator&gt;<br />
class rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</h3>
<p>JSON Schema Validator. </p>
@@ -226,11 +225,13 @@ class rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, S
</dd>
</dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
-<a class="anchor" id="acc07bd08b00195d84bb5b83f59c593d3"></a>
+<a id="acc07bd08b00195d84bb5b83f59c593d3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acc07bd08b00195d84bb5b83f59c593d3">&#9670;&nbsp;</a></span>GenericSchemaValidator() <span class="overload">[1/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename SchemaDocumentType , typename OutputHandler , typename StateAllocator &gt; </div>
+template&lt;typename SchemaDocumentType, typename OutputHandler = BaseReaderHandler&lt;typename SchemaDocumentType::SchemaType::EncodingType&gt;, typename StateAllocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -285,11 +286,13 @@ template&lt;typename SchemaDocumentType , typename OutputHandler , typename Stat
</div>
</div>
-<a class="anchor" id="a0e1d8f19381bd53d77cc00a9a6dcd067"></a>
+<a id="a0e1d8f19381bd53d77cc00a9a6dcd067"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0e1d8f19381bd53d77cc00a9a6dcd067">&#9670;&nbsp;</a></span>GenericSchemaValidator() <span class="overload">[2/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename SchemaDocumentType , typename OutputHandler , typename StateAllocator &gt; </div>
+template&lt;typename SchemaDocumentType, typename OutputHandler = BaseReaderHandler&lt;typename SchemaDocumentType::SchemaType::EncodingType&gt;, typename StateAllocator = CrtAllocator&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
diff --git a/zh-cn/classrapidjson_1_1_generic_schema_validator.js b/zh-cn/classrapidjson_1_1_generic_schema_validator.js
index 3e57bce6..d43dcfc7 100644
--- a/zh-cn/classrapidjson_1_1_generic_schema_validator.js
+++ b/zh-cn/classrapidjson_1_1_generic_schema_validator.js
@@ -17,12 +17,12 @@ var classrapidjson_1_1_generic_schema_validator =
[ "EndObject", "classrapidjson_1_1_generic_schema_validator.html#ae3d4ceb7937a1a6ac3702c29e9243128", null ],
[ "FreeState", "classrapidjson_1_1_generic_schema_validator.html#acd4ac0e7042c9ab63e5b9e443dbc0d14", null ],
[ "GetHashCode", "classrapidjson_1_1_generic_schema_validator.html#a8d24483082f9b4b2b3f35bff78c66529", null ],
- [ "GetInvalidDocumentPointer", "classrapidjson_1_1_generic_schema_validator.html#af66e4a41d71c89edfabb176af7839f04", null ],
- [ "GetInvalidSchemaKeyword", "classrapidjson_1_1_generic_schema_validator.html#a914628c4d69faea91ada1dee61d25d59", null ],
- [ "GetInvalidSchemaPointer", "classrapidjson_1_1_generic_schema_validator.html#a8381f8d4dca195449f086ffbd25bb9b7", null ],
+ [ "GetInvalidDocumentPointer", "classrapidjson_1_1_generic_schema_validator.html#a60dfb4a89593c8d3ca4c89a6202feb52", null ],
+ [ "GetInvalidSchemaKeyword", "classrapidjson_1_1_generic_schema_validator.html#a03bcd5497a574cffbd066d0aec2b5585", null ],
+ [ "GetInvalidSchemaPointer", "classrapidjson_1_1_generic_schema_validator.html#a3238efb9d9144c2d6577362d8dc5f61b", null ],
[ "Int", "classrapidjson_1_1_generic_schema_validator.html#a98561df249a90a257fb8a57ffcf1b581", null ],
[ "Int64", "classrapidjson_1_1_generic_schema_validator.html#a1be5d3b3f73c05d84a76cad3a9948a35", null ],
- [ "IsValid", "classrapidjson_1_1_generic_schema_validator.html#ab520a4ee6df3e23ffb948c8d5ae7bf38", null ],
+ [ "IsValid", "classrapidjson_1_1_generic_schema_validator.html#ad32a9ad31dbb588edaaf038ab053275b", null ],
[ "Key", "classrapidjson_1_1_generic_schema_validator.html#af2ad6b4fb9837b90643da7cdd62e413b", null ],
[ "MallocState", "classrapidjson_1_1_generic_schema_validator.html#a73d58da18b6e77665daaa977852f205c", null ],
[ "Null", "classrapidjson_1_1_generic_schema_validator.html#aefcbbbdba183ef7b13347aa3b4f352bd", null ],
diff --git a/zh-cn/classrapidjson_1_1_generic_string_buffer-members.html b/zh-cn/classrapidjson_1_1_generic_string_buffer-members.html
index 2d6a1fbc..735864ea 100644
--- a/zh-cn/classrapidjson_1_1_generic_string_buffer-members.html
+++ b/zh-cn/classrapidjson_1_1_generic_string_buffer-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_string_buff
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -87,9 +88,9 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_string_buff
<tr bgcolor="#f0f0f0"><td class="entry"><b>Clear</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Flush</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>GenericStringBuffer</b>(Allocator *allocator=0, size_t capacity=kDefaultCapacity) (定义于 <a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html#aefe471aaf1430189bf40ddb3fb7ebca3">GetLength</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html#a629cedcefa12a8057fad525df8548a88">GetSize</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetString</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html#a0a114be213152d570a2d9fde7a28fe11">GetLength</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html#a9d830ec37a4ba0fba3b523c90aaf8b42">GetSize</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetString</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>kDefaultCapacity</b> (定义于 <a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Pop</b>(size_t count) (定义于 <a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Push</b>(size_t count) (定义于 <a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
diff --git a/zh-cn/classrapidjson_1_1_generic_string_buffer.html b/zh-cn/classrapidjson_1_1_generic_string_buffer.html
index 8f99e6ca..ebe1b145 100644
--- a/zh-cn/classrapidjson_1_1_generic_string_buffer.html
+++ b/zh-cn/classrapidjson_1_1_generic_string_buffer.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_string_buff
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -94,68 +95,68 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_string_buff
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a315f6f4528438a19d5a93eac3e2c99f0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a315f6f4528438a19d5a93eac3e2c99f0"></a>
+<tr class="memitem:a315f6f4528438a19d5a93eac3e2c99f0"><td class="memItemLeft" align="right" valign="top"><a id="a315f6f4528438a19d5a93eac3e2c99f0"></a>
typedef Encoding::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a315f6f4528438a19d5a93eac3e2c99f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:a96f9ddc4322573a15d086f29197a3d1b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96f9ddc4322573a15d086f29197a3d1b"></a>
+<tr class="memitem:a96f9ddc4322573a15d086f29197a3d1b"><td class="memItemLeft" align="right" valign="top"><a id="a96f9ddc4322573a15d086f29197a3d1b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>GenericStringBuffer</b> (<a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0, size_t capacity=kDefaultCapacity)</td></tr>
<tr class="separator:a96f9ddc4322573a15d086f29197a3d1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a495081cfdd864623565606daf02f1187"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a495081cfdd864623565606daf02f1187"></a>
+<tr class="memitem:a495081cfdd864623565606daf02f1187"><td class="memItemLeft" align="right" valign="top"><a id="a495081cfdd864623565606daf02f1187"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Put</b> (Ch c)</td></tr>
<tr class="separator:a495081cfdd864623565606daf02f1187"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a35733ffe70f63b28857b8d738b2ffad7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a35733ffe70f63b28857b8d738b2ffad7"></a>
+<tr class="memitem:a35733ffe70f63b28857b8d738b2ffad7"><td class="memItemLeft" align="right" valign="top"><a id="a35733ffe70f63b28857b8d738b2ffad7"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>PutUnsafe</b> (Ch c)</td></tr>
<tr class="separator:a35733ffe70f63b28857b8d738b2ffad7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aabe024dd7fc2ea0a0c929d7eea3d0b32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aabe024dd7fc2ea0a0c929d7eea3d0b32"></a>
+<tr class="memitem:aabe024dd7fc2ea0a0c929d7eea3d0b32"><td class="memItemLeft" align="right" valign="top"><a id="aabe024dd7fc2ea0a0c929d7eea3d0b32"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Flush</b> ()</td></tr>
<tr class="separator:aabe024dd7fc2ea0a0c929d7eea3d0b32"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a614af5a72984c88bd5a65e2bc233d310"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a614af5a72984c88bd5a65e2bc233d310"></a>
+<tr class="memitem:a614af5a72984c88bd5a65e2bc233d310"><td class="memItemLeft" align="right" valign="top"><a id="a614af5a72984c88bd5a65e2bc233d310"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Clear</b> ()</td></tr>
<tr class="separator:a614af5a72984c88bd5a65e2bc233d310"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7e688f68b88820655f717d3cc352b842"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7e688f68b88820655f717d3cc352b842"></a>
+<tr class="memitem:a7e688f68b88820655f717d3cc352b842"><td class="memItemLeft" align="right" valign="top"><a id="a7e688f68b88820655f717d3cc352b842"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>ShrinkToFit</b> ()</td></tr>
<tr class="separator:a7e688f68b88820655f717d3cc352b842"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae70a632053e258c7c431e0e35b095c84"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae70a632053e258c7c431e0e35b095c84"></a>
+<tr class="memitem:ae70a632053e258c7c431e0e35b095c84"><td class="memItemLeft" align="right" valign="top"><a id="ae70a632053e258c7c431e0e35b095c84"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Reserve</b> (size_t count)</td></tr>
<tr class="separator:ae70a632053e258c7c431e0e35b095c84"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa848ba1b8220afb4103d8099cbd6d3ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa848ba1b8220afb4103d8099cbd6d3ff"></a>
+<tr class="memitem:aa848ba1b8220afb4103d8099cbd6d3ff"><td class="memItemLeft" align="right" valign="top"><a id="aa848ba1b8220afb4103d8099cbd6d3ff"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>Push</b> (size_t count)</td></tr>
<tr class="separator:aa848ba1b8220afb4103d8099cbd6d3ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acfdf31dc9458a63e4d6544d3079c8d2e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acfdf31dc9458a63e4d6544d3079c8d2e"></a>
+<tr class="memitem:acfdf31dc9458a63e4d6544d3079c8d2e"><td class="memItemLeft" align="right" valign="top"><a id="acfdf31dc9458a63e4d6544d3079c8d2e"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>PushUnsafe</b> (size_t count)</td></tr>
<tr class="separator:acfdf31dc9458a63e4d6544d3079c8d2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afb41bae09405ddd9aa9250ac47ab235e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb41bae09405ddd9aa9250ac47ab235e"></a>
+<tr class="memitem:afb41bae09405ddd9aa9250ac47ab235e"><td class="memItemLeft" align="right" valign="top"><a id="afb41bae09405ddd9aa9250ac47ab235e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Pop</b> (size_t count)</td></tr>
<tr class="separator:afb41bae09405ddd9aa9250ac47ab235e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ace0bc8bee07187577116892b566a61d9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace0bc8bee07187577116892b566a61d9"></a>
-const Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>GetString</b> () const </td></tr>
-<tr class="separator:ace0bc8bee07187577116892b566a61d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a629cedcefa12a8057fad525df8548a88"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a629cedcefa12a8057fad525df8548a88"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html#a629cedcefa12a8057fad525df8548a88">GetSize</a> () const </td></tr>
-<tr class="memdesc:a629cedcefa12a8057fad525df8548a88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the size of string in bytes in the string buffer. <br /></td></tr>
-<tr class="separator:a629cedcefa12a8057fad525df8548a88"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aefe471aaf1430189bf40ddb3fb7ebca3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefe471aaf1430189bf40ddb3fb7ebca3"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html#aefe471aaf1430189bf40ddb3fb7ebca3">GetLength</a> () const </td></tr>
-<tr class="memdesc:aefe471aaf1430189bf40ddb3fb7ebca3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the length of string in Ch in the string buffer. <br /></td></tr>
-<tr class="separator:aefe471aaf1430189bf40ddb3fb7ebca3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a520c0f75424762ea44ebf6ecdd1931d8"><td class="memItemLeft" align="right" valign="top"><a id="a520c0f75424762ea44ebf6ecdd1931d8"></a>
+const Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>GetString</b> () const</td></tr>
+<tr class="separator:a520c0f75424762ea44ebf6ecdd1931d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9d830ec37a4ba0fba3b523c90aaf8b42"><td class="memItemLeft" align="right" valign="top"><a id="a9d830ec37a4ba0fba3b523c90aaf8b42"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html#a9d830ec37a4ba0fba3b523c90aaf8b42">GetSize</a> () const</td></tr>
+<tr class="memdesc:a9d830ec37a4ba0fba3b523c90aaf8b42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the size of string in bytes in the string buffer. <br /></td></tr>
+<tr class="separator:a9d830ec37a4ba0fba3b523c90aaf8b42"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0a114be213152d570a2d9fde7a28fe11"><td class="memItemLeft" align="right" valign="top"><a id="a0a114be213152d570a2d9fde7a28fe11"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_string_buffer.html#a0a114be213152d570a2d9fde7a28fe11">GetLength</a> () const</td></tr>
+<tr class="memdesc:a0a114be213152d570a2d9fde7a28fe11"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the length of string in Ch in the string buffer. <br /></td></tr>
+<tr class="separator:a0a114be213152d570a2d9fde7a28fe11"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
-<tr class="memitem:a061b1ffdcd0d660d98ab4a8e3ab49975"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a061b1ffdcd0d660d98ab4a8e3ab49975"></a>
+<tr class="memitem:a061b1ffdcd0d660d98ab4a8e3ab49975"><td class="memItemLeft" align="right" valign="top"><a id="a061b1ffdcd0d660d98ab4a8e3ab49975"></a>
internal::Stack&lt; <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>stack_</b></td></tr>
<tr class="separator:a061b1ffdcd0d660d98ab4a8e3ab49975"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
静态 Public 属性</h2></td></tr>
-<tr class="memitem:a56159d25a431109a2873e9455178eff0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56159d25a431109a2873e9455178eff0"></a>
+<tr class="memitem:a56159d25a431109a2873e9455178eff0"><td class="memItemLeft" align="right" valign="top"><a id="a56159d25a431109a2873e9455178eff0"></a>
static const size_t&#160;</td><td class="memItemRight" valign="bottom"><b>kDefaultCapacity</b> = 256</td></tr>
<tr class="separator:a56159d25a431109a2873e9455178eff0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<div class="textblock"><h3>template&lt;typename Encoding, typename Allocator&gt;<br />
+<div class="textblock"><h3>template&lt;typename Encoding, typename Allocator = CrtAllocator&gt;<br />
class rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</h3>
<p>Represents an in-memory output stream. </p>
diff --git a/zh-cn/classrapidjson_1_1_generic_string_buffer.js b/zh-cn/classrapidjson_1_1_generic_string_buffer.js
index 68532b3c..dfeed695 100644
--- a/zh-cn/classrapidjson_1_1_generic_string_buffer.js
+++ b/zh-cn/classrapidjson_1_1_generic_string_buffer.js
@@ -4,9 +4,9 @@ var classrapidjson_1_1_generic_string_buffer =
[ "GenericStringBuffer", "classrapidjson_1_1_generic_string_buffer.html#a96f9ddc4322573a15d086f29197a3d1b", null ],
[ "Clear", "classrapidjson_1_1_generic_string_buffer.html#a614af5a72984c88bd5a65e2bc233d310", null ],
[ "Flush", "classrapidjson_1_1_generic_string_buffer.html#aabe024dd7fc2ea0a0c929d7eea3d0b32", null ],
- [ "GetLength", "classrapidjson_1_1_generic_string_buffer.html#aefe471aaf1430189bf40ddb3fb7ebca3", null ],
- [ "GetSize", "classrapidjson_1_1_generic_string_buffer.html#a629cedcefa12a8057fad525df8548a88", null ],
- [ "GetString", "classrapidjson_1_1_generic_string_buffer.html#ace0bc8bee07187577116892b566a61d9", null ],
+ [ "GetLength", "classrapidjson_1_1_generic_string_buffer.html#a0a114be213152d570a2d9fde7a28fe11", null ],
+ [ "GetSize", "classrapidjson_1_1_generic_string_buffer.html#a9d830ec37a4ba0fba3b523c90aaf8b42", null ],
+ [ "GetString", "classrapidjson_1_1_generic_string_buffer.html#a520c0f75424762ea44ebf6ecdd1931d8", null ],
[ "Pop", "classrapidjson_1_1_generic_string_buffer.html#afb41bae09405ddd9aa9250ac47ab235e", null ],
[ "Push", "classrapidjson_1_1_generic_string_buffer.html#aa848ba1b8220afb4103d8099cbd6d3ff", null ],
[ "PushUnsafe", "classrapidjson_1_1_generic_string_buffer.html#acfdf31dc9458a63e4d6544d3079c8d2e", null ],
diff --git a/zh-cn/classrapidjson_1_1_generic_value-members.html b/zh-cn/classrapidjson_1_1_generic_value-members.html
index c9373043..6d335169 100644
--- a/zh-cn/classrapidjson_1_1_generic_value-members.html
+++ b/zh-cn/classrapidjson_1_1_generic_value-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_value.html'
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -83,7 +84,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_value.html'
<p>成员的完整列表,这些成员属于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>,包括所有继承而来的类成员</p>
<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e">Accept</a>(Handler &amp;handler) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c">Accept</a>(Handler &amp;handler) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68">AddMember</a>(GenericValue &amp;name, GenericValue &amp;value, Allocator &amp;allocator)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad290f179591025e871bedbbac89ac276">AddMember</a>(GenericValue &amp;name, StringRefType value, Allocator &amp;allocator)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a578e35f3350717db2aae534969b2346a">AddMember</a>(GenericValue &amp;name, std::basic_string&lt; Ch &gt; &amp;value, Allocator &amp;allocator)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
@@ -94,8 +95,8 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_value.html'
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a5d47340c96346c5028fee4c9068d783d">AllocatorType</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Array</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603">Begin</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#abc8945d3411c6ce583d322753ce028e1">Begin</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cbb8a305fdc40beb83bee2b99ac5b59">Capacity</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a07d947971c59c9ce884b3c5205c9238f">Begin</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a812e5c07f74a90566e7636330740eb6a">Capacity</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aa56b69bac5423622eff6998ce4802106">Clear</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>ConstArray</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
@@ -103,10 +104,10 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_value.html'
<tr bgcolor="#f0f0f0"><td class="entry"><b>ConstObject</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae">CopyFrom</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs, Allocator &amp;allocator, bool copyConstStrings=false)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a08bf77a430b865404c57a93d8f0f6d3d">Empty</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad08a62c65a793ab1d0abe7eac03776fd">Empty</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a05906384808645a2e798d29a9b2d441d">EncodingType</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109">End</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad2d9786831d721cf8f1bf0dbdf86404a">End</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#abdd6a3b703a03aada4c186a2365698e7">End</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99">Erase</a>(ConstValueIterator pos)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a916f443e02f9379d8fbde49a4d440f61">Erase</a>(ConstValueIterator first, ConstValueIterator last)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a163e60b101e5ae534597c050a6eba511">EraseMember</a>(ConstMemberIterator pos)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
@@ -115,11 +116,11 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_value.html'
<tr bgcolor="#f0f0f0"><td class="entry"><b>EraseMember</b>(const std::basic_string&lt; Ch &gt; &amp;name) (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EraseMember</b>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811">FindMember</a>(const Ch *name)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FindMember</b>(const Ch *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FindMember</b>(const Ch *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a8d75bf0c6c0fa4f8d340a4236e98539b">FindMember</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FindMember</b>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FindMember</b>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a278b420ea75b0ec18d88d4c9e9199d62">FindMember</a>(const std::basic_string&lt; Ch &gt; &amp;name)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FindMember</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>FindMember</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>GenericDocument</b> (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GenericValue</b> (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad1f8199e65662e0d52a13a1577d4e4a5">GenericValue</a>() RAPIDJSON_NOEXCEPT</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
@@ -139,72 +140,72 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_value.html'
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a852788b35257762cd8d6c4bf5c5d77bc">GenericValue</a>(const std::basic_string&lt; Ch &gt; &amp;s, Allocator &amp;allocator)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a77b0f41557b3c34b57a180698312c4a8">GenericValue</a>(Array a) RAPIDJSON_NOEXCEPT</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a893da1069660536fd3943a0149206a6e">GenericValue</a>(Object o) RAPIDJSON_NOEXCEPT</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Get</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Get</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Get</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetArray</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetArray</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a69d917b47799f63fc588bf294fa71483">GetBool</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aa059dee923cc0446752e321ff70936a6">GetDouble</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a0eda9834f241e5c5b23161a7ee33758b">GetFloat</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetInt</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetInt64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetArray</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a78d80b935babeedbfa71914a8fe5baa7">GetBool</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aa27d086d265f0ce447b15b15f0a2ed6e">GetDouble</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a573712808dd5d8814c103cf55fd761b4">GetFloat</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetInt</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetInt64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>GetObject</b>() (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetObject</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetString</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8">GetStringLength</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetType</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetUint</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetUint64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#af17b9b6ba6a9fb4e02d2dced5aa0ee0c">HasMember</a>(const Ch *name) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#afb1942ef13566484e1806689834a053f">HasMember</a>(const std::basic_string&lt; Ch &gt; &amp;name) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a548e6c8a99c525573d933933610977cb">HasMember</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ade8d1ca2b8e8afa02cde46e26866440b">Is</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsArray</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsBool</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsDouble</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsFalse</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsFloat</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsInt</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsInt64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsLosslessDouble</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsLosslessFloat</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsNull</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsNumber</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsObject</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsString</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsTrue</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsUint</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsUint64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetObject</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetString</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea">GetStringLength</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetType</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetUint</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetUint64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b">HasMember</a>(const Ch *name) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a9b3b30acbe60d7a5b105afa05c1ddfb0">HasMember</a>(const std::basic_string&lt; Ch &gt; &amp;name) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a794129b8adffb97d123306a0c0ccaf71">HasMember</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#acc6b1791cca8daef18521918136264b7">Is</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsArray</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsBool</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsDouble</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsFalse</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsFloat</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsInt</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsInt64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsLosslessDouble</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsLosslessFloat</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsNull</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsNumber</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsObject</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsString</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsTrue</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>IsUint</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsUint64</b>() const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a0220ddebe2f023fa75b643a50e90e559">Member</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a469c0cc3e72f846757fb64fa52fafee5">MemberBegin</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ae89a77887aa3eb1f1f913727cbff6786">MemberBegin</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a">MemberBegin</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#acf5019b9002ebfd66a1191d19e986c7b">MemberCount</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a88d2c5b861cd8a6a14976456dfbc1f64">MemberEnd</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a8b7e47c57a20d0de0cd19eee799ebd88">MemberCount</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c">MemberEnd</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee">MemberEnd</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b">Move</a>() RAPIDJSON_NOEXCEPT</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Object</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a1f28a345c9b9c93c76abf695669e4378">ObjectEmpty</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a0cb232adce79932c499c5f04cbc8dc54">operator!=</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aff1711092a1278d36b8152f5520a686e">operator!=</a>(const Ch *rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad7e6ef7acbbfef57485b9f2dee620dbf">operator!=</a>(const T &amp;rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a1f4835373e05abae52b91e1c6b7ec92c">ObjectEmpty</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ad5bf5afd53f21f370f917041b3be4bfc">operator!=</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a6443cf5323fb46c4c51cd15a365da49b">operator!=</a>(const Ch *rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ae6fe0576ff0336f6e2b09fe32f3ff809">operator!=</a>(const T &amp;rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ae08898bef949f217f0e5d28e19f05992">operator!=</a>(const T &amp;lhs, const GenericValue &amp;rhs)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ae8bcedd951f50b69786aaaa1828e9fac">operator=</a>(GenericValue &amp;rhs) RAPIDJSON_NOEXCEPT</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aecc9d0a6aafe31f4fdf9f6e75e5f089c">operator=</a>(StringRefType str) RAPIDJSON_NOEXCEPT</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ab7446da62fdc61d6d987d508cdb6ac13">operator=</a>(T value)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#afbdbc9cbc3b59feb5a28d5bfee97dbb3">operator==</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a7bed9035dd1beeabe6f47e870874e793">operator==</a>(const Ch *rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a6f7f7c66d8f8c08e496ae831ba114126">operator==</a>(const std::basic_string&lt; Ch &gt; &amp;rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ae6c196979931e8283bcbd499133169ed">operator==</a>(const T &amp;rhs) const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ab4e5285102bb686f39bca2855a17a181">operator==</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#af03ef6020e188bbfceb018da5cd8becc">operator==</a>(const Ch *rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#af089d2bee0386ca7504ff4fab466c87f">operator==</a>(const std::basic_string&lt; Ch &gt; &amp;rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aaddbbbb35cd783f209f889cf8dea9570">operator==</a>(const T &amp;rhs) const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aaa465706fda1e1ef4513ce877e0b4b69">operator==</a>(const T &amp;lhs, const GenericValue &amp;rhs)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a8ec7fc7f221306925c7674dccbe02b07">operator[]</a>(T *name)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>operator[]</b>(T *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>operator[]</b>(T *name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#aa62b57746c96ce3d264b2fe178196062">operator[]</a>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>operator[]</b>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>operator[]</b>(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a4d337239ee3e2096462f6a36b9ab0811">operator[]</a>(const std::basic_string&lt; Ch &gt; &amp;name)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>operator[]</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>operator[]</b>(const std::basic_string&lt; Ch &gt; &amp;name) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#adc312de070d03a63e6c692c9c61db156">operator[]</a>(SizeType index)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>operator[]</b>(SizeType index) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>operator[]</b>(SizeType index) const (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#ae475f31fb851138ced40e2ff6cb43ca6">PopBack</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a0ec9f34bef5890241d4bc882b73b1db4">PushBack</a>(GenericValue &amp;value, Allocator &amp;allocator)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a41946915cb219a684f6ffc9341efee22">PushBack</a>(StringRefType value, Allocator &amp;allocator)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
@@ -233,7 +234,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_value.html'
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a3e930bffb40a78e570e3deef461f0532">SetString</a>(const std::basic_string&lt; Ch &gt; &amp;s, Allocator &amp;allocator)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>SetUint</b>(unsigned u) (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>SetUint64</b>(uint64_t u64) (定义于 <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a2e6e849cfb368a3fa708f8bcf1d56ec9">Size</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a799a8a2503989f486f3fc7a660266555">Size</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a> typedef</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a58ecce8a34fc029039b8079de246bdaa">swap</a>(GenericValue &amp;a, GenericValue &amp;b) RAPIDJSON_NOEXCEPT</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">friend</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db">Swap</a>(GenericValue &amp;other) RAPIDJSON_NOEXCEPT</td><td class="entry"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
diff --git a/zh-cn/classrapidjson_1_1_generic_value.html b/zh-cn/classrapidjson_1_1_generic_value.html
index 63ac3302..adc7b00d 100644
--- a/zh-cn/classrapidjson_1_1_generic_value.html
+++ b/zh-cn/classrapidjson_1_1_generic_value.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericValue&lt; Encoding, Allocator &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_value.html'
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -95,223 +96,213 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_generic_value.html'
类 rapidjson::GenericValue&lt; Encoding, Allocator &gt; 继承关系图:</div>
<div class="dyncontent">
<div class="center">
- <img src="classrapidjson_1_1_generic_value.png" usemap="#rapidjson::GenericValue&lt; Encoding, Allocator &gt;_map" alt=""/>
- <map id="rapidjson::GenericValue&lt; Encoding, Allocator &gt;_map" name="rapidjson::GenericValue&lt; Encoding, Allocator &gt;_map">
+ <img src="classrapidjson_1_1_generic_value.png" usemap="#rapidjson::GenericValue_3C_20Encoding_2C_20Allocator_20_3E_map" alt=""/>
+ <map id="rapidjson::GenericValue_3C_20Encoding_2C_20Allocator_20_3E_map" name="rapidjson::GenericValue_3C_20Encoding_2C_20Allocator_20_3E_map">
<area href="classrapidjson_1_1_generic_document.html" title="A document for parsing JSON text as DOM. " alt="rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;" shape="rect" coords="0,56,399,80"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a0220ddebe2f023fa75b643a50e90e559"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0220ddebe2f023fa75b643a50e90e559"></a>
-typedef <a class="el" href="structrapidjson_1_1_generic_member.html">GenericMember</a><br class="typebreak" />
-&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a0220ddebe2f023fa75b643a50e90e559">Member</a></td></tr>
+<tr class="memitem:a0220ddebe2f023fa75b643a50e90e559"><td class="memItemLeft" align="right" valign="top"><a id="a0220ddebe2f023fa75b643a50e90e559"></a>
+typedef <a class="el" href="structrapidjson_1_1_generic_member.html">GenericMember</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a0220ddebe2f023fa75b643a50e90e559">Member</a></td></tr>
<tr class="memdesc:a0220ddebe2f023fa75b643a50e90e559"><td class="mdescLeft">&#160;</td><td class="mdescRight">Name-value pair in an object. <br /></td></tr>
<tr class="separator:a0220ddebe2f023fa75b643a50e90e559"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a05906384808645a2e798d29a9b2d441d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05906384808645a2e798d29a9b2d441d"></a>
+<tr class="memitem:a05906384808645a2e798d29a9b2d441d"><td class="memItemLeft" align="right" valign="top"><a id="a05906384808645a2e798d29a9b2d441d"></a>
typedef <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a05906384808645a2e798d29a9b2d441d">EncodingType</a></td></tr>
<tr class="memdesc:a05906384808645a2e798d29a9b2d441d"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_encoding.html" title="Concept for encoding of Unicode characters. ">Encoding</a> type from template parameter. <br /></td></tr>
<tr class="separator:a05906384808645a2e798d29a9b2d441d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5d47340c96346c5028fee4c9068d783d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d47340c96346c5028fee4c9068d783d"></a>
+<tr class="memitem:a5d47340c96346c5028fee4c9068d783d"><td class="memItemLeft" align="right" valign="top"><a id="a5d47340c96346c5028fee4c9068d783d"></a>
typedef <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a5d47340c96346c5028fee4c9068d783d">AllocatorType</a></td></tr>
<tr class="memdesc:a5d47340c96346c5028fee4c9068d783d"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_allocator.html" title="Concept for allocating, resizing and freeing memory block. ">Allocator</a> type from template parameter. <br /></td></tr>
<tr class="separator:a5d47340c96346c5028fee4c9068d783d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adcdbc7fa85a9a41b78966d7e0dcc2ac4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adcdbc7fa85a9a41b78966d7e0dcc2ac4"></a>
+<tr class="memitem:adcdbc7fa85a9a41b78966d7e0dcc2ac4"><td class="memItemLeft" align="right" valign="top"><a id="adcdbc7fa85a9a41b78966d7e0dcc2ac4"></a>
typedef Encoding::Ch&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a></td></tr>
<tr class="memdesc:adcdbc7fa85a9a41b78966d7e0dcc2ac4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Character type derived from <a class="el" href="classrapidjson_1_1_encoding.html" title="Concept for encoding of Unicode characters. ">Encoding</a>. <br /></td></tr>
<tr class="separator:adcdbc7fa85a9a41b78966d7e0dcc2ac4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a559eb9cea54364a35518b02f6d74f379"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a559eb9cea54364a35518b02f6d74f379"></a>
+<tr class="memitem:a559eb9cea54364a35518b02f6d74f379"><td class="memItemLeft" align="right" valign="top"><a id="a559eb9cea54364a35518b02f6d74f379"></a>
typedef <a class="el" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a></td></tr>
-<tr class="memdesc:a559eb9cea54364a35518b02f6d74f379"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reference to a constant string. <br /></td></tr>
+<tr class="memdesc:a559eb9cea54364a35518b02f6d74f379"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reference to a constant string <br /></td></tr>
<tr class="separator:a559eb9cea54364a35518b02f6d74f379"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aca5596987335016c1a7c2a9467baf80b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca5596987335016c1a7c2a9467baf80b"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a><br class="typebreak" />
-&lt; false, <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;<br class="typebreak" />
-::Iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a></td></tr>
+<tr class="memitem:aca5596987335016c1a7c2a9467baf80b"><td class="memItemLeft" align="right" valign="top"><a id="aca5596987335016c1a7c2a9467baf80b"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>&lt; false, <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;::Iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a></td></tr>
<tr class="memdesc:aca5596987335016c1a7c2a9467baf80b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Member iterator for iterating in object. <br /></td></tr>
<tr class="separator:aca5596987335016c1a7c2a9467baf80b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6cd2b09795c48d2892bebc0ae350d51f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cd2b09795c48d2892bebc0ae350d51f"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a><br class="typebreak" />
-&lt; true, <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;<br class="typebreak" />
-::Iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a></td></tr>
+<tr class="memitem:a6cd2b09795c48d2892bebc0ae350d51f"><td class="memItemLeft" align="right" valign="top"><a id="a6cd2b09795c48d2892bebc0ae350d51f"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>&lt; true, <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;::Iterator&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a></td></tr>
<tr class="memdesc:a6cd2b09795c48d2892bebc0ae350d51f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant member iterator for iterating in object. <br /></td></tr>
<tr class="separator:a6cd2b09795c48d2892bebc0ae350d51f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a06ce0e14ec83b53c83e1b1699b53a25e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06ce0e14ec83b53c83e1b1699b53a25e"></a>
+<tr class="memitem:a06ce0e14ec83b53c83e1b1699b53a25e"><td class="memItemLeft" align="right" valign="top"><a id="a06ce0e14ec83b53c83e1b1699b53a25e"></a>
typedef <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a06ce0e14ec83b53c83e1b1699b53a25e">ValueIterator</a></td></tr>
<tr class="memdesc:a06ce0e14ec83b53c83e1b1699b53a25e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Value iterator for iterating in array. <br /></td></tr>
<tr class="separator:a06ce0e14ec83b53c83e1b1699b53a25e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a89a6588121742fc3f154b10b8f15f45f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a89a6588121742fc3f154b10b8f15f45f"></a>
+<tr class="memitem:a89a6588121742fc3f154b10b8f15f45f"><td class="memItemLeft" align="right" valign="top"><a id="a89a6588121742fc3f154b10b8f15f45f"></a>
typedef const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a></td></tr>
<tr class="memdesc:a89a6588121742fc3f154b10b8f15f45f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant value iterator for iterating in array. <br /></td></tr>
<tr class="separator:a89a6588121742fc3f154b10b8f15f45f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad2935191ab28c2c2e472b739a9d58202"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2935191ab28c2c2e472b739a9d58202"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <br class="typebreak" />
-<a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a></td></tr>
+<tr class="memitem:ad2935191ab28c2c2e472b739a9d58202"><td class="memItemLeft" align="right" valign="top"><a id="ad2935191ab28c2c2e472b739a9d58202"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a></td></tr>
<tr class="memdesc:ad2935191ab28c2c2e472b739a9d58202"><td class="mdescLeft">&#160;</td><td class="mdescRight">Value type of itself. <br /></td></tr>
<tr class="separator:ad2935191ab28c2c2e472b739a9d58202"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a81291ad1031afe43aca4719e2989d7dc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a81291ad1031afe43aca4719e2989d7dc"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&lt; false, <br class="typebreak" />
-<a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Array</b></td></tr>
+<tr class="memitem:a81291ad1031afe43aca4719e2989d7dc"><td class="memItemLeft" align="right" valign="top"><a id="a81291ad1031afe43aca4719e2989d7dc"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&lt; false, <a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Array</b></td></tr>
<tr class="separator:a81291ad1031afe43aca4719e2989d7dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8fb89523de7b22be0c69069f05d04b41"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8fb89523de7b22be0c69069f05d04b41"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&lt; true, <br class="typebreak" />
-<a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstArray</b></td></tr>
+<tr class="memitem:a8fb89523de7b22be0c69069f05d04b41"><td class="memItemLeft" align="right" valign="top"><a id="a8fb89523de7b22be0c69069f05d04b41"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&lt; true, <a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstArray</b></td></tr>
<tr class="separator:a8fb89523de7b22be0c69069f05d04b41"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae1b1a60a9c69ce5ac48b8c445e3e9231"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae1b1a60a9c69ce5ac48b8c445e3e9231"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&lt; false, <br class="typebreak" />
-<a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Object</b></td></tr>
+<tr class="memitem:ae1b1a60a9c69ce5ac48b8c445e3e9231"><td class="memItemLeft" align="right" valign="top"><a id="ae1b1a60a9c69ce5ac48b8c445e3e9231"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&lt; false, <a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Object</b></td></tr>
<tr class="separator:ae1b1a60a9c69ce5ac48b8c445e3e9231"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a39f5e1993897a86741b55c32ed4f54ef"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39f5e1993897a86741b55c32ed4f54ef"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&lt; true, <br class="typebreak" />
-<a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstObject</b></td></tr>
+<tr class="memitem:a39f5e1993897a86741b55c32ed4f54ef"><td class="memItemLeft" align="right" valign="top"><a id="a39f5e1993897a86741b55c32ed4f54ef"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&lt; true, <a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstObject</b></td></tr>
<tr class="separator:a39f5e1993897a86741b55c32ed4f54ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:aeef0506cd1f8d703db4833c503f0657e"><td class="memTemplParams" colspan="2">template&lt;typename Handler &gt; </td></tr>
-<tr class="memitem:aeef0506cd1f8d703db4833c503f0657e"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e">Accept</a> (<a class="el" href="classrapidjson_1_1_handler.html">Handler</a> &amp;handler) const </td></tr>
-<tr class="memdesc:aeef0506cd1f8d703db4833c503f0657e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate events of this value to a <a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a>. <a href="#aeef0506cd1f8d703db4833c503f0657e">更多...</a><br /></td></tr>
-<tr class="separator:aeef0506cd1f8d703db4833c503f0657e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad3ebfa73796f4db4836ec47c2261700c"><td class="memTemplParams" colspan="2">template&lt;typename Handler &gt; </td></tr>
+<tr class="memitem:ad3ebfa73796f4db4836ec47c2261700c"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c">Accept</a> (<a class="el" href="classrapidjson_1_1_handler.html">Handler</a> &amp;handler) const</td></tr>
+<tr class="memdesc:ad3ebfa73796f4db4836ec47c2261700c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate events of this value to a <a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a>. <a href="#ad3ebfa73796f4db4836ec47c2261700c">更多...</a><br /></td></tr>
+<tr class="separator:ad3ebfa73796f4db4836ec47c2261700c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Type</div></td></tr>
-<tr class="memitem:aa646b271a6802e57c2987d133594690c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa646b271a6802e57c2987d133594690c"></a>
-<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetType</b> () const </td></tr>
-<tr class="separator:aa646b271a6802e57c2987d133594690c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2666f119b3c883b251f74156d41a8239"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2666f119b3c883b251f74156d41a8239"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsNull</b> () const </td></tr>
-<tr class="separator:a2666f119b3c883b251f74156d41a8239"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a47e0d6193602b02b0d2852ce7335c5ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47e0d6193602b02b0d2852ce7335c5ff"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsFalse</b> () const </td></tr>
-<tr class="separator:a47e0d6193602b02b0d2852ce7335c5ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a92f0524be583ff2b12c80587a57921d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92f0524be583ff2b12c80587a57921d2"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsTrue</b> () const </td></tr>
-<tr class="separator:a92f0524be583ff2b12c80587a57921d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9a3648431f0227759bade4363525619d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a3648431f0227759bade4363525619d"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsBool</b> () const </td></tr>
-<tr class="separator:a9a3648431f0227759bade4363525619d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4f805574820d5e87cecbd5f154c79387"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4f805574820d5e87cecbd5f154c79387"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsObject</b> () const </td></tr>
-<tr class="separator:a4f805574820d5e87cecbd5f154c79387"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2233b836b63bca749efae44a6e39757d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2233b836b63bca749efae44a6e39757d"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsArray</b> () const </td></tr>
-<tr class="separator:a2233b836b63bca749efae44a6e39757d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a00dd3013a94baa577d51fff5ac7c1bb0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00dd3013a94baa577d51fff5ac7c1bb0"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsNumber</b> () const </td></tr>
-<tr class="separator:a00dd3013a94baa577d51fff5ac7c1bb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4d224cb84bf46a3adc1286ee9d976028"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d224cb84bf46a3adc1286ee9d976028"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsInt</b> () const </td></tr>
-<tr class="separator:a4d224cb84bf46a3adc1286ee9d976028"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a48fbbb00daf332db840aa0f5644fc828"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a48fbbb00daf332db840aa0f5644fc828"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsUint</b> () const </td></tr>
-<tr class="separator:a48fbbb00daf332db840aa0f5644fc828"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0a25f4740338ecb965ae9675abd673e2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0a25f4740338ecb965ae9675abd673e2"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsInt64</b> () const </td></tr>
-<tr class="separator:a0a25f4740338ecb965ae9675abd673e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aec193a145bd3e2d21a7896e2faa2a608"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec193a145bd3e2d21a7896e2faa2a608"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsUint64</b> () const </td></tr>
-<tr class="separator:aec193a145bd3e2d21a7896e2faa2a608"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a61b8b363430c366384ee2bbdcb91bf20"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a61b8b363430c366384ee2bbdcb91bf20"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsDouble</b> () const </td></tr>
-<tr class="separator:a61b8b363430c366384ee2bbdcb91bf20"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7821da23b34e3509a80469acfa1850f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7821da23b34e3509a80469acfa1850f5"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsString</b> () const </td></tr>
-<tr class="separator:a7821da23b34e3509a80469acfa1850f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3a7aca6411c7fb393e0a9129a2ba886d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3a7aca6411c7fb393e0a9129a2ba886d"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsLosslessDouble</b> () const </td></tr>
-<tr class="separator:a3a7aca6411c7fb393e0a9129a2ba886d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adaba7873c2c23ad2733c323040fee69f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adaba7873c2c23ad2733c323040fee69f"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsFloat</b> () const </td></tr>
-<tr class="separator:adaba7873c2c23ad2733c323040fee69f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acc8ea5f64c4bb4d32b5286e5e9f4d0e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc8ea5f64c4bb4d32b5286e5e9f4d0e0"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsLosslessFloat</b> () const </td></tr>
-<tr class="separator:acc8ea5f64c4bb4d32b5286e5e9f4d0e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad951d4bff60d37dd603ce68a36f1732a"><td class="memItemLeft" align="right" valign="top"><a id="ad951d4bff60d37dd603ce68a36f1732a"></a>
+<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetType</b> () const</td></tr>
+<tr class="separator:ad951d4bff60d37dd603ce68a36f1732a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a064ecd709d167b07008acd79e941b68e"><td class="memItemLeft" align="right" valign="top"><a id="a064ecd709d167b07008acd79e941b68e"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsNull</b> () const</td></tr>
+<tr class="separator:a064ecd709d167b07008acd79e941b68e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5daef830cdbe445a6450be3feae2662a"><td class="memItemLeft" align="right" valign="top"><a id="a5daef830cdbe445a6450be3feae2662a"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsFalse</b> () const</td></tr>
+<tr class="separator:a5daef830cdbe445a6450be3feae2662a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1ad0fa486347a4e58804bb8af5fe1050"><td class="memItemLeft" align="right" valign="top"><a id="a1ad0fa486347a4e58804bb8af5fe1050"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsTrue</b> () const</td></tr>
+<tr class="separator:a1ad0fa486347a4e58804bb8af5fe1050"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5e64a654ea30e182e4f0b4913c95a1d1"><td class="memItemLeft" align="right" valign="top"><a id="a5e64a654ea30e182e4f0b4913c95a1d1"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsBool</b> () const</td></tr>
+<tr class="separator:a5e64a654ea30e182e4f0b4913c95a1d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab5ce40f269b788b6dac0c2d95cf58201"><td class="memItemLeft" align="right" valign="top"><a id="ab5ce40f269b788b6dac0c2d95cf58201"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsObject</b> () const</td></tr>
+<tr class="separator:ab5ce40f269b788b6dac0c2d95cf58201"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a917b849cbd1a0bda256e8841ca4ecf24"><td class="memItemLeft" align="right" valign="top"><a id="a917b849cbd1a0bda256e8841ca4ecf24"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsArray</b> () const</td></tr>
+<tr class="separator:a917b849cbd1a0bda256e8841ca4ecf24"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac61d98a6f865040d8e250191e2a3a552"><td class="memItemLeft" align="right" valign="top"><a id="ac61d98a6f865040d8e250191e2a3a552"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsNumber</b> () const</td></tr>
+<tr class="separator:ac61d98a6f865040d8e250191e2a3a552"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac4f8e1cb46ffe319fad442265ab297b0"><td class="memItemLeft" align="right" valign="top"><a id="ac4f8e1cb46ffe319fad442265ab297b0"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsInt</b> () const</td></tr>
+<tr class="separator:ac4f8e1cb46ffe319fad442265ab297b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae7043304c8625aec1fc2df3363e7bb0a"><td class="memItemLeft" align="right" valign="top"><a id="ae7043304c8625aec1fc2df3363e7bb0a"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsUint</b> () const</td></tr>
+<tr class="separator:ae7043304c8625aec1fc2df3363e7bb0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afd2e8dbf6112c2ea007a6274dd37e472"><td class="memItemLeft" align="right" valign="top"><a id="afd2e8dbf6112c2ea007a6274dd37e472"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsInt64</b> () const</td></tr>
+<tr class="separator:afd2e8dbf6112c2ea007a6274dd37e472"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5444562cb25d10a2cb1c5ef5a86c3e49"><td class="memItemLeft" align="right" valign="top"><a id="a5444562cb25d10a2cb1c5ef5a86c3e49"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsUint64</b> () const</td></tr>
+<tr class="separator:a5444562cb25d10a2cb1c5ef5a86c3e49"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:adcdd96c0780ecd834a98d09bc402a1ea"><td class="memItemLeft" align="right" valign="top"><a id="adcdd96c0780ecd834a98d09bc402a1ea"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsDouble</b> () const</td></tr>
+<tr class="separator:adcdd96c0780ecd834a98d09bc402a1ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0dcb17e6f5ac240c4dfdb3aa97a394b8"><td class="memItemLeft" align="right" valign="top"><a id="a0dcb17e6f5ac240c4dfdb3aa97a394b8"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsString</b> () const</td></tr>
+<tr class="separator:a0dcb17e6f5ac240c4dfdb3aa97a394b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8ffdbcf1cd70c87792f5d486313dc28c"><td class="memItemLeft" align="right" valign="top"><a id="a8ffdbcf1cd70c87792f5d486313dc28c"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsLosslessDouble</b> () const</td></tr>
+<tr class="separator:a8ffdbcf1cd70c87792f5d486313dc28c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a150726bc6f5a7af5bce9e9a8b76e0e98"><td class="memItemLeft" align="right" valign="top"><a id="a150726bc6f5a7af5bce9e9a8b76e0e98"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsFloat</b> () const</td></tr>
+<tr class="separator:a150726bc6f5a7af5bce9e9a8b76e0e98"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6188d3ad8430b56ef45b9bd5633eafce"><td class="memItemLeft" align="right" valign="top"><a id="a6188d3ad8430b56ef45b9bd5633eafce"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsLosslessFloat</b> () const</td></tr>
+<tr class="separator:a6188d3ad8430b56ef45b9bd5633eafce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Null</div></td></tr>
-<tr class="memitem:a6f0d90a3f269061a73d05999fd61473e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f0d90a3f269061a73d05999fd61473e"></a>
+<tr class="memitem:a6f0d90a3f269061a73d05999fd61473e"><td class="memItemLeft" align="right" valign="top"><a id="a6f0d90a3f269061a73d05999fd61473e"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>SetNull</b> ()</td></tr>
<tr class="separator:a6f0d90a3f269061a73d05999fd61473e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Bool</div></td></tr>
-<tr class="memitem:a69d917b47799f63fc588bf294fa71483"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a69d917b47799f63fc588bf294fa71483"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a69d917b47799f63fc588bf294fa71483">GetBool</a> () const </td></tr>
-<tr class="memdesc:a69d917b47799f63fc588bf294fa71483"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set boolean value. <br /></td></tr>
-<tr class="separator:a69d917b47799f63fc588bf294fa71483"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a78d80b935babeedbfa71914a8fe5baa7"><td class="memItemLeft" align="right" valign="top"><a id="a78d80b935babeedbfa71914a8fe5baa7"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a78d80b935babeedbfa71914a8fe5baa7">GetBool</a> () const</td></tr>
+<tr class="memdesc:a78d80b935babeedbfa71914a8fe5baa7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set boolean value <br /></td></tr>
+<tr class="separator:a78d80b935babeedbfa71914a8fe5baa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5623c9039977ca0daf394e5c12f10c2d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a5623c9039977ca0daf394e5c12f10c2d">SetBool</a> (bool b)</td></tr>
<tr class="separator:a5623c9039977ca0daf394e5c12f10c2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Object</div></td></tr>
<tr class="memitem:a7cb3cbaefe4fb99aaf9f155fb4ee039b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a7cb3cbaefe4fb99aaf9f155fb4ee039b">SetObject</a> ()</td></tr>
<tr class="memdesc:a7cb3cbaefe4fb99aaf9f155fb4ee039b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as an empty object. <a href="#a7cb3cbaefe4fb99aaf9f155fb4ee039b">更多...</a><br /></td></tr>
<tr class="separator:a7cb3cbaefe4fb99aaf9f155fb4ee039b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acf5019b9002ebfd66a1191d19e986c7b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf5019b9002ebfd66a1191d19e986c7b"></a>
-<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#acf5019b9002ebfd66a1191d19e986c7b">MemberCount</a> () const </td></tr>
-<tr class="memdesc:acf5019b9002ebfd66a1191d19e986c7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of members in the object. <br /></td></tr>
-<tr class="separator:acf5019b9002ebfd66a1191d19e986c7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1f28a345c9b9c93c76abf695669e4378"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f28a345c9b9c93c76abf695669e4378"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a1f28a345c9b9c93c76abf695669e4378">ObjectEmpty</a> () const </td></tr>
-<tr class="memdesc:a1f28a345c9b9c93c76abf695669e4378"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the object is empty. <br /></td></tr>
-<tr class="separator:a1f28a345c9b9c93c76abf695669e4378"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8b7e47c57a20d0de0cd19eee799ebd88"><td class="memItemLeft" align="right" valign="top"><a id="a8b7e47c57a20d0de0cd19eee799ebd88"></a>
+<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a8b7e47c57a20d0de0cd19eee799ebd88">MemberCount</a> () const</td></tr>
+<tr class="memdesc:a8b7e47c57a20d0de0cd19eee799ebd88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of members in the object. <br /></td></tr>
+<tr class="separator:a8b7e47c57a20d0de0cd19eee799ebd88"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1f4835373e05abae52b91e1c6b7ec92c"><td class="memItemLeft" align="right" valign="top"><a id="a1f4835373e05abae52b91e1c6b7ec92c"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a1f4835373e05abae52b91e1c6b7ec92c">ObjectEmpty</a> () const</td></tr>
+<tr class="memdesc:a1f4835373e05abae52b91e1c6b7ec92c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the object is empty. <br /></td></tr>
+<tr class="separator:a1f4835373e05abae52b91e1c6b7ec92c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ec7fc7f221306925c7674dccbe02b07"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:a8ec7fc7f221306925c7674dccbe02b07"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a8ec7fc7f221306925c7674dccbe02b07">operator[]</a> (T *name)</td></tr>
<tr class="memdesc:a8ec7fc7f221306925c7674dccbe02b07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a value from an object associated with the name. <a href="#a8ec7fc7f221306925c7674dccbe02b07">更多...</a><br /></td></tr>
<tr class="separator:a8ec7fc7f221306925c7674dccbe02b07"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a015a8559e69e0e6237ec5ce2f0b38f43"><td class="memTemplParams" colspan="2"><a class="anchor" id="a015a8559e69e0e6237ec5ce2f0b38f43"></a>
+<tr class="memitem:a408ab1a7454dfa54917b92195f81622b"><td class="memTemplParams" colspan="2"><a id="a408ab1a7454dfa54917b92195f81622b"></a>
template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a015a8559e69e0e6237ec5ce2f0b38f43"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>operator[]</b> (T *name) const </td></tr>
-<tr class="separator:a015a8559e69e0e6237ec5ce2f0b38f43"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a408ab1a7454dfa54917b92195f81622b"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>operator[]</b> (T *name) const</td></tr>
+<tr class="separator:a408ab1a7454dfa54917b92195f81622b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa62b57746c96ce3d264b2fe178196062"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
<tr class="memitem:aa62b57746c96ce3d264b2fe178196062"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aa62b57746c96ce3d264b2fe178196062">operator[]</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name)</td></tr>
<tr class="memdesc:aa62b57746c96ce3d264b2fe178196062"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a value from an object associated with the name. <a href="#aa62b57746c96ce3d264b2fe178196062">更多...</a><br /></td></tr>
<tr class="separator:aa62b57746c96ce3d264b2fe178196062"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8f135403c71fa69ba164f019e1a51fd0"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8f135403c71fa69ba164f019e1a51fd0"></a>
+<tr class="memitem:a295506a024a28d02a2ddae9d0e47c58b"><td class="memTemplParams" colspan="2"><a id="a295506a024a28d02a2ddae9d0e47c58b"></a>
template&lt;typename SourceAllocator &gt; </td></tr>
-<tr class="memitem:a8f135403c71fa69ba164f019e1a51fd0"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>operator[]</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name) const </td></tr>
-<tr class="separator:a8f135403c71fa69ba164f019e1a51fd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4d337239ee3e2096462f6a36b9ab0811"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4d337239ee3e2096462f6a36b9ab0811"></a>
+<tr class="memitem:a295506a024a28d02a2ddae9d0e47c58b"><td class="memTemplItemLeft" align="right" valign="top">const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>operator[]</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name) const</td></tr>
+<tr class="separator:a295506a024a28d02a2ddae9d0e47c58b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4d337239ee3e2096462f6a36b9ab0811"><td class="memItemLeft" align="right" valign="top"><a id="a4d337239ee3e2096462f6a36b9ab0811"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a4d337239ee3e2096462f6a36b9ab0811">operator[]</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name)</td></tr>
<tr class="memdesc:a4d337239ee3e2096462f6a36b9ab0811"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a value from an object associated with name (string object). <br /></td></tr>
<tr class="separator:a4d337239ee3e2096462f6a36b9ab0811"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4c05202c7f49309c9faffe98ff1e5878"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c05202c7f49309c9faffe98ff1e5878"></a>
-const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name) const </td></tr>
-<tr class="separator:a4c05202c7f49309c9faffe98ff1e5878"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a469c0cc3e72f846757fb64fa52fafee5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a469c0cc3e72f846757fb64fa52fafee5">MemberBegin</a> () const </td></tr>
-<tr class="memdesc:a469c0cc3e72f846757fb64fa52fafee5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Const member iterator. <a href="#a469c0cc3e72f846757fb64fa52fafee5">更多...</a><br /></td></tr>
-<tr class="separator:a469c0cc3e72f846757fb64fa52fafee5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a88d2c5b861cd8a6a14976456dfbc1f64"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a88d2c5b861cd8a6a14976456dfbc1f64">MemberEnd</a> () const </td></tr>
-<tr class="memdesc:a88d2c5b861cd8a6a14976456dfbc1f64"><td class="mdescLeft">&#160;</td><td class="mdescRight">Const <em>past-the-end</em> member iterator. <a href="#a88d2c5b861cd8a6a14976456dfbc1f64">更多...</a><br /></td></tr>
-<tr class="separator:a88d2c5b861cd8a6a14976456dfbc1f64"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a66b362b364e57f17ae56ea1d41eb4883"><td class="memItemLeft" align="right" valign="top"><a id="a66b362b364e57f17ae56ea1d41eb4883"></a>
+const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name) const</td></tr>
+<tr class="separator:a66b362b364e57f17ae56ea1d41eb4883"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae89a77887aa3eb1f1f913727cbff6786"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ae89a77887aa3eb1f1f913727cbff6786">MemberBegin</a> () const</td></tr>
+<tr class="memdesc:ae89a77887aa3eb1f1f913727cbff6786"><td class="mdescLeft">&#160;</td><td class="mdescRight">Const member iterator <a href="#ae89a77887aa3eb1f1f913727cbff6786">更多...</a><br /></td></tr>
+<tr class="separator:ae89a77887aa3eb1f1f913727cbff6786"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a34ee3d75a7aa308043fb34b0743bfe7c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c">MemberEnd</a> () const</td></tr>
+<tr class="memdesc:a34ee3d75a7aa308043fb34b0743bfe7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Const <em>past-the-end</em> member iterator <a href="#a34ee3d75a7aa308043fb34b0743bfe7c">更多...</a><br /></td></tr>
+<tr class="separator:a34ee3d75a7aa308043fb34b0743bfe7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93f0f317f397c36a24a0f3c32648623a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a">MemberBegin</a> ()</td></tr>
-<tr class="memdesc:a93f0f317f397c36a24a0f3c32648623a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Member iterator. <a href="#a93f0f317f397c36a24a0f3c32648623a">更多...</a><br /></td></tr>
+<tr class="memdesc:a93f0f317f397c36a24a0f3c32648623a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Member iterator <a href="#a93f0f317f397c36a24a0f3c32648623a">更多...</a><br /></td></tr>
<tr class="separator:a93f0f317f397c36a24a0f3c32648623a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb109ae9f12615efadf9277cb5e9c4ee"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee">MemberEnd</a> ()</td></tr>
<tr class="memdesc:adb109ae9f12615efadf9277cb5e9c4ee"><td class="mdescLeft">&#160;</td><td class="mdescRight"><em>Past-the-end</em> member iterator <a href="#adb109ae9f12615efadf9277cb5e9c4ee">更多...</a><br /></td></tr>
<tr class="separator:adb109ae9f12615efadf9277cb5e9c4ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af17b9b6ba6a9fb4e02d2dced5aa0ee0c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#af17b9b6ba6a9fb4e02d2dced5aa0ee0c">HasMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *name) const </td></tr>
-<tr class="memdesc:af17b9b6ba6a9fb4e02d2dced5aa0ee0c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a member exists in the object. <a href="#af17b9b6ba6a9fb4e02d2dced5aa0ee0c">更多...</a><br /></td></tr>
-<tr class="separator:af17b9b6ba6a9fb4e02d2dced5aa0ee0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afb1942ef13566484e1806689834a053f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#afb1942ef13566484e1806689834a053f">HasMember</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name) const </td></tr>
-<tr class="memdesc:afb1942ef13566484e1806689834a053f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a member exists in the object with string object. <a href="#afb1942ef13566484e1806689834a053f">更多...</a><br /></td></tr>
-<tr class="separator:afb1942ef13566484e1806689834a053f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a548e6c8a99c525573d933933610977cb"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
-<tr class="memitem:a548e6c8a99c525573d933933610977cb"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a548e6c8a99c525573d933933610977cb">HasMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name) const </td></tr>
-<tr class="memdesc:a548e6c8a99c525573d933933610977cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a member exists in the object with <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> name. <a href="#a548e6c8a99c525573d933933610977cb">更多...</a><br /></td></tr>
-<tr class="separator:a548e6c8a99c525573d933933610977cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa78e2eb30c6b918826eccf03f04f166b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b">HasMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *name) const</td></tr>
+<tr class="memdesc:aa78e2eb30c6b918826eccf03f04f166b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a member exists in the object. <a href="#aa78e2eb30c6b918826eccf03f04f166b">更多...</a><br /></td></tr>
+<tr class="separator:aa78e2eb30c6b918826eccf03f04f166b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9b3b30acbe60d7a5b105afa05c1ddfb0"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a9b3b30acbe60d7a5b105afa05c1ddfb0">HasMember</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name) const</td></tr>
+<tr class="memdesc:a9b3b30acbe60d7a5b105afa05c1ddfb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a member exists in the object with string object. <a href="#a9b3b30acbe60d7a5b105afa05c1ddfb0">更多...</a><br /></td></tr>
+<tr class="separator:a9b3b30acbe60d7a5b105afa05c1ddfb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a794129b8adffb97d123306a0c0ccaf71"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
+<tr class="memitem:a794129b8adffb97d123306a0c0ccaf71"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a794129b8adffb97d123306a0c0ccaf71">HasMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name) const</td></tr>
+<tr class="memdesc:a794129b8adffb97d123306a0c0ccaf71"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a member exists in the object with <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> name. <a href="#a794129b8adffb97d123306a0c0ccaf71">更多...</a><br /></td></tr>
+<tr class="separator:a794129b8adffb97d123306a0c0ccaf71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad22fdeac87ec6c370dd43075d3586811"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811">FindMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *name)</td></tr>
<tr class="memdesc:ad22fdeac87ec6c370dd43075d3586811"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find member by name. <a href="#ad22fdeac87ec6c370dd43075d3586811">更多...</a><br /></td></tr>
<tr class="separator:ad22fdeac87ec6c370dd43075d3586811"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aad5c657dc7d79e128bec55eddc5a4164"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aad5c657dc7d79e128bec55eddc5a4164"></a>
-<a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>FindMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *name) const </td></tr>
-<tr class="separator:aad5c657dc7d79e128bec55eddc5a4164"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4960b901fdd3e8f7bf766e471390a0b0"><td class="memItemLeft" align="right" valign="top"><a id="a4960b901fdd3e8f7bf766e471390a0b0"></a>
+<a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>FindMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *name) const</td></tr>
+<tr class="separator:a4960b901fdd3e8f7bf766e471390a0b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d75bf0c6c0fa4f8d340a4236e98539b"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
<tr class="memitem:a8d75bf0c6c0fa4f8d340a4236e98539b"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a8d75bf0c6c0fa4f8d340a4236e98539b">FindMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name)</td></tr>
<tr class="memdesc:a8d75bf0c6c0fa4f8d340a4236e98539b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find member by name. <a href="#a8d75bf0c6c0fa4f8d340a4236e98539b">更多...</a><br /></td></tr>
<tr class="separator:a8d75bf0c6c0fa4f8d340a4236e98539b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af24703a7474efe0998a35002a24fe622"><td class="memTemplParams" colspan="2"><a class="anchor" id="af24703a7474efe0998a35002a24fe622"></a>
+<tr class="memitem:a90916413828ce8da6868051236313583"><td class="memTemplParams" colspan="2"><a id="a90916413828ce8da6868051236313583"></a>
template&lt;typename SourceAllocator &gt; </td></tr>
-<tr class="memitem:af24703a7474efe0998a35002a24fe622"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><b>FindMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name) const </td></tr>
-<tr class="separator:af24703a7474efe0998a35002a24fe622"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a90916413828ce8da6868051236313583"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memTemplItemRight" valign="bottom"><b>FindMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name) const</td></tr>
+<tr class="separator:a90916413828ce8da6868051236313583"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a278b420ea75b0ec18d88d4c9e9199d62"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a278b420ea75b0ec18d88d4c9e9199d62">FindMember</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name)</td></tr>
<tr class="memdesc:a278b420ea75b0ec18d88d4c9e9199d62"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find member by string object name. <a href="#a278b420ea75b0ec18d88d4c9e9199d62">更多...</a><br /></td></tr>
<tr class="separator:a278b420ea75b0ec18d88d4c9e9199d62"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad2b3832cef0c74490de72954f8891a90"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad2b3832cef0c74490de72954f8891a90"></a>
-<a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>FindMember</b> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name) const </td></tr>
-<tr class="separator:ad2b3832cef0c74490de72954f8891a90"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac38ba24b67587939ff4d76ab65340d11"><td class="memItemLeft" align="right" valign="top"><a id="ac38ba24b67587939ff4d76ab65340d11"></a>
+<a class="el" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><b>FindMember</b> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name) const</td></tr>
+<tr class="separator:ac38ba24b67587939ff4d76ab65340d11"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab018d734d189532b27943bc45776ba68"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68">AddMember</a> (<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;name, <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;value, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
<tr class="memdesc:ab018d734d189532b27943bc45776ba68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a member (name-value pair) to the object. <a href="#ab018d734d189532b27943bc45776ba68">更多...</a><br /></td></tr>
<tr class="separator:ab018d734d189532b27943bc45776ba68"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -341,10 +332,10 @@ template&lt;typename SourceAllocator &gt; </td></tr>
<tr class="memitem:aa60074f72a6d1651828a104b0c6387b1"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aa60074f72a6d1651828a104b0c6387b1">RemoveMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *name)</td></tr>
<tr class="memdesc:aa60074f72a6d1651828a104b0c6387b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a member in object by its name. <a href="#aa60074f72a6d1651828a104b0c6387b1">更多...</a><br /></td></tr>
<tr class="separator:aa60074f72a6d1651828a104b0c6387b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a52b7b54f6fe4f4885690f6fc60862f53"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a52b7b54f6fe4f4885690f6fc60862f53"></a>
+<tr class="memitem:a52b7b54f6fe4f4885690f6fc60862f53"><td class="memItemLeft" align="right" valign="top"><a id="a52b7b54f6fe4f4885690f6fc60862f53"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>RemoveMember</b> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name)</td></tr>
<tr class="separator:a52b7b54f6fe4f4885690f6fc60862f53"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a403b63e001a16eeff42348a736b9f749"><td class="memTemplParams" colspan="2"><a class="anchor" id="a403b63e001a16eeff42348a736b9f749"></a>
+<tr class="memitem:a403b63e001a16eeff42348a736b9f749"><td class="memTemplParams" colspan="2"><a id="a403b63e001a16eeff42348a736b9f749"></a>
template&lt;typename SourceAllocator &gt; </td></tr>
<tr class="memitem:a403b63e001a16eeff42348a736b9f749"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>RemoveMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name)</td></tr>
<tr class="separator:a403b63e001a16eeff42348a736b9f749"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -360,56 +351,56 @@ template&lt;typename SourceAllocator &gt; </td></tr>
<tr class="memitem:ac51a3b3046aaa12aa1d88ac876a28cec"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ac51a3b3046aaa12aa1d88ac876a28cec">EraseMember</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *name)</td></tr>
<tr class="memdesc:ac51a3b3046aaa12aa1d88ac876a28cec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Erase a member in object by its name. <a href="#ac51a3b3046aaa12aa1d88ac876a28cec">更多...</a><br /></td></tr>
<tr class="separator:ac51a3b3046aaa12aa1d88ac876a28cec"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af930563f804086df25f70bb5f1de8e6a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af930563f804086df25f70bb5f1de8e6a"></a>
+<tr class="memitem:af930563f804086df25f70bb5f1de8e6a"><td class="memItemLeft" align="right" valign="top"><a id="af930563f804086df25f70bb5f1de8e6a"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EraseMember</b> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;name)</td></tr>
<tr class="separator:af930563f804086df25f70bb5f1de8e6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a27db22089fc69aacda8309c593ed9812"><td class="memTemplParams" colspan="2"><a class="anchor" id="a27db22089fc69aacda8309c593ed9812"></a>
+<tr class="memitem:a27db22089fc69aacda8309c593ed9812"><td class="memTemplParams" colspan="2"><a id="a27db22089fc69aacda8309c593ed9812"></a>
template&lt;typename SourceAllocator &gt; </td></tr>
<tr class="memitem:a27db22089fc69aacda8309c593ed9812"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>EraseMember</b> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;name)</td></tr>
<tr class="separator:a27db22089fc69aacda8309c593ed9812"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a538446f8bdb8e7765d1705d8d157358a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a538446f8bdb8e7765d1705d8d157358a"></a>
+<tr class="memitem:a538446f8bdb8e7765d1705d8d157358a"><td class="memItemLeft" align="right" valign="top"><a id="a538446f8bdb8e7765d1705d8d157358a"></a>
<a class="el" href="classrapidjson_1_1_generic_object.html">Object</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetObject</b> ()</td></tr>
<tr class="separator:a538446f8bdb8e7765d1705d8d157358a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0faeebacf8592f438654224f2b9f2fe7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0faeebacf8592f438654224f2b9f2fe7"></a>
-<a class="el" href="classrapidjson_1_1_generic_object.html">ConstObject</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetObject</b> () const </td></tr>
-<tr class="separator:a0faeebacf8592f438654224f2b9f2fe7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a35d6a245412e8ce81c5b5d6b9d9e881c"><td class="memItemLeft" align="right" valign="top"><a id="a35d6a245412e8ce81c5b5d6b9d9e881c"></a>
+<a class="el" href="classrapidjson_1_1_generic_object.html">ConstObject</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetObject</b> () const</td></tr>
+<tr class="separator:a35d6a245412e8ce81c5b5d6b9d9e881c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Array</div></td></tr>
<tr class="memitem:a25069c76d045b058e54835d8c467c789"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a25069c76d045b058e54835d8c467c789">SetArray</a> ()</td></tr>
<tr class="memdesc:a25069c76d045b058e54835d8c467c789"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as an empty array. <a href="#a25069c76d045b058e54835d8c467c789">更多...</a><br /></td></tr>
<tr class="separator:a25069c76d045b058e54835d8c467c789"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2e6e849cfb368a3fa708f8bcf1d56ec9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e6e849cfb368a3fa708f8bcf1d56ec9"></a>
-<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a2e6e849cfb368a3fa708f8bcf1d56ec9">Size</a> () const </td></tr>
-<tr class="memdesc:a2e6e849cfb368a3fa708f8bcf1d56ec9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of elements in array. <br /></td></tr>
-<tr class="separator:a2e6e849cfb368a3fa708f8bcf1d56ec9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6cbb8a305fdc40beb83bee2b99ac5b59"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6cbb8a305fdc40beb83bee2b99ac5b59"></a>
-<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a6cbb8a305fdc40beb83bee2b99ac5b59">Capacity</a> () const </td></tr>
-<tr class="memdesc:a6cbb8a305fdc40beb83bee2b99ac5b59"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the capacity of array. <br /></td></tr>
-<tr class="separator:a6cbb8a305fdc40beb83bee2b99ac5b59"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a08bf77a430b865404c57a93d8f0f6d3d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a08bf77a430b865404c57a93d8f0f6d3d"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a08bf77a430b865404c57a93d8f0f6d3d">Empty</a> () const </td></tr>
-<tr class="memdesc:a08bf77a430b865404c57a93d8f0f6d3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the array is empty. <br /></td></tr>
-<tr class="separator:a08bf77a430b865404c57a93d8f0f6d3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a799a8a2503989f486f3fc7a660266555"><td class="memItemLeft" align="right" valign="top"><a id="a799a8a2503989f486f3fc7a660266555"></a>
+<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a799a8a2503989f486f3fc7a660266555">Size</a> () const</td></tr>
+<tr class="memdesc:a799a8a2503989f486f3fc7a660266555"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of elements in array. <br /></td></tr>
+<tr class="separator:a799a8a2503989f486f3fc7a660266555"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a812e5c07f74a90566e7636330740eb6a"><td class="memItemLeft" align="right" valign="top"><a id="a812e5c07f74a90566e7636330740eb6a"></a>
+<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a812e5c07f74a90566e7636330740eb6a">Capacity</a> () const</td></tr>
+<tr class="memdesc:a812e5c07f74a90566e7636330740eb6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the capacity of array. <br /></td></tr>
+<tr class="separator:a812e5c07f74a90566e7636330740eb6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad08a62c65a793ab1d0abe7eac03776fd"><td class="memItemLeft" align="right" valign="top"><a id="ad08a62c65a793ab1d0abe7eac03776fd"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad08a62c65a793ab1d0abe7eac03776fd">Empty</a> () const</td></tr>
+<tr class="memdesc:ad08a62c65a793ab1d0abe7eac03776fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the array is empty. <br /></td></tr>
+<tr class="separator:ad08a62c65a793ab1d0abe7eac03776fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa56b69bac5423622eff6998ce4802106"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aa56b69bac5423622eff6998ce4802106">Clear</a> ()</td></tr>
<tr class="memdesc:aa56b69bac5423622eff6998ce4802106"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove all elements in the array. <a href="#aa56b69bac5423622eff6998ce4802106">更多...</a><br /></td></tr>
<tr class="separator:aa56b69bac5423622eff6998ce4802106"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc312de070d03a63e6c692c9c61db156"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#adc312de070d03a63e6c692c9c61db156">operator[]</a> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index)</td></tr>
<tr class="memdesc:adc312de070d03a63e6c692c9c61db156"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get an element from array by index. <a href="#adc312de070d03a63e6c692c9c61db156">更多...</a><br /></td></tr>
<tr class="separator:adc312de070d03a63e6c692c9c61db156"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0b02962601636f6b040c6451ec7a3778"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b02962601636f6b040c6451ec7a3778"></a>
-const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) const </td></tr>
-<tr class="separator:a0b02962601636f6b040c6451ec7a3778"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1bac9a1db05bb5825bc0adaeabf4775b"><td class="memItemLeft" align="right" valign="top"><a id="a1bac9a1db05bb5825bc0adaeabf4775b"></a>
+const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) const</td></tr>
+<tr class="separator:a1bac9a1db05bb5825bc0adaeabf4775b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d1040c479d89edb261db86400ebe603"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a06ce0e14ec83b53c83e1b1699b53a25e">ValueIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603">Begin</a> ()</td></tr>
-<tr class="memdesc:a8d1040c479d89edb261db86400ebe603"><td class="mdescLeft">&#160;</td><td class="mdescRight">Element iterator. <a href="#a8d1040c479d89edb261db86400ebe603">更多...</a><br /></td></tr>
+<tr class="memdesc:a8d1040c479d89edb261db86400ebe603"><td class="mdescLeft">&#160;</td><td class="mdescRight">Element iterator <a href="#a8d1040c479d89edb261db86400ebe603">更多...</a><br /></td></tr>
<tr class="separator:a8d1040c479d89edb261db86400ebe603"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf58b9337ccc0cdf16aa9634c4645109"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a06ce0e14ec83b53c83e1b1699b53a25e">ValueIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109">End</a> ()</td></tr>
<tr class="memdesc:aaf58b9337ccc0cdf16aa9634c4645109"><td class="mdescLeft">&#160;</td><td class="mdescRight"><em>Past-the-end</em> element iterator <a href="#aaf58b9337ccc0cdf16aa9634c4645109">更多...</a><br /></td></tr>
<tr class="separator:aaf58b9337ccc0cdf16aa9634c4645109"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abc8945d3411c6ce583d322753ce028e1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#abc8945d3411c6ce583d322753ce028e1">Begin</a> () const </td></tr>
-<tr class="memdesc:abc8945d3411c6ce583d322753ce028e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant element iterator. <a href="#abc8945d3411c6ce583d322753ce028e1">更多...</a><br /></td></tr>
-<tr class="separator:abc8945d3411c6ce583d322753ce028e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad2d9786831d721cf8f1bf0dbdf86404a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad2d9786831d721cf8f1bf0dbdf86404a">End</a> () const </td></tr>
-<tr class="memdesc:ad2d9786831d721cf8f1bf0dbdf86404a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant <em>past-the-end</em> element iterator. <a href="#ad2d9786831d721cf8f1bf0dbdf86404a">更多...</a><br /></td></tr>
-<tr class="separator:ad2d9786831d721cf8f1bf0dbdf86404a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a07d947971c59c9ce884b3c5205c9238f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a07d947971c59c9ce884b3c5205c9238f">Begin</a> () const</td></tr>
+<tr class="memdesc:a07d947971c59c9ce884b3c5205c9238f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant element iterator <a href="#a07d947971c59c9ce884b3c5205c9238f">更多...</a><br /></td></tr>
+<tr class="separator:a07d947971c59c9ce884b3c5205c9238f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abdd6a3b703a03aada4c186a2365698e7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#abdd6a3b703a03aada4c186a2365698e7">End</a> () const</td></tr>
+<tr class="memdesc:abdd6a3b703a03aada4c186a2365698e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constant <em>past-the-end</em> element iterator <a href="#abdd6a3b703a03aada4c186a2365698e7">更多...</a><br /></td></tr>
+<tr class="separator:abdd6a3b703a03aada4c186a2365698e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17971ba2bcd4eb1716098fdfe9182386"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a17971ba2bcd4eb1716098fdfe9182386">Reserve</a> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> newCapacity, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
<tr class="memdesc:a17971ba2bcd4eb1716098fdfe9182386"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request the array to have enough capacity to store elements. <a href="#a17971ba2bcd4eb1716098fdfe9182386">更多...</a><br /></td></tr>
<tr class="separator:a17971ba2bcd4eb1716098fdfe9182386"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -432,76 +423,76 @@ const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a
<tr class="memitem:a916f443e02f9379d8fbde49a4d440f61"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#a06ce0e14ec83b53c83e1b1699b53a25e">ValueIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a916f443e02f9379d8fbde49a4d440f61">Erase</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a> first, <a class="el" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a> last)</td></tr>
<tr class="memdesc:a916f443e02f9379d8fbde49a4d440f61"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove elements in the range [first, last) of the array. <a href="#a916f443e02f9379d8fbde49a4d440f61">更多...</a><br /></td></tr>
<tr class="separator:a916f443e02f9379d8fbde49a4d440f61"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a252af37875a1115f107082263af2cb3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a252af37875a1115f107082263af2cb3c"></a>
+<tr class="memitem:a252af37875a1115f107082263af2cb3c"><td class="memItemLeft" align="right" valign="top"><a id="a252af37875a1115f107082263af2cb3c"></a>
<a class="el" href="classrapidjson_1_1_generic_array.html">Array</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetArray</b> ()</td></tr>
<tr class="separator:a252af37875a1115f107082263af2cb3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a66f1a57c68b149a31faa739d51c463ec"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66f1a57c68b149a31faa739d51c463ec"></a>
-<a class="el" href="classrapidjson_1_1_generic_array.html">ConstArray</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetArray</b> () const </td></tr>
-<tr class="separator:a66f1a57c68b149a31faa739d51c463ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ade8d1ca2b8e8afa02cde46e26866440b"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:ade8d1ca2b8e8afa02cde46e26866440b"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ade8d1ca2b8e8afa02cde46e26866440b">Is</a> () const </td></tr>
-<tr class="memdesc:ade8d1ca2b8e8afa02cde46e26866440b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Templated version for checking whether this value is type T. <a href="#ade8d1ca2b8e8afa02cde46e26866440b">更多...</a><br /></td></tr>
-<tr class="separator:ade8d1ca2b8e8afa02cde46e26866440b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a131eda3b3f5e37fca8dff43c77963fad"><td class="memTemplParams" colspan="2"><a class="anchor" id="a131eda3b3f5e37fca8dff43c77963fad"></a>
+<tr class="memitem:a274f975f1a3127746e027c2a90fd101e"><td class="memItemLeft" align="right" valign="top"><a id="a274f975f1a3127746e027c2a90fd101e"></a>
+<a class="el" href="classrapidjson_1_1_generic_array.html">ConstArray</a>&#160;</td><td class="memItemRight" valign="bottom"><b>GetArray</b> () const</td></tr>
+<tr class="separator:a274f975f1a3127746e027c2a90fd101e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acc6b1791cca8daef18521918136264b7"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<tr class="memitem:acc6b1791cca8daef18521918136264b7"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#acc6b1791cca8daef18521918136264b7">Is</a> () const</td></tr>
+<tr class="memdesc:acc6b1791cca8daef18521918136264b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Templated version for checking whether this value is type T. <a href="#acc6b1791cca8daef18521918136264b7">更多...</a><br /></td></tr>
+<tr class="separator:acc6b1791cca8daef18521918136264b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a01b08bc71b07839324b3a1fdc8341712"><td class="memTemplParams" colspan="2"><a id="a01b08bc71b07839324b3a1fdc8341712"></a>
template&lt;typename T &gt; </td></tr>
-<tr class="memitem:a131eda3b3f5e37fca8dff43c77963fad"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Get</b> () const </td></tr>
-<tr class="separator:a131eda3b3f5e37fca8dff43c77963fad"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aaa92aa34a1b7ba91980a461bd526a4db"><td class="memTemplParams" colspan="2"><a class="anchor" id="aaa92aa34a1b7ba91980a461bd526a4db"></a>
+<tr class="memitem:a01b08bc71b07839324b3a1fdc8341712"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Get</b> () const</td></tr>
+<tr class="separator:a01b08bc71b07839324b3a1fdc8341712"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaa92aa34a1b7ba91980a461bd526a4db"><td class="memTemplParams" colspan="2"><a id="aaa92aa34a1b7ba91980a461bd526a4db"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:aaa92aa34a1b7ba91980a461bd526a4db"><td class="memTemplItemLeft" align="right" valign="top">T&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Get</b> ()</td></tr>
<tr class="separator:aaa92aa34a1b7ba91980a461bd526a4db"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8b508fecfecbecb418c999597d83d384"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8b508fecfecbecb418c999597d83d384"></a>
+<tr class="memitem:a8b508fecfecbecb418c999597d83d384"><td class="memTemplParams" colspan="2"><a id="a8b508fecfecbecb418c999597d83d384"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a8b508fecfecbecb418c999597d83d384"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Set</b> (const T &amp;data)</td></tr>
<tr class="separator:a8b508fecfecbecb418c999597d83d384"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae5576f5bb31c707ffd8ce6d6c58135a5"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae5576f5bb31c707ffd8ce6d6c58135a5"></a>
+<tr class="memitem:ae5576f5bb31c707ffd8ce6d6c58135a5"><td class="memTemplParams" colspan="2"><a id="ae5576f5bb31c707ffd8ce6d6c58135a5"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:ae5576f5bb31c707ffd8ce6d6c58135a5"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Set</b> (const T &amp;data, <a class="el" href="classrapidjson_1_1_generic_value.html#a5d47340c96346c5028fee4c9068d783d">AllocatorType</a> &amp;allocator)</td></tr>
<tr class="separator:ae5576f5bb31c707ffd8ce6d6c58135a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Number</div></td></tr>
-<tr class="memitem:a92991a57de8cf42da2e4efc792acefea"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92991a57de8cf42da2e4efc792acefea"></a>
-int&#160;</td><td class="memItemRight" valign="bottom"><b>GetInt</b> () const </td></tr>
-<tr class="separator:a92991a57de8cf42da2e4efc792acefea"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0cbd9b2bfa0bb7fe196a79703c5f488e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0cbd9b2bfa0bb7fe196a79703c5f488e"></a>
-unsigned&#160;</td><td class="memItemRight" valign="bottom"><b>GetUint</b> () const </td></tr>
-<tr class="separator:a0cbd9b2bfa0bb7fe196a79703c5f488e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a77b677674bc92a6e6a78cc9736a44f1c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a77b677674bc92a6e6a78cc9736a44f1c"></a>
-int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>GetInt64</b> () const </td></tr>
-<tr class="separator:a77b677674bc92a6e6a78cc9736a44f1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a25f0f486ad79b8e42774cb070da836c8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a25f0f486ad79b8e42774cb070da836c8"></a>
-uint64_t&#160;</td><td class="memItemRight" valign="bottom"><b>GetUint64</b> () const </td></tr>
-<tr class="separator:a25f0f486ad79b8e42774cb070da836c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa059dee923cc0446752e321ff70936a6"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aa059dee923cc0446752e321ff70936a6">GetDouble</a> () const </td></tr>
-<tr class="memdesc:aa059dee923cc0446752e321ff70936a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the value as double type. <a href="#aa059dee923cc0446752e321ff70936a6">更多...</a><br /></td></tr>
-<tr class="separator:aa059dee923cc0446752e321ff70936a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0eda9834f241e5c5b23161a7ee33758b"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a0eda9834f241e5c5b23161a7ee33758b">GetFloat</a> () const </td></tr>
-<tr class="memdesc:a0eda9834f241e5c5b23161a7ee33758b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the value as float type. <a href="#a0eda9834f241e5c5b23161a7ee33758b">更多...</a><br /></td></tr>
-<tr class="separator:a0eda9834f241e5c5b23161a7ee33758b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aca0cff58ccd1d50ddce2eb2182e322c2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca0cff58ccd1d50ddce2eb2182e322c2"></a>
+<tr class="memitem:a5f2396316c5145cb41ebbccfb03100ba"><td class="memItemLeft" align="right" valign="top"><a id="a5f2396316c5145cb41ebbccfb03100ba"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>GetInt</b> () const</td></tr>
+<tr class="separator:a5f2396316c5145cb41ebbccfb03100ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa1ab35be7c796a75dec562844a1917e6"><td class="memItemLeft" align="right" valign="top"><a id="aa1ab35be7c796a75dec562844a1917e6"></a>
+unsigned&#160;</td><td class="memItemRight" valign="bottom"><b>GetUint</b> () const</td></tr>
+<tr class="separator:aa1ab35be7c796a75dec562844a1917e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a01b8758dbfece60480392667795be717"><td class="memItemLeft" align="right" valign="top"><a id="a01b8758dbfece60480392667795be717"></a>
+int64_t&#160;</td><td class="memItemRight" valign="bottom"><b>GetInt64</b> () const</td></tr>
+<tr class="separator:a01b8758dbfece60480392667795be717"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aac009c514da7e112aa8a9054c4d3e247"><td class="memItemLeft" align="right" valign="top"><a id="aac009c514da7e112aa8a9054c4d3e247"></a>
+uint64_t&#160;</td><td class="memItemRight" valign="bottom"><b>GetUint64</b> () const</td></tr>
+<tr class="separator:aac009c514da7e112aa8a9054c4d3e247"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa27d086d265f0ce447b15b15f0a2ed6e"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aa27d086d265f0ce447b15b15f0a2ed6e">GetDouble</a> () const</td></tr>
+<tr class="memdesc:aa27d086d265f0ce447b15b15f0a2ed6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the value as double type. <a href="#aa27d086d265f0ce447b15b15f0a2ed6e">更多...</a><br /></td></tr>
+<tr class="separator:aa27d086d265f0ce447b15b15f0a2ed6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a573712808dd5d8814c103cf55fd761b4"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a573712808dd5d8814c103cf55fd761b4">GetFloat</a> () const</td></tr>
+<tr class="memdesc:a573712808dd5d8814c103cf55fd761b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the value as float type. <a href="#a573712808dd5d8814c103cf55fd761b4">更多...</a><br /></td></tr>
+<tr class="separator:a573712808dd5d8814c103cf55fd761b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aca0cff58ccd1d50ddce2eb2182e322c2"><td class="memItemLeft" align="right" valign="top"><a id="aca0cff58ccd1d50ddce2eb2182e322c2"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>SetInt</b> (int i)</td></tr>
<tr class="separator:aca0cff58ccd1d50ddce2eb2182e322c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0e173c8bb01a536c94529d4e3f9bfc67"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0e173c8bb01a536c94529d4e3f9bfc67"></a>
+<tr class="memitem:a0e173c8bb01a536c94529d4e3f9bfc67"><td class="memItemLeft" align="right" valign="top"><a id="a0e173c8bb01a536c94529d4e3f9bfc67"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>SetUint</b> (unsigned u)</td></tr>
<tr class="separator:a0e173c8bb01a536c94529d4e3f9bfc67"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2ca9400394581ce55c3e4a9633ffa33c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ca9400394581ce55c3e4a9633ffa33c"></a>
+<tr class="memitem:a2ca9400394581ce55c3e4a9633ffa33c"><td class="memItemLeft" align="right" valign="top"><a id="a2ca9400394581ce55c3e4a9633ffa33c"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>SetInt64</b> (int64_t i64)</td></tr>
<tr class="separator:a2ca9400394581ce55c3e4a9633ffa33c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8c89bdc7f8dd14e4ab974e587b99405a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c89bdc7f8dd14e4ab974e587b99405a"></a>
+<tr class="memitem:a8c89bdc7f8dd14e4ab974e587b99405a"><td class="memItemLeft" align="right" valign="top"><a id="a8c89bdc7f8dd14e4ab974e587b99405a"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>SetUint64</b> (uint64_t u64)</td></tr>
<tr class="separator:a8c89bdc7f8dd14e4ab974e587b99405a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af5ada19ad065eeecc7112409bc8d9bbb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af5ada19ad065eeecc7112409bc8d9bbb"></a>
+<tr class="memitem:af5ada19ad065eeecc7112409bc8d9bbb"><td class="memItemLeft" align="right" valign="top"><a id="af5ada19ad065eeecc7112409bc8d9bbb"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>SetDouble</b> (double d)</td></tr>
<tr class="separator:af5ada19ad065eeecc7112409bc8d9bbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a67f32cbe6eb699f95391a58efd39a070"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a67f32cbe6eb699f95391a58efd39a070"></a>
+<tr class="memitem:a67f32cbe6eb699f95391a58efd39a070"><td class="memItemLeft" align="right" valign="top"><a id="a67f32cbe6eb699f95391a58efd39a070"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>SetFloat</b> (float f)</td></tr>
<tr class="separator:a67f32cbe6eb699f95391a58efd39a070"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">String</div></td></tr>
-<tr class="memitem:aab763460a97e8944ddedf51203581a3b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aab763460a97e8944ddedf51203581a3b"></a>
-const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>GetString</b> () const </td></tr>
-<tr class="separator:aab763460a97e8944ddedf51203581a3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a979c4ba6dd2a311be837ae083423aca8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8">GetStringLength</a> () const </td></tr>
-<tr class="memdesc:a979c4ba6dd2a311be837ae083423aca8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the length of string. <a href="#a979c4ba6dd2a311be837ae083423aca8">更多...</a><br /></td></tr>
-<tr class="separator:a979c4ba6dd2a311be837ae083423aca8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a97ef0b0785542eaa8e2337161c358c07"><td class="memItemLeft" align="right" valign="top"><a id="a97ef0b0785542eaa8e2337161c358c07"></a>
+const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>GetString</b> () const</td></tr>
+<tr class="separator:a97ef0b0785542eaa8e2337161c358c07"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a18599e0d1a7e70a11b35f5e219390fea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea">GetStringLength</a> () const</td></tr>
+<tr class="memdesc:a18599e0d1a7e70a11b35f5e219390fea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the length of string. <a href="#a18599e0d1a7e70a11b35f5e219390fea">更多...</a><br /></td></tr>
+<tr class="separator:a18599e0d1a7e70a11b35f5e219390fea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb91480cc6242ca96ffc603e649c319f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f">SetString</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *s, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length)</td></tr>
<tr class="memdesc:afb91480cc6242ca96ffc603e649c319f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set this value as a string without copying source string. <a href="#afb91480cc6242ca96ffc603e649c319f">更多...</a><br /></td></tr>
<tr class="separator:afb91480cc6242ca96ffc603e649c319f"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -523,18 +514,18 @@ const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
友元</h2></td></tr>
-<tr class="memitem:a899449e1a645b5e377af059fb61113d8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a899449e1a645b5e377af059fb61113d8"></a>
+<tr class="memitem:a899449e1a645b5e377af059fb61113d8"><td class="memTemplParams" colspan="2"><a id="a899449e1a645b5e377af059fb61113d8"></a>
template&lt;typename , typename &gt; </td></tr>
<tr class="memitem:a899449e1a645b5e377af059fb61113d8"><td class="memTemplItemLeft" align="right" valign="top">class&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GenericValue</b></td></tr>
<tr class="separator:a899449e1a645b5e377af059fb61113d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab05bc9e52e201a2867ea5bac141ee1ae"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab05bc9e52e201a2867ea5bac141ee1ae"></a>
+<tr class="memitem:ab05bc9e52e201a2867ea5bac141ee1ae"><td class="memTemplParams" colspan="2"><a id="ab05bc9e52e201a2867ea5bac141ee1ae"></a>
template&lt;typename , typename , typename &gt; </td></tr>
<tr class="memitem:ab05bc9e52e201a2867ea5bac141ee1ae"><td class="memTemplItemLeft" align="right" valign="top">class&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GenericDocument</b></td></tr>
<tr class="separator:ab05bc9e52e201a2867ea5bac141ee1ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Constructors and destructor.</h2></td></tr>
-<tr class="memitem:ad1f8199e65662e0d52a13a1577d4e4a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad1f8199e65662e0d52a13a1577d4e4a5"></a>
+<tr class="memitem:ad1f8199e65662e0d52a13a1577d4e4a5"><td class="memItemLeft" align="right" valign="top"><a id="ad1f8199e65662e0d52a13a1577d4e4a5"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad1f8199e65662e0d52a13a1577d4e4a5">GenericValue</a> () RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:ad1f8199e65662e0d52a13a1577d4e4a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor creates a null value. <br /></td></tr>
<tr class="separator:ad1f8199e65662e0d52a13a1577d4e4a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -548,43 +539,43 @@ Constructors and destructor.</h2></td></tr>
<tr class="memitem:ab933ad7ff8c9d08f73cebaecb700dbe9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ab933ad7ff8c9d08f73cebaecb700dbe9">GenericValue</a> (bool b) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:ab933ad7ff8c9d08f73cebaecb700dbe9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for boolean value. <a href="#ab933ad7ff8c9d08f73cebaecb700dbe9">更多...</a><br /></td></tr>
<tr class="separator:ab933ad7ff8c9d08f73cebaecb700dbe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abba0c9ccfd90726f916c36013a2e9e19"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abba0c9ccfd90726f916c36013a2e9e19"></a>
+<tr class="memitem:abba0c9ccfd90726f916c36013a2e9e19"><td class="memItemLeft" align="right" valign="top"><a id="abba0c9ccfd90726f916c36013a2e9e19"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#abba0c9ccfd90726f916c36013a2e9e19">GenericValue</a> (int i) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:abba0c9ccfd90726f916c36013a2e9e19"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for int value. <br /></td></tr>
<tr class="separator:abba0c9ccfd90726f916c36013a2e9e19"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4a8060a42b7953a2981ad892180ca5a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a8060a42b7953a2981ad892180ca5a6"></a>
+<tr class="memitem:a4a8060a42b7953a2981ad892180ca5a6"><td class="memItemLeft" align="right" valign="top"><a id="a4a8060a42b7953a2981ad892180ca5a6"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a4a8060a42b7953a2981ad892180ca5a6">GenericValue</a> (unsigned u) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:a4a8060a42b7953a2981ad892180ca5a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for unsigned value. <br /></td></tr>
<tr class="separator:a4a8060a42b7953a2981ad892180ca5a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acd4ae9a8dba4498d1d7cce6667529bb8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd4ae9a8dba4498d1d7cce6667529bb8"></a>
+<tr class="memitem:acd4ae9a8dba4498d1d7cce6667529bb8"><td class="memItemLeft" align="right" valign="top"><a id="acd4ae9a8dba4498d1d7cce6667529bb8"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#acd4ae9a8dba4498d1d7cce6667529bb8">GenericValue</a> (int64_t i64) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:acd4ae9a8dba4498d1d7cce6667529bb8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for int64_t value. <br /></td></tr>
<tr class="separator:acd4ae9a8dba4498d1d7cce6667529bb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1f125e735577aae64c0306345de45563"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1f125e735577aae64c0306345de45563"></a>
+<tr class="memitem:a1f125e735577aae64c0306345de45563"><td class="memItemLeft" align="right" valign="top"><a id="a1f125e735577aae64c0306345de45563"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a1f125e735577aae64c0306345de45563">GenericValue</a> (uint64_t u64) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:a1f125e735577aae64c0306345de45563"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for uint64_t value. <br /></td></tr>
<tr class="separator:a1f125e735577aae64c0306345de45563"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a71b9e2ec1f7bf9e2f034126ca7b4945a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a71b9e2ec1f7bf9e2f034126ca7b4945a"></a>
+<tr class="memitem:a71b9e2ec1f7bf9e2f034126ca7b4945a"><td class="memItemLeft" align="right" valign="top"><a id="a71b9e2ec1f7bf9e2f034126ca7b4945a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a71b9e2ec1f7bf9e2f034126ca7b4945a">GenericValue</a> (double d) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:a71b9e2ec1f7bf9e2f034126ca7b4945a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for double value. <br /></td></tr>
<tr class="separator:a71b9e2ec1f7bf9e2f034126ca7b4945a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afe94e5e86a5b1a3fb605a9f8422f048b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe94e5e86a5b1a3fb605a9f8422f048b"></a>
+<tr class="memitem:afe94e5e86a5b1a3fb605a9f8422f048b"><td class="memItemLeft" align="right" valign="top"><a id="afe94e5e86a5b1a3fb605a9f8422f048b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#afe94e5e86a5b1a3fb605a9f8422f048b">GenericValue</a> (float f) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:afe94e5e86a5b1a3fb605a9f8422f048b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for float value. <br /></td></tr>
<tr class="separator:afe94e5e86a5b1a3fb605a9f8422f048b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a51e93a4fb57f77a39767acb076bf43c1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a51e93a4fb57f77a39767acb076bf43c1"></a>
+<tr class="memitem:a51e93a4fb57f77a39767acb076bf43c1"><td class="memItemLeft" align="right" valign="top"><a id="a51e93a4fb57f77a39767acb076bf43c1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a51e93a4fb57f77a39767acb076bf43c1">GenericValue</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *s, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:a51e93a4fb57f77a39767acb076bf43c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for constant string (i.e. do not make a copy of string) <br /></td></tr>
<tr class="separator:a51e93a4fb57f77a39767acb076bf43c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a65bfc3073fa80ee5eba8e985abe2f941"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65bfc3073fa80ee5eba8e985abe2f941"></a>
+<tr class="memitem:a65bfc3073fa80ee5eba8e985abe2f941"><td class="memItemLeft" align="right" valign="top"><a id="a65bfc3073fa80ee5eba8e985abe2f941"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a65bfc3073fa80ee5eba8e985abe2f941">GenericValue</a> (<a class="el" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a> s) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:a65bfc3073fa80ee5eba8e985abe2f941"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for constant string (i.e. do not make a copy of string) <br /></td></tr>
<tr class="separator:a65bfc3073fa80ee5eba8e985abe2f941"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad9553bb9ccbfd19547c473a95405a8b2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad9553bb9ccbfd19547c473a95405a8b2"></a>
+<tr class="memitem:ad9553bb9ccbfd19547c473a95405a8b2"><td class="memItemLeft" align="right" valign="top"><a id="ad9553bb9ccbfd19547c473a95405a8b2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad9553bb9ccbfd19547c473a95405a8b2">GenericValue</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *s, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
<tr class="memdesc:ad9553bb9ccbfd19547c473a95405a8b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for copy-string (i.e. do make a copy of string) <br /></td></tr>
<tr class="separator:ad9553bb9ccbfd19547c473a95405a8b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a83ba61e8a5170c2e172fd60ebc11016f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a83ba61e8a5170c2e172fd60ebc11016f"></a>
+<tr class="memitem:a83ba61e8a5170c2e172fd60ebc11016f"><td class="memItemLeft" align="right" valign="top"><a id="a83ba61e8a5170c2e172fd60ebc11016f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a83ba61e8a5170c2e172fd60ebc11016f">GenericValue</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *s, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator)</td></tr>
<tr class="memdesc:a83ba61e8a5170c2e172fd60ebc11016f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor for copy-string (i.e. do make a copy of string) <br /></td></tr>
<tr class="separator:a83ba61e8a5170c2e172fd60ebc11016f"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -618,13 +609,13 @@ Assignment operators</h2></td></tr>
<tr class="separator:ab7446da62fdc61d6d987d508cdb6ac13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9399a2a69444c44a9db2f63c3aa3eae"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
<tr class="memitem:ad9399a2a69444c44a9db2f63c3aa3eae"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae">CopyFrom</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;rhs, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator, bool copyConstStrings=false)</td></tr>
-<tr class="memdesc:ad9399a2a69444c44a9db2f63c3aa3eae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deep-copy assignment from Value. <a href="#ad9399a2a69444c44a9db2f63c3aa3eae">更多...</a><br /></td></tr>
+<tr class="memdesc:ad9399a2a69444c44a9db2f63c3aa3eae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deep-copy assignment from Value <a href="#ad9399a2a69444c44a9db2f63c3aa3eae">更多...</a><br /></td></tr>
<tr class="separator:ad9399a2a69444c44a9db2f63c3aa3eae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06f10ef54f5692ce08206c26624a21db"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db">Swap</a> (<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;other) RAPIDJSON_NOEXCEPT</td></tr>
<tr class="memdesc:a06f10ef54f5692ce08206c26624a21db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exchange the contents of this value with those of other. <a href="#a06f10ef54f5692ce08206c26624a21db">更多...</a><br /></td></tr>
<tr class="separator:a06f10ef54f5692ce08206c26624a21db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07b19e65fb756cae13e5bdc515cfbd4b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b">Move</a> () RAPIDJSON_NOEXCEPT</td></tr>
-<tr class="memdesc:a07b19e65fb756cae13e5bdc515cfbd4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepare Value for move semantics. <a href="#a07b19e65fb756cae13e5bdc515cfbd4b">更多...</a><br /></td></tr>
+<tr class="memdesc:a07b19e65fb756cae13e5bdc515cfbd4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepare Value for move semantics <a href="#a07b19e65fb756cae13e5bdc515cfbd4b">更多...</a><br /></td></tr>
<tr class="separator:a07b19e65fb756cae13e5bdc515cfbd4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
@@ -637,36 +628,36 @@ Equal-to and not-equal-to operators</h2></td></tr>
<tr class="memitem:ae08898bef949f217f0e5d28e19f05992"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ae08898bef949f217f0e5d28e19f05992">operator!=</a> (const T &amp;lhs, const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a> &amp;rhs)</td></tr>
<tr class="memdesc:ae08898bef949f217f0e5d28e19f05992"><td class="mdescLeft">&#160;</td><td class="mdescRight">Not-Equal-to operator with arbitrary types (symmetric version) <a href="#ae08898bef949f217f0e5d28e19f05992">更多...</a><br /></td></tr>
<tr class="separator:ae08898bef949f217f0e5d28e19f05992"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afbdbc9cbc3b59feb5a28d5bfee97dbb3"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
-<tr class="memitem:afbdbc9cbc3b59feb5a28d5bfee97dbb3"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#afbdbc9cbc3b59feb5a28d5bfee97dbb3">operator==</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;rhs) const </td></tr>
-<tr class="memdesc:afbdbc9cbc3b59feb5a28d5bfee97dbb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator. <a href="#afbdbc9cbc3b59feb5a28d5bfee97dbb3">更多...</a><br /></td></tr>
-<tr class="separator:afbdbc9cbc3b59feb5a28d5bfee97dbb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7bed9035dd1beeabe6f47e870874e793"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7bed9035dd1beeabe6f47e870874e793"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a7bed9035dd1beeabe6f47e870874e793">operator==</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *rhs) const </td></tr>
-<tr class="memdesc:a7bed9035dd1beeabe6f47e870874e793"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator with const C-string pointer. <br /></td></tr>
-<tr class="separator:a7bed9035dd1beeabe6f47e870874e793"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6f7f7c66d8f8c08e496ae831ba114126"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a6f7f7c66d8f8c08e496ae831ba114126">operator==</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;rhs) const </td></tr>
-<tr class="memdesc:a6f7f7c66d8f8c08e496ae831ba114126"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator with string object. <a href="#a6f7f7c66d8f8c08e496ae831ba114126">更多...</a><br /></td></tr>
-<tr class="separator:a6f7f7c66d8f8c08e496ae831ba114126"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae6c196979931e8283bcbd499133169ed"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:ae6c196979931e8283bcbd499133169ed"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ae6c196979931e8283bcbd499133169ed">operator==</a> (const T &amp;rhs) const </td></tr>
-<tr class="memdesc:ae6c196979931e8283bcbd499133169ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator with primitive types. <a href="#ae6c196979931e8283bcbd499133169ed">更多...</a><br /></td></tr>
-<tr class="separator:ae6c196979931e8283bcbd499133169ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0cb232adce79932c499c5f04cbc8dc54"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
-<tr class="memitem:a0cb232adce79932c499c5f04cbc8dc54"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a0cb232adce79932c499c5f04cbc8dc54">operator!=</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;rhs) const </td></tr>
-<tr class="memdesc:a0cb232adce79932c499c5f04cbc8dc54"><td class="mdescLeft">&#160;</td><td class="mdescRight">Not-equal-to operator. <a href="#a0cb232adce79932c499c5f04cbc8dc54">更多...</a><br /></td></tr>
-<tr class="separator:a0cb232adce79932c499c5f04cbc8dc54"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aff1711092a1278d36b8152f5520a686e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff1711092a1278d36b8152f5520a686e"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aff1711092a1278d36b8152f5520a686e">operator!=</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *rhs) const </td></tr>
-<tr class="memdesc:aff1711092a1278d36b8152f5520a686e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Not-equal-to operator with const C-string pointer. <br /></td></tr>
-<tr class="separator:aff1711092a1278d36b8152f5520a686e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad7e6ef7acbbfef57485b9f2dee620dbf"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
-<tr class="memitem:ad7e6ef7acbbfef57485b9f2dee620dbf"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad7e6ef7acbbfef57485b9f2dee620dbf">operator!=</a> (const T &amp;rhs) const </td></tr>
-<tr class="memdesc:ad7e6ef7acbbfef57485b9f2dee620dbf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Not-equal-to operator with arbitrary types. <a href="#ad7e6ef7acbbfef57485b9f2dee620dbf">更多...</a><br /></td></tr>
-<tr class="separator:ad7e6ef7acbbfef57485b9f2dee620dbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab4e5285102bb686f39bca2855a17a181"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
+<tr class="memitem:ab4e5285102bb686f39bca2855a17a181"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ab4e5285102bb686f39bca2855a17a181">operator==</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;rhs) const</td></tr>
+<tr class="memdesc:ab4e5285102bb686f39bca2855a17a181"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator <a href="#ab4e5285102bb686f39bca2855a17a181">更多...</a><br /></td></tr>
+<tr class="separator:ab4e5285102bb686f39bca2855a17a181"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af03ef6020e188bbfceb018da5cd8becc"><td class="memItemLeft" align="right" valign="top"><a id="af03ef6020e188bbfceb018da5cd8becc"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#af03ef6020e188bbfceb018da5cd8becc">operator==</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *rhs) const</td></tr>
+<tr class="memdesc:af03ef6020e188bbfceb018da5cd8becc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator with const C-string pointer <br /></td></tr>
+<tr class="separator:af03ef6020e188bbfceb018da5cd8becc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af089d2bee0386ca7504ff4fab466c87f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#af089d2bee0386ca7504ff4fab466c87f">operator==</a> (const std::basic_string&lt; <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> &gt; &amp;rhs) const</td></tr>
+<tr class="memdesc:af089d2bee0386ca7504ff4fab466c87f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator with string object <a href="#af089d2bee0386ca7504ff4fab466c87f">更多...</a><br /></td></tr>
+<tr class="separator:af089d2bee0386ca7504ff4fab466c87f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaddbbbb35cd783f209f889cf8dea9570"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<tr class="memitem:aaddbbbb35cd783f209f889cf8dea9570"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#aaddbbbb35cd783f209f889cf8dea9570">operator==</a> (const T &amp;rhs) const</td></tr>
+<tr class="memdesc:aaddbbbb35cd783f209f889cf8dea9570"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equal-to operator with primitive types <a href="#aaddbbbb35cd783f209f889cf8dea9570">更多...</a><br /></td></tr>
+<tr class="separator:aaddbbbb35cd783f209f889cf8dea9570"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad5bf5afd53f21f370f917041b3be4bfc"><td class="memTemplParams" colspan="2">template&lt;typename SourceAllocator &gt; </td></tr>
+<tr class="memitem:ad5bf5afd53f21f370f917041b3be4bfc"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ad5bf5afd53f21f370f917041b3be4bfc">operator!=</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, SourceAllocator &gt; &amp;rhs) const</td></tr>
+<tr class="memdesc:ad5bf5afd53f21f370f917041b3be4bfc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Not-equal-to operator <a href="#ad5bf5afd53f21f370f917041b3be4bfc">更多...</a><br /></td></tr>
+<tr class="separator:ad5bf5afd53f21f370f917041b3be4bfc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6443cf5323fb46c4c51cd15a365da49b"><td class="memItemLeft" align="right" valign="top"><a id="a6443cf5323fb46c4c51cd15a365da49b"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#a6443cf5323fb46c4c51cd15a365da49b">operator!=</a> (const <a class="el" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a> *rhs) const</td></tr>
+<tr class="memdesc:a6443cf5323fb46c4c51cd15a365da49b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Not-equal-to operator with const C-string pointer <br /></td></tr>
+<tr class="separator:a6443cf5323fb46c4c51cd15a365da49b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae6fe0576ff0336f6e2b09fe32f3ff809"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
+<tr class="memitem:ae6fe0576ff0336f6e2b09fe32f3ff809"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html#ae6fe0576ff0336f6e2b09fe32f3ff809">operator!=</a> (const T &amp;rhs) const</td></tr>
+<tr class="memdesc:ae6fe0576ff0336f6e2b09fe32f3ff809"><td class="mdescLeft">&#160;</td><td class="mdescRight">Not-equal-to operator with arbitrary types <a href="#ae6fe0576ff0336f6e2b09fe32f3ff809">更多...</a><br /></td></tr>
+<tr class="separator:ae6fe0576ff0336f6e2b09fe32f3ff809"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<div class="textblock"><h3>template&lt;typename Encoding, typename Allocator&gt;<br />
+<div class="textblock"><h3>template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt;<br />
class rapidjson::GenericValue&lt; Encoding, Allocator &gt;</h3>
<p>Represents a JSON value. Use Value for <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding and default allocator. </p>
@@ -680,11 +671,13 @@ class rapidjson::GenericValue&lt; Encoding, Allocator &gt;</h3>
</dd>
</dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
-<a class="anchor" id="a646b6d4d3d98799a0926d96ffa127a58"></a>
+<a id="a646b6d4d3d98799a0926d96ffa127a58"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a646b6d4d3d98799a0926d96ffa127a58">&#9670;&nbsp;</a></span>GenericValue() <span class="overload">[1/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -715,11 +708,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="adca019775f68f012643781cd2c2515ac"></a>
+<a id="adca019775f68f012643781cd2c2515ac"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adca019775f68f012643781cd2c2515ac">&#9670;&nbsp;</a></span>GenericValue() <span class="overload">[2/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename SourceAllocator &gt; </div>
<table class="mlabels">
@@ -772,15 +767,17 @@ template&lt;typename SourceAllocator &gt; </div>
</table>
</dd>
</dl>
-<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae" title="Deep-copy assignment from Value. ">CopyFrom()</a> </dd></dl>
+<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae" title="Deep-copy assignment from Value ">CopyFrom()</a> </dd></dl>
</div>
</div>
-<a class="anchor" id="ab933ad7ff8c9d08f73cebaecb700dbe9"></a>
+<a id="ab933ad7ff8c9d08f73cebaecb700dbe9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab933ad7ff8c9d08f73cebaecb700dbe9">&#9670;&nbsp;</a></span>GenericValue() <span class="overload">[3/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -811,11 +808,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="a852788b35257762cd8d6c4bf5c5d77bc"></a>
+<a id="a852788b35257762cd8d6c4bf5c5d77bc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a852788b35257762cd8d6c4bf5c5d77bc">&#9670;&nbsp;</a></span>GenericValue() <span class="overload">[4/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -850,11 +849,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="a77b0f41557b3c34b57a180698312c4a8"></a>
+<a id="a77b0f41557b3c34b57a180698312c4a8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a77b0f41557b3c34b57a180698312c4a8">&#9670;&nbsp;</a></span>GenericValue() <span class="overload">[5/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -887,11 +888,13 @@ the source array is moved into this value and the sourec array becomes empty. </
</div>
</div>
-<a class="anchor" id="a893da1069660536fd3943a0149206a6e"></a>
+<a id="a893da1069660536fd3943a0149206a6e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a893da1069660536fd3943a0149206a6e">&#9670;&nbsp;</a></span>GenericValue() <span class="overload">[6/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -924,11 +927,13 @@ the source object is moved into this value and the sourec object becomes empty.
</div>
</div>
-<a class="anchor" id="a433a64b466c80cadf7d1acaa6f065437"></a>
+<a id="a433a64b466c80cadf7d1acaa6f065437"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a433a64b466c80cadf7d1acaa6f065437">&#9670;&nbsp;</a></span>~GenericValue()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -953,11 +958,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
-<a class="anchor" id="aeef0506cd1f8d703db4833c503f0657e"></a>
+<a id="ad3ebfa73796f4db4836ec47c2261700c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad3ebfa73796f4db4836ec47c2261700c">&#9670;&nbsp;</a></span>Accept()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename Handler &gt; </div>
<table class="mlabels">
@@ -980,7 +987,7 @@ template&lt;typename Handler &gt; </div>
</div><div class="memdoc">
<p>Generate events of this value to a <a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a>. </p>
-<p>This function adopts the GoF visitor pattern. Typical usage is to output this JSON value as JSON text via <a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer. ">Writer</a>, which is a <a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a>. It can also be used to deep clone this value via <a class="el" href="classrapidjson_1_1_generic_document.html" title="A document for parsing JSON text as DOM. ">GenericDocument</a>, which is also a <a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a>. </p><dl class="tparams"><dt>模板参数</dt><dd>
+<p>This function adopts the GoF visitor pattern. Typical usage is to output this JSON value as JSON text via <a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer ">Writer</a>, which is a <a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a>. It can also be used to deep clone this value via <a class="el" href="classrapidjson_1_1_generic_document.html" title="A document for parsing JSON text as DOM. ">GenericDocument</a>, which is also a <a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a>. </p><dl class="tparams"><dt>模板参数</dt><dd>
<table class="tparams">
<tr><td class="paramname"><a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a></td><td>type of handler. </td></tr>
</table>
@@ -995,11 +1002,13 @@ template&lt;typename Handler &gt; </div>
</div>
</div>
-<a class="anchor" id="ab018d734d189532b27943bc45776ba68"></a>
+<a id="ab018d734d189532b27943bc45776ba68"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab018d734d189532b27943bc45776ba68">&#9670;&nbsp;</a></span>AddMember() <span class="overload">[1/7]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1052,11 +1061,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="ad290f179591025e871bedbbac89ac276"></a>
+<a id="ad290f179591025e871bedbbac89ac276"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad290f179591025e871bedbbac89ac276">&#9670;&nbsp;</a></span>AddMember() <span class="overload">[2/7]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1109,11 +1120,13 @@ Amortized Constant time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="a578e35f3350717db2aae534969b2346a"></a>
+<a id="a578e35f3350717db2aae534969b2346a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a578e35f3350717db2aae534969b2346a">&#9670;&nbsp;</a></span>AddMember() <span class="overload">[3/7]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1166,11 +1179,13 @@ Amortized Constant time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="ab705cb56bfb380005704cda2d0edf168"></a>
+<a id="ab705cb56bfb380005704cda2d0edf168"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab705cb56bfb380005704cda2d0edf168">&#9670;&nbsp;</a></span>AddMember() <span class="overload">[4/7]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
@@ -1231,11 +1246,13 @@ Amortized Constant time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="a85dc131bdad8077ce970d580d333d15a"></a>
+<a id="a85dc131bdad8077ce970d580d333d15a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a85dc131bdad8077ce970d580d333d15a">&#9670;&nbsp;</a></span>AddMember() <span class="overload">[5/7]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1288,11 +1305,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="a2ccb4736d0f2ec07f06f630d8fe54f8d"></a>
+<a id="a2ccb4736d0f2ec07f06f630d8fe54f8d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2ccb4736d0f2ec07f06f630d8fe54f8d">&#9670;&nbsp;</a></span>AddMember() <span class="overload">[6/7]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1345,11 +1364,13 @@ Amortized Constant time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="aa70ada250f3a0c5aeee0ce138d136b06"></a>
+<a id="aa70ada250f3a0c5aeee0ce138d136b06"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa70ada250f3a0c5aeee0ce138d136b06">&#9670;&nbsp;</a></span>AddMember() <span class="overload">[7/7]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
@@ -1410,11 +1431,13 @@ Amortized Constant time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="a8d1040c479d89edb261db86400ebe603"></a>
+<a id="a8d1040c479d89edb261db86400ebe603"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8d1040c479d89edb261db86400ebe603">&#9670;&nbsp;</a></span>Begin() <span class="overload">[1/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1433,16 +1456,18 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</table>
</div><div class="memdoc">
-<p>Element iterator. </p>
+<p>Element iterator </p>
<dl class="section pre"><dt>前置条件</dt><dd>IsArray() == true </dd></dl>
</div>
</div>
-<a class="anchor" id="abc8945d3411c6ce583d322753ce028e1"></a>
+<a id="a07d947971c59c9ce884b3c5205c9238f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a07d947971c59c9ce884b3c5205c9238f">&#9670;&nbsp;</a></span>Begin() <span class="overload">[2/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1461,16 +1486,18 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</table>
</div><div class="memdoc">
-<p>Constant element iterator. </p>
+<p>Constant element iterator </p>
<dl class="section pre"><dt>前置条件</dt><dd>IsArray() == true </dd></dl>
</div>
</div>
-<a class="anchor" id="aa56b69bac5423622eff6998ce4802106"></a>
+<a id="aa56b69bac5423622eff6998ce4802106"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa56b69bac5423622eff6998ce4802106">&#9670;&nbsp;</a></span>Clear()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1494,11 +1521,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="ad9399a2a69444c44a9db2f63c3aa3eae"></a>
+<a id="ad9399a2a69444c44a9db2f63c3aa3eae"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad9399a2a69444c44a9db2f63c3aa3eae">&#9670;&nbsp;</a></span>CopyFrom()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename SourceAllocator &gt; </div>
<table class="mlabels">
@@ -1536,7 +1565,7 @@ template&lt;typename SourceAllocator &gt; </div>
</table>
</div><div class="memdoc">
-<p>Deep-copy assignment from Value. </p>
+<p>Deep-copy assignment from Value </p>
<p>Assigns a <b>copy</b> of the Value to the current Value object </p><dl class="tparams"><dt>模板参数</dt><dd>
<table class="tparams">
<tr><td class="paramname">SourceAllocator</td><td><a class="el" href="classrapidjson_1_1_allocator.html" title="Concept for allocating, resizing and freeing memory block. ">Allocator</a> type of <code>rhs</code> </td></tr>
@@ -1554,11 +1583,13 @@ template&lt;typename SourceAllocator &gt; </div>
</div>
</div>
-<a class="anchor" id="aaf58b9337ccc0cdf16aa9634c4645109"></a>
+<a id="aaf58b9337ccc0cdf16aa9634c4645109"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaf58b9337ccc0cdf16aa9634c4645109">&#9670;&nbsp;</a></span>End() <span class="overload">[1/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1582,11 +1613,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="ad2d9786831d721cf8f1bf0dbdf86404a"></a>
+<a id="abdd6a3b703a03aada4c186a2365698e7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abdd6a3b703a03aada4c186a2365698e7">&#9670;&nbsp;</a></span>End() <span class="overload">[2/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1605,16 +1638,18 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</table>
</div><div class="memdoc">
-<p>Constant <em>past-the-end</em> element iterator. </p>
+<p>Constant <em>past-the-end</em> element iterator </p>
<dl class="section pre"><dt>前置条件</dt><dd>IsArray() == true </dd></dl>
</div>
</div>
-<a class="anchor" id="a68ba73eeda7b9429ca05267065d3cc99"></a>
+<a id="a68ba73eeda7b9429ca05267065d3cc99"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a68ba73eeda7b9429ca05267065d3cc99">&#9670;&nbsp;</a></span>Erase() <span class="overload">[1/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1647,11 +1682,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="a916f443e02f9379d8fbde49a4d440f61"></a>
+<a id="a916f443e02f9379d8fbde49a4d440f61"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a916f443e02f9379d8fbde49a4d440f61">&#9670;&nbsp;</a></span>Erase() <span class="overload">[2/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1695,11 +1732,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="a163e60b101e5ae534597c050a6eba511"></a>
+<a id="a163e60b101e5ae534597c050a6eba511"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a163e60b101e5ae534597c050a6eba511">&#9670;&nbsp;</a></span>EraseMember() <span class="overload">[1/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1734,11 +1773,13 @@ Linear time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="a121e40b5944be337189eb63b98b7e6ce"></a>
+<a id="a121e40b5944be337189eb63b98b7e6ce"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a121e40b5944be337189eb63b98b7e6ce">&#9670;&nbsp;</a></span>EraseMember() <span class="overload">[2/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1784,11 +1825,13 @@ Linear time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="ac51a3b3046aaa12aa1d88ac876a28cec"></a>
+<a id="ac51a3b3046aaa12aa1d88ac876a28cec"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac51a3b3046aaa12aa1d88ac876a28cec">&#9670;&nbsp;</a></span>EraseMember() <span class="overload">[3/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1820,11 +1863,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="ad22fdeac87ec6c370dd43075d3586811"></a>
+<a id="ad22fdeac87ec6c370dd43075d3586811"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad22fdeac87ec6c370dd43075d3586811">&#9670;&nbsp;</a></span>FindMember() <span class="overload">[1/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1859,11 +1904,13 @@ Linear time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="a8d75bf0c6c0fa4f8d340a4236e98539b"></a>
+<a id="a8d75bf0c6c0fa4f8d340a4236e98539b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8d75bf0c6c0fa4f8d340a4236e98539b">&#9670;&nbsp;</a></span>FindMember() <span class="overload">[2/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename SourceAllocator &gt; </div>
<table class="mlabels">
@@ -1900,11 +1947,13 @@ Linear time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="a278b420ea75b0ec18d88d4c9e9199d62"></a>
+<a id="a278b420ea75b0ec18d88d4c9e9199d62"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a278b420ea75b0ec18d88d4c9e9199d62">&#9670;&nbsp;</a></span>FindMember() <span class="overload">[3/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1936,11 +1985,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="aa059dee923cc0446752e321ff70936a6"></a>
+<a id="aa27d086d265f0ce447b15b15f0a2ed6e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa27d086d265f0ce447b15b15f0a2ed6e">&#9670;&nbsp;</a></span>GetDouble()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1964,11 +2015,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="a0eda9834f241e5c5b23161a7ee33758b"></a>
+<a id="a573712808dd5d8814c103cf55fd761b4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a573712808dd5d8814c103cf55fd761b4">&#9670;&nbsp;</a></span>GetFloat()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -1992,11 +2045,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="a979c4ba6dd2a311be837ae083423aca8"></a>
+<a id="a18599e0d1a7e70a11b35f5e219390fea"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a18599e0d1a7e70a11b35f5e219390fea">&#9670;&nbsp;</a></span>GetStringLength()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2020,11 +2075,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="af17b9b6ba6a9fb4e02d2dced5aa0ee0c"></a>
+<a id="aa78e2eb30c6b918826eccf03f04f166b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa78e2eb30c6b918826eccf03f04f166b">&#9670;&nbsp;</a></span>HasMember() <span class="overload">[1/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2059,11 +2116,13 @@ Linear time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="afb1942ef13566484e1806689834a053f"></a>
+<a id="a9b3b30acbe60d7a5b105afa05c1ddfb0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9b3b30acbe60d7a5b105afa05c1ddfb0">&#9670;&nbsp;</a></span>HasMember() <span class="overload">[2/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2098,11 +2157,13 @@ Linear time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="a548e6c8a99c525573d933933610977cb"></a>
+<a id="a794129b8adffb97d123306a0c0ccaf71"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a794129b8adffb97d123306a0c0ccaf71">&#9670;&nbsp;</a></span>HasMember() <span class="overload">[3/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename SourceAllocator &gt; </div>
<table class="mlabels">
@@ -2139,11 +2200,13 @@ Linear time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="ade8d1ca2b8e8afa02cde46e26866440b"></a>
+<a id="acc6b1791cca8daef18521918136264b7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acc6b1791cca8daef18521918136264b7">&#9670;&nbsp;</a></span>Is()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
@@ -2174,11 +2237,13 @@ template&lt;typename T &gt; </div>
</div>
</div>
-<a class="anchor" id="a469c0cc3e72f846757fb64fa52fafee5"></a>
+<a id="ae89a77887aa3eb1f1f913727cbff6786"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae89a77887aa3eb1f1f913727cbff6786">&#9670;&nbsp;</a></span>MemberBegin() <span class="overload">[1/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2197,16 +2262,18 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</table>
</div><div class="memdoc">
-<p>Const member iterator. </p>
+<p>Const member iterator </p>
<dl class="section pre"><dt>前置条件</dt><dd>IsObject() == true </dd></dl>
</div>
</div>
-<a class="anchor" id="a93f0f317f397c36a24a0f3c32648623a"></a>
+<a id="a93f0f317f397c36a24a0f3c32648623a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a93f0f317f397c36a24a0f3c32648623a">&#9670;&nbsp;</a></span>MemberBegin() <span class="overload">[2/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2225,16 +2292,18 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</table>
</div><div class="memdoc">
-<p>Member iterator. </p>
+<p>Member iterator </p>
<dl class="section pre"><dt>前置条件</dt><dd>IsObject() == true </dd></dl>
</div>
</div>
-<a class="anchor" id="a88d2c5b861cd8a6a14976456dfbc1f64"></a>
+<a id="a34ee3d75a7aa308043fb34b0743bfe7c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a34ee3d75a7aa308043fb34b0743bfe7c">&#9670;&nbsp;</a></span>MemberEnd() <span class="overload">[1/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2253,16 +2322,18 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</table>
</div><div class="memdoc">
-<p>Const <em>past-the-end</em> member iterator. </p>
+<p>Const <em>past-the-end</em> member iterator </p>
<dl class="section pre"><dt>前置条件</dt><dd>IsObject() == true </dd></dl>
</div>
</div>
-<a class="anchor" id="adb109ae9f12615efadf9277cb5e9c4ee"></a>
+<a id="adb109ae9f12615efadf9277cb5e9c4ee"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adb109ae9f12615efadf9277cb5e9c4ee">&#9670;&nbsp;</a></span>MemberEnd() <span class="overload">[2/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2286,11 +2357,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="a07b19e65fb756cae13e5bdc515cfbd4b"></a>
+<a id="a07b19e65fb756cae13e5bdc515cfbd4b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a07b19e65fb756cae13e5bdc515cfbd4b">&#9670;&nbsp;</a></span>Move()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2309,16 +2382,18 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</table>
</div><div class="memdoc">
-<p>Prepare Value for move semantics. </p>
+<p>Prepare Value for move semantics </p>
<dl class="section return"><dt>返回</dt><dd>*this </dd></dl>
</div>
</div>
-<a class="anchor" id="a0cb232adce79932c499c5f04cbc8dc54"></a>
+<a id="ad5bf5afd53f21f370f917041b3be4bfc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad5bf5afd53f21f370f917041b3be4bfc">&#9670;&nbsp;</a></span>operator!=() <span class="overload">[1/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename SourceAllocator &gt; </div>
<table class="mlabels">
@@ -2340,16 +2415,18 @@ template&lt;typename SourceAllocator &gt; </div>
</table>
</div><div class="memdoc">
-<p>Not-equal-to operator. </p>
+<p>Not-equal-to operator </p>
<dl class="section return"><dt>返回</dt><dd>!(*this == rhs) </dd></dl>
</div>
</div>
-<a class="anchor" id="ad7e6ef7acbbfef57485b9f2dee620dbf"></a>
+<a id="ae6fe0576ff0336f6e2b09fe32f3ff809"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae6fe0576ff0336f6e2b09fe32f3ff809">&#9670;&nbsp;</a></span>operator!=() <span class="overload">[2/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
@@ -2371,16 +2448,18 @@ template&lt;typename T &gt; </div>
</table>
</div><div class="memdoc">
-<p>Not-equal-to operator with arbitrary types. </p>
+<p>Not-equal-to operator with arbitrary types </p>
<dl class="section return"><dt>返回</dt><dd>!(*this == rhs) </dd></dl>
</div>
</div>
-<a class="anchor" id="ae8bcedd951f50b69786aaaa1828e9fac"></a>
+<a id="ae8bcedd951f50b69786aaaa1828e9fac"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae8bcedd951f50b69786aaaa1828e9fac">&#9670;&nbsp;</a></span>operator=() <span class="overload">[1/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2410,11 +2489,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="aecc9d0a6aafe31f4fdf9f6e75e5f089c"></a>
+<a id="aecc9d0a6aafe31f4fdf9f6e75e5f089c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aecc9d0a6aafe31f4fdf9f6e75e5f089c">&#9670;&nbsp;</a></span>operator=() <span class="overload">[2/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2446,11 +2527,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="ab7446da62fdc61d6d987d508cdb6ac13"></a>
+<a id="ab7446da62fdc61d6d987d508cdb6ac13"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab7446da62fdc61d6d987d508cdb6ac13">&#9670;&nbsp;</a></span>operator=() <span class="overload">[3/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
@@ -2489,11 +2572,13 @@ template&lt;typename T &gt; </div>
</div>
</div>
-<a class="anchor" id="afbdbc9cbc3b59feb5a28d5bfee97dbb3"></a>
+<a id="ab4e5285102bb686f39bca2855a17a181"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab4e5285102bb686f39bca2855a17a181">&#9670;&nbsp;</a></span>operator==() <span class="overload">[1/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename SourceAllocator &gt; </div>
<table class="mlabels">
@@ -2515,18 +2600,20 @@ template&lt;typename SourceAllocator &gt; </div>
</table>
</div><div class="memdoc">
-<p>Equal-to operator. </p>
+<p>Equal-to operator </p>
<dl class="section note"><dt>注解</dt><dd>If an object contains duplicated named member, comparing equality with any object is always <code>false</code>. </dd>
<dd>
Linear time complexity (number of all values in the subtree and total lengths of all strings). </dd></dl>
</div>
</div>
-<a class="anchor" id="a6f7f7c66d8f8c08e496ae831ba114126"></a>
+<a id="af089d2bee0386ca7504ff4fab466c87f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af089d2bee0386ca7504ff4fab466c87f">&#9670;&nbsp;</a></span>operator==() <span class="overload">[2/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2546,16 +2633,18 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</table>
</div><div class="memdoc">
-<p>Equal-to operator with string object. </p>
+<p>Equal-to operator with string object </p>
<dl class="section note"><dt>注解</dt><dd>Requires the definition of the preprocessor symbol <a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga2f2eef0ee4477f3fe5874703a66e997f">RAPIDJSON_HAS_STDSTRING</a>. </dd></dl>
</div>
</div>
-<a class="anchor" id="ae6c196979931e8283bcbd499133169ed"></a>
+<a id="aaddbbbb35cd783f209f889cf8dea9570"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaddbbbb35cd783f209f889cf8dea9570">&#9670;&nbsp;</a></span>operator==() <span class="overload">[3/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
@@ -2577,7 +2666,7 @@ template&lt;typename T &gt; </div>
</table>
</div><div class="memdoc">
-<p>Equal-to operator with primitive types. </p>
+<p>Equal-to operator with primitive types </p>
<dl class="tparams"><dt>模板参数</dt><dd>
<table class="tparams">
<tr><td class="paramname">T</td><td>Either <a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>, <code>int</code>, <code>unsigned</code>, <code>int64_t</code>, <code>uint64_t</code>, <code>double</code>, <code>true</code>, <code>false</code> </td></tr>
@@ -2587,11 +2676,13 @@ template&lt;typename T &gt; </div>
</div>
</div>
-<a class="anchor" id="a8ec7fc7f221306925c7674dccbe02b07"></a>
+<a id="a8ec7fc7f221306925c7674dccbe02b07"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8ec7fc7f221306925c7674dccbe02b07">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[1/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
@@ -2621,17 +2712,19 @@ template&lt;typename T &gt; </div>
</table>
</dd>
</dl>
-<dl class="section note"><dt>注解</dt><dd>In version 0.1x, if the member is not found, this function returns a null value. This makes issue 7. Since 0.2, if the name is not correct, it will assert. If user is unsure whether a member exists, user should use <a class="el" href="classrapidjson_1_1_generic_value.html#af17b9b6ba6a9fb4e02d2dced5aa0ee0c" title="Check whether a member exists in the object. ">HasMember()</a> first. A better approach is to use <a class="el" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811" title="Find member by name. ">FindMember()</a>. </dd>
+<dl class="section note"><dt>注解</dt><dd>In version 0.1x, if the member is not found, this function returns a null value. This makes issue 7. Since 0.2, if the name is not correct, it will assert. If user is unsure whether a member exists, user should use <a class="el" href="classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b" title="Check whether a member exists in the object. ">HasMember()</a> first. A better approach is to use <a class="el" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811" title="Find member by name. ">FindMember()</a>. </dd>
<dd>
Linear time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="aa62b57746c96ce3d264b2fe178196062"></a>
+<a id="aa62b57746c96ce3d264b2fe178196062"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa62b57746c96ce3d264b2fe178196062">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[2/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename SourceAllocator &gt; </div>
<table class="mlabels">
@@ -2667,11 +2760,13 @@ Linear time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="adc312de070d03a63e6c692c9c61db156"></a>
+<a id="adc312de070d03a63e6c692c9c61db156"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adc312de070d03a63e6c692c9c61db156">&#9670;&nbsp;</a></span>operator[]() <span class="overload">[3/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2703,11 +2798,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="ae475f31fb851138ced40e2ff6cb43ca6"></a>
+<a id="ae475f31fb851138ced40e2ff6cb43ca6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae475f31fb851138ced40e2ff6cb43ca6">&#9670;&nbsp;</a></span>PopBack()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2731,11 +2828,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="a0ec9f34bef5890241d4bc882b73b1db4"></a>
+<a id="a0ec9f34bef5890241d4bc882b73b1db4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0ec9f34bef5890241d4bc882b73b1db4">&#9670;&nbsp;</a></span>PushBack() <span class="overload">[1/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2784,11 +2883,13 @@ Amortized constant time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="a41946915cb219a684f6ffc9341efee22"></a>
+<a id="a41946915cb219a684f6ffc9341efee22"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a41946915cb219a684f6ffc9341efee22">&#9670;&nbsp;</a></span>PushBack() <span class="overload">[2/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2835,11 +2936,13 @@ Amortized constant time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="aa59273e0adfe2a9d0e6ac29d2537d9ed"></a>
+<a id="aa59273e0adfe2a9d0e6ac29d2537d9ed"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa59273e0adfe2a9d0e6ac29d2537d9ed">&#9670;&nbsp;</a></span>PushBack() <span class="overload">[3/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
@@ -2895,11 +2998,13 @@ Amortized constant time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="a68d8d197ae1fb83d4dc202f9812af4cc"></a>
+<a id="a68d8d197ae1fb83d4dc202f9812af4cc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a68d8d197ae1fb83d4dc202f9812af4cc">&#9670;&nbsp;</a></span>RemoveAllMembers()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2923,11 +3028,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="aa60074f72a6d1651828a104b0c6387b1"></a>
+<a id="aa60074f72a6d1651828a104b0c6387b1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa60074f72a6d1651828a104b0c6387b1">&#9670;&nbsp;</a></span>RemoveMember() <span class="overload">[1/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2961,11 +3068,13 @@ Linear time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="af91573ce61d798f0bc5dc88b00742697"></a>
+<a id="af91573ce61d798f0bc5dc88b00742697"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af91573ce61d798f0bc5dc88b00742697">&#9670;&nbsp;</a></span>RemoveMember() <span class="overload">[2/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -2988,7 +3097,7 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
<p>Remove a member in object by iterator. </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
- <tr><td class="paramname">m</td><td>member iterator (obtained by <a class="el" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811" title="Find member by name. ">FindMember()</a> or <a class="el" href="classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a" title="Member iterator. ">MemberBegin()</a>). </td></tr>
+ <tr><td class="paramname">m</td><td>member iterator (obtained by <a class="el" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811" title="Find member by name. ">FindMember()</a> or <a class="el" href="classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a" title="Member iterator ">MemberBegin()</a>). </td></tr>
</table>
</dd>
</dl>
@@ -2999,11 +3108,13 @@ Constant time complexity. </dd></dl>
</div>
</div>
-<a class="anchor" id="a17971ba2bcd4eb1716098fdfe9182386"></a>
+<a id="a17971ba2bcd4eb1716098fdfe9182386"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a17971ba2bcd4eb1716098fdfe9182386">&#9670;&nbsp;</a></span>Reserve()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -3046,11 +3157,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="a25069c76d045b058e54835d8c467c789"></a>
+<a id="a25069c76d045b058e54835d8c467c789"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a25069c76d045b058e54835d8c467c789">&#9670;&nbsp;</a></span>SetArray()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -3074,11 +3187,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="a5623c9039977ca0daf394e5c12f10c2d"></a>
+<a id="a5623c9039977ca0daf394e5c12f10c2d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5623c9039977ca0daf394e5c12f10c2d">&#9670;&nbsp;</a></span>SetBool()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -3101,11 +3216,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="a7cb3cbaefe4fb99aaf9f155fb4ee039b"></a>
+<a id="a7cb3cbaefe4fb99aaf9f155fb4ee039b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7cb3cbaefe4fb99aaf9f155fb4ee039b">&#9670;&nbsp;</a></span>SetObject()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -3129,11 +3246,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
-<a class="anchor" id="afb91480cc6242ca96ffc603e649c319f"></a>
+<a id="afb91480cc6242ca96ffc603e649c319f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afb91480cc6242ca96ffc603e649c319f">&#9670;&nbsp;</a></span>SetString() <span class="overload">[1/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -3172,16 +3291,18 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>The value itself for fluent API. </dd></dl>
-<dl class="section post"><dt>后置条件</dt><dd>IsString() == true &amp;&amp; GetString() == s &amp;&amp; <a class="el" href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8" title="Get the length of string. ">GetStringLength()</a> == length </dd></dl>
+<dl class="section post"><dt>后置条件</dt><dd>IsString() == true &amp;&amp; GetString() == s &amp;&amp; <a class="el" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea" title="Get the length of string. ">GetStringLength()</a> == length </dd></dl>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_value.html#aabb538578a3c1e60c86cda32d062bc1c" title="Set this value as a string without copying source string. ">SetString(StringRefType)</a> </dd></dl>
</div>
</div>
-<a class="anchor" id="aabb538578a3c1e60c86cda32d062bc1c"></a>
+<a id="aabb538578a3c1e60c86cda32d062bc1c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aabb538578a3c1e60c86cda32d062bc1c">&#9670;&nbsp;</a></span>SetString() <span class="overload">[2/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -3209,15 +3330,17 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>The value itself for fluent API. </dd></dl>
-<dl class="section post"><dt>后置条件</dt><dd>IsString() == true &amp;&amp; GetString() == s &amp;&amp; <a class="el" href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8" title="Get the length of string. ">GetStringLength()</a> == s.length </dd></dl>
+<dl class="section post"><dt>后置条件</dt><dd>IsString() == true &amp;&amp; GetString() == s &amp;&amp; <a class="el" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea" title="Get the length of string. ">GetStringLength()</a> == s.length </dd></dl>
</div>
</div>
-<a class="anchor" id="ae6351043ec30d8a151b0a072cfbc46d5"></a>
+<a id="ae6351043ec30d8a151b0a072cfbc46d5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae6351043ec30d8a151b0a072cfbc46d5">&#9670;&nbsp;</a></span>SetString() <span class="overload">[3/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -3263,15 +3386,17 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>The value itself for fluent API. </dd></dl>
-<dl class="section post"><dt>后置条件</dt><dd>IsString() == true &amp;&amp; GetString() != s &amp;&amp; strcmp(GetString(),s) == 0 &amp;&amp; <a class="el" href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8" title="Get the length of string. ">GetStringLength()</a> == length </dd></dl>
+<dl class="section post"><dt>后置条件</dt><dd>IsString() == true &amp;&amp; GetString() != s &amp;&amp; strcmp(GetString(),s) == 0 &amp;&amp; <a class="el" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea" title="Get the length of string. ">GetStringLength()</a> == length </dd></dl>
</div>
</div>
-<a class="anchor" id="ab4babf200cac2dacb412a3ea279ddf5b"></a>
+<a id="ab4babf200cac2dacb412a3ea279ddf5b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab4babf200cac2dacb412a3ea279ddf5b">&#9670;&nbsp;</a></span>SetString() <span class="overload">[4/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -3310,15 +3435,17 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>The value itself for fluent API. </dd></dl>
-<dl class="section post"><dt>后置条件</dt><dd>IsString() == true &amp;&amp; GetString() != s &amp;&amp; strcmp(GetString(),s) == 0 &amp;&amp; <a class="el" href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8" title="Get the length of string. ">GetStringLength()</a> == length </dd></dl>
+<dl class="section post"><dt>后置条件</dt><dd>IsString() == true &amp;&amp; GetString() != s &amp;&amp; strcmp(GetString(),s) == 0 &amp;&amp; <a class="el" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea" title="Get the length of string. ">GetStringLength()</a> == length </dd></dl>
</div>
</div>
-<a class="anchor" id="a9ba3d9d8a106d5b7e92fb49db897c21b"></a>
+<a id="a9ba3d9d8a106d5b7e92fb49db897c21b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9ba3d9d8a106d5b7e92fb49db897c21b">&#9670;&nbsp;</a></span>SetString() <span class="overload">[5/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -3357,15 +3484,17 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>The value itself for fluent API. </dd></dl>
-<dl class="section post"><dt>后置条件</dt><dd>IsString() == true &amp;&amp; GetString() != s.s &amp;&amp; strcmp(GetString(),s) == 0 &amp;&amp; <a class="el" href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8" title="Get the length of string. ">GetStringLength()</a> == length </dd></dl>
+<dl class="section post"><dt>后置条件</dt><dd>IsString() == true &amp;&amp; GetString() != s.s &amp;&amp; strcmp(GetString(),s) == 0 &amp;&amp; <a class="el" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea" title="Get the length of string. ">GetStringLength()</a> == length </dd></dl>
</div>
</div>
-<a class="anchor" id="a3e930bffb40a78e570e3deef461f0532"></a>
+<a id="a3e930bffb40a78e570e3deef461f0532"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3e930bffb40a78e570e3deef461f0532">&#9670;&nbsp;</a></span>SetString() <span class="overload">[6/6]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -3404,16 +3533,18 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>The value itself for fluent API. </dd></dl>
-<dl class="section post"><dt>后置条件</dt><dd>IsString() == true &amp;&amp; GetString() != s.data() &amp;&amp; strcmp(GetString(),s.data() == 0 &amp;&amp; <a class="el" href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8" title="Get the length of string. ">GetStringLength()</a> == s.size() </dd></dl>
+<dl class="section post"><dt>后置条件</dt><dd>IsString() == true &amp;&amp; GetString() != s.data() &amp;&amp; strcmp(GetString(),s.data() == 0 &amp;&amp; <a class="el" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea" title="Get the length of string. ">GetStringLength()</a> == s.size() </dd></dl>
<dl class="section note"><dt>注解</dt><dd>Requires the definition of the preprocessor symbol <a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga2f2eef0ee4477f3fe5874703a66e997f">RAPIDJSON_HAS_STDSTRING</a>. </dd></dl>
</div>
</div>
-<a class="anchor" id="a06f10ef54f5692ce08206c26624a21db"></a>
+<a id="a06f10ef54f5692ce08206c26624a21db"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a06f10ef54f5692ce08206c26624a21db">&#9670;&nbsp;</a></span>Swap()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -3445,11 +3576,13 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div>
</div>
<h2 class="groupheader">友元及相关函数文档</h2>
-<a class="anchor" id="ae08898bef949f217f0e5d28e19f05992"></a>
+<a id="ae08898bef949f217f0e5d28e19f05992"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae08898bef949f217f0e5d28e19f05992">&#9670;&nbsp;</a></span>operator!=</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
@@ -3486,11 +3619,13 @@ template&lt;typename T &gt; </div>
</div>
</div>
-<a class="anchor" id="aaa465706fda1e1ef4513ce877e0b4b69"></a>
+<a id="aaa465706fda1e1ef4513ce877e0b4b69"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaa465706fda1e1ef4513ce877e0b4b69">&#9670;&nbsp;</a></span>operator==</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<div class="memtemplate">
template&lt;typename T &gt; </div>
<table class="mlabels">
@@ -3527,11 +3662,13 @@ template&lt;typename T &gt; </div>
</div>
</div>
-<a class="anchor" id="a58ecce8a34fc029039b8079de246bdaa"></a>
+<a id="a58ecce8a34fc029039b8079de246bdaa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a58ecce8a34fc029039b8079de246bdaa">&#9670;&nbsp;</a></span>swap</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename Encoding, typename Allocator&gt; </div>
+template&lt;typename Encoding, typename Allocator = MemoryPoolAllocator&lt;&gt;&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -3562,12 +3699,7 @@ template&lt;typename Encoding, typename Allocator&gt; </div>
</div><div class="memdoc">
<p>free-standing swap function helper </p>
-<p>Helper function to enable support for common swap implementation pattern based on <code>std::swap:</code> </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a58ecce8a34fc029039b8079de246bdaa">swap</a>(MyClass&amp; a, MyClass&amp; b) {</div>
-<div class="line"> <span class="keyword">using</span> std::swap;</div>
-<div class="line"> <a class="code" href="classrapidjson_1_1_generic_value.html#a58ecce8a34fc029039b8079de246bdaa">swap</a>(a.value, b.value);</div>
-<div class="line"> <span class="comment">// ...</span></div>
-<div class="line">}</div>
-</div><!-- fragment --> <dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db" title="Exchange the contents of this value with those of other. ">Swap()</a> </dd></dl>
+<p>Helper function to enable support for common swap implementation pattern based on <code>std::swap:</code> </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a58ecce8a34fc029039b8079de246bdaa">swap</a>(MyClass&amp; a, MyClass&amp; b) {</div><div class="line"> <span class="keyword">using</span> std::swap;</div><div class="line"> <a class="code" href="classrapidjson_1_1_generic_value.html#a58ecce8a34fc029039b8079de246bdaa">swap</a>(a.value, b.value);</div><div class="line"> <span class="comment">// ...</span></div><div class="line">}</div></div><!-- fragment --> <dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db" title="Exchange the contents of this value with those of other. ">Swap()</a> </dd></dl>
</div>
</div>
diff --git a/zh-cn/classrapidjson_1_1_generic_value.js b/zh-cn/classrapidjson_1_1_generic_value.js
index 874c300d..571a61be 100644
--- a/zh-cn/classrapidjson_1_1_generic_value.js
+++ b/zh-cn/classrapidjson_1_1_generic_value.js
@@ -32,7 +32,7 @@ var classrapidjson_1_1_generic_value =
[ "GenericValue", "classrapidjson_1_1_generic_value.html#a77b0f41557b3c34b57a180698312c4a8", null ],
[ "GenericValue", "classrapidjson_1_1_generic_value.html#a893da1069660536fd3943a0149206a6e", null ],
[ "~GenericValue", "classrapidjson_1_1_generic_value.html#a433a64b466c80cadf7d1acaa6f065437", null ],
- [ "Accept", "classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e", null ],
+ [ "Accept", "classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c", null ],
[ "AddMember", "classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68", null ],
[ "AddMember", "classrapidjson_1_1_generic_value.html#ad290f179591025e871bedbbac89ac276", null ],
[ "AddMember", "classrapidjson_1_1_generic_value.html#a578e35f3350717db2aae534969b2346a", null ],
@@ -41,13 +41,13 @@ var classrapidjson_1_1_generic_value =
[ "AddMember", "classrapidjson_1_1_generic_value.html#a2ccb4736d0f2ec07f06f630d8fe54f8d", null ],
[ "AddMember", "classrapidjson_1_1_generic_value.html#aa70ada250f3a0c5aeee0ce138d136b06", null ],
[ "Begin", "classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603", null ],
- [ "Begin", "classrapidjson_1_1_generic_value.html#abc8945d3411c6ce583d322753ce028e1", null ],
- [ "Capacity", "classrapidjson_1_1_generic_value.html#a6cbb8a305fdc40beb83bee2b99ac5b59", null ],
+ [ "Begin", "classrapidjson_1_1_generic_value.html#a07d947971c59c9ce884b3c5205c9238f", null ],
+ [ "Capacity", "classrapidjson_1_1_generic_value.html#a812e5c07f74a90566e7636330740eb6a", null ],
[ "Clear", "classrapidjson_1_1_generic_value.html#aa56b69bac5423622eff6998ce4802106", null ],
[ "CopyFrom", "classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae", null ],
- [ "Empty", "classrapidjson_1_1_generic_value.html#a08bf77a430b865404c57a93d8f0f6d3d", null ],
+ [ "Empty", "classrapidjson_1_1_generic_value.html#ad08a62c65a793ab1d0abe7eac03776fd", null ],
[ "End", "classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109", null ],
- [ "End", "classrapidjson_1_1_generic_value.html#ad2d9786831d721cf8f1bf0dbdf86404a", null ],
+ [ "End", "classrapidjson_1_1_generic_value.html#abdd6a3b703a03aada4c186a2365698e7", null ],
[ "Erase", "classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99", null ],
[ "Erase", "classrapidjson_1_1_generic_value.html#a916f443e02f9379d8fbde49a4d440f61", null ],
[ "EraseMember", "classrapidjson_1_1_generic_value.html#a163e60b101e5ae534597c050a6eba511", null ],
@@ -56,72 +56,72 @@ var classrapidjson_1_1_generic_value =
[ "EraseMember", "classrapidjson_1_1_generic_value.html#af930563f804086df25f70bb5f1de8e6a", null ],
[ "EraseMember", "classrapidjson_1_1_generic_value.html#a27db22089fc69aacda8309c593ed9812", null ],
[ "FindMember", "classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811", null ],
- [ "FindMember", "classrapidjson_1_1_generic_value.html#aad5c657dc7d79e128bec55eddc5a4164", null ],
+ [ "FindMember", "classrapidjson_1_1_generic_value.html#a4960b901fdd3e8f7bf766e471390a0b0", null ],
[ "FindMember", "classrapidjson_1_1_generic_value.html#a8d75bf0c6c0fa4f8d340a4236e98539b", null ],
- [ "FindMember", "classrapidjson_1_1_generic_value.html#af24703a7474efe0998a35002a24fe622", null ],
+ [ "FindMember", "classrapidjson_1_1_generic_value.html#a90916413828ce8da6868051236313583", null ],
[ "FindMember", "classrapidjson_1_1_generic_value.html#a278b420ea75b0ec18d88d4c9e9199d62", null ],
- [ "FindMember", "classrapidjson_1_1_generic_value.html#ad2b3832cef0c74490de72954f8891a90", null ],
- [ "Get", "classrapidjson_1_1_generic_value.html#a131eda3b3f5e37fca8dff43c77963fad", null ],
+ [ "FindMember", "classrapidjson_1_1_generic_value.html#ac38ba24b67587939ff4d76ab65340d11", null ],
+ [ "Get", "classrapidjson_1_1_generic_value.html#a01b08bc71b07839324b3a1fdc8341712", null ],
[ "Get", "classrapidjson_1_1_generic_value.html#aaa92aa34a1b7ba91980a461bd526a4db", null ],
[ "GetArray", "classrapidjson_1_1_generic_value.html#a252af37875a1115f107082263af2cb3c", null ],
- [ "GetArray", "classrapidjson_1_1_generic_value.html#a66f1a57c68b149a31faa739d51c463ec", null ],
- [ "GetBool", "classrapidjson_1_1_generic_value.html#a69d917b47799f63fc588bf294fa71483", null ],
- [ "GetDouble", "classrapidjson_1_1_generic_value.html#aa059dee923cc0446752e321ff70936a6", null ],
- [ "GetFloat", "classrapidjson_1_1_generic_value.html#a0eda9834f241e5c5b23161a7ee33758b", null ],
- [ "GetInt", "classrapidjson_1_1_generic_value.html#a92991a57de8cf42da2e4efc792acefea", null ],
- [ "GetInt64", "classrapidjson_1_1_generic_value.html#a77b677674bc92a6e6a78cc9736a44f1c", null ],
+ [ "GetArray", "classrapidjson_1_1_generic_value.html#a274f975f1a3127746e027c2a90fd101e", null ],
+ [ "GetBool", "classrapidjson_1_1_generic_value.html#a78d80b935babeedbfa71914a8fe5baa7", null ],
+ [ "GetDouble", "classrapidjson_1_1_generic_value.html#aa27d086d265f0ce447b15b15f0a2ed6e", null ],
+ [ "GetFloat", "classrapidjson_1_1_generic_value.html#a573712808dd5d8814c103cf55fd761b4", null ],
+ [ "GetInt", "classrapidjson_1_1_generic_value.html#a5f2396316c5145cb41ebbccfb03100ba", null ],
+ [ "GetInt64", "classrapidjson_1_1_generic_value.html#a01b8758dbfece60480392667795be717", null ],
[ "GetObject", "classrapidjson_1_1_generic_value.html#a538446f8bdb8e7765d1705d8d157358a", null ],
- [ "GetObject", "classrapidjson_1_1_generic_value.html#a0faeebacf8592f438654224f2b9f2fe7", null ],
- [ "GetString", "classrapidjson_1_1_generic_value.html#aab763460a97e8944ddedf51203581a3b", null ],
- [ "GetStringLength", "classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8", null ],
- [ "GetType", "classrapidjson_1_1_generic_value.html#aa646b271a6802e57c2987d133594690c", null ],
- [ "GetUint", "classrapidjson_1_1_generic_value.html#a0cbd9b2bfa0bb7fe196a79703c5f488e", null ],
- [ "GetUint64", "classrapidjson_1_1_generic_value.html#a25f0f486ad79b8e42774cb070da836c8", null ],
- [ "HasMember", "classrapidjson_1_1_generic_value.html#af17b9b6ba6a9fb4e02d2dced5aa0ee0c", null ],
- [ "HasMember", "classrapidjson_1_1_generic_value.html#afb1942ef13566484e1806689834a053f", null ],
- [ "HasMember", "classrapidjson_1_1_generic_value.html#a548e6c8a99c525573d933933610977cb", null ],
- [ "Is", "classrapidjson_1_1_generic_value.html#ade8d1ca2b8e8afa02cde46e26866440b", null ],
- [ "IsArray", "classrapidjson_1_1_generic_value.html#a2233b836b63bca749efae44a6e39757d", null ],
- [ "IsBool", "classrapidjson_1_1_generic_value.html#a9a3648431f0227759bade4363525619d", null ],
- [ "IsDouble", "classrapidjson_1_1_generic_value.html#a61b8b363430c366384ee2bbdcb91bf20", null ],
- [ "IsFalse", "classrapidjson_1_1_generic_value.html#a47e0d6193602b02b0d2852ce7335c5ff", null ],
- [ "IsFloat", "classrapidjson_1_1_generic_value.html#adaba7873c2c23ad2733c323040fee69f", null ],
- [ "IsInt", "classrapidjson_1_1_generic_value.html#a4d224cb84bf46a3adc1286ee9d976028", null ],
- [ "IsInt64", "classrapidjson_1_1_generic_value.html#a0a25f4740338ecb965ae9675abd673e2", null ],
- [ "IsLosslessDouble", "classrapidjson_1_1_generic_value.html#a3a7aca6411c7fb393e0a9129a2ba886d", null ],
- [ "IsLosslessFloat", "classrapidjson_1_1_generic_value.html#acc8ea5f64c4bb4d32b5286e5e9f4d0e0", null ],
- [ "IsNull", "classrapidjson_1_1_generic_value.html#a2666f119b3c883b251f74156d41a8239", null ],
- [ "IsNumber", "classrapidjson_1_1_generic_value.html#a00dd3013a94baa577d51fff5ac7c1bb0", null ],
- [ "IsObject", "classrapidjson_1_1_generic_value.html#a4f805574820d5e87cecbd5f154c79387", null ],
- [ "IsString", "classrapidjson_1_1_generic_value.html#a7821da23b34e3509a80469acfa1850f5", null ],
- [ "IsTrue", "classrapidjson_1_1_generic_value.html#a92f0524be583ff2b12c80587a57921d2", null ],
- [ "IsUint", "classrapidjson_1_1_generic_value.html#a48fbbb00daf332db840aa0f5644fc828", null ],
- [ "IsUint64", "classrapidjson_1_1_generic_value.html#aec193a145bd3e2d21a7896e2faa2a608", null ],
- [ "MemberBegin", "classrapidjson_1_1_generic_value.html#a469c0cc3e72f846757fb64fa52fafee5", null ],
+ [ "GetObject", "classrapidjson_1_1_generic_value.html#a35d6a245412e8ce81c5b5d6b9d9e881c", null ],
+ [ "GetString", "classrapidjson_1_1_generic_value.html#a97ef0b0785542eaa8e2337161c358c07", null ],
+ [ "GetStringLength", "classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea", null ],
+ [ "GetType", "classrapidjson_1_1_generic_value.html#ad951d4bff60d37dd603ce68a36f1732a", null ],
+ [ "GetUint", "classrapidjson_1_1_generic_value.html#aa1ab35be7c796a75dec562844a1917e6", null ],
+ [ "GetUint64", "classrapidjson_1_1_generic_value.html#aac009c514da7e112aa8a9054c4d3e247", null ],
+ [ "HasMember", "classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b", null ],
+ [ "HasMember", "classrapidjson_1_1_generic_value.html#a9b3b30acbe60d7a5b105afa05c1ddfb0", null ],
+ [ "HasMember", "classrapidjson_1_1_generic_value.html#a794129b8adffb97d123306a0c0ccaf71", null ],
+ [ "Is", "classrapidjson_1_1_generic_value.html#acc6b1791cca8daef18521918136264b7", null ],
+ [ "IsArray", "classrapidjson_1_1_generic_value.html#a917b849cbd1a0bda256e8841ca4ecf24", null ],
+ [ "IsBool", "classrapidjson_1_1_generic_value.html#a5e64a654ea30e182e4f0b4913c95a1d1", null ],
+ [ "IsDouble", "classrapidjson_1_1_generic_value.html#adcdd96c0780ecd834a98d09bc402a1ea", null ],
+ [ "IsFalse", "classrapidjson_1_1_generic_value.html#a5daef830cdbe445a6450be3feae2662a", null ],
+ [ "IsFloat", "classrapidjson_1_1_generic_value.html#a150726bc6f5a7af5bce9e9a8b76e0e98", null ],
+ [ "IsInt", "classrapidjson_1_1_generic_value.html#ac4f8e1cb46ffe319fad442265ab297b0", null ],
+ [ "IsInt64", "classrapidjson_1_1_generic_value.html#afd2e8dbf6112c2ea007a6274dd37e472", null ],
+ [ "IsLosslessDouble", "classrapidjson_1_1_generic_value.html#a8ffdbcf1cd70c87792f5d486313dc28c", null ],
+ [ "IsLosslessFloat", "classrapidjson_1_1_generic_value.html#a6188d3ad8430b56ef45b9bd5633eafce", null ],
+ [ "IsNull", "classrapidjson_1_1_generic_value.html#a064ecd709d167b07008acd79e941b68e", null ],
+ [ "IsNumber", "classrapidjson_1_1_generic_value.html#ac61d98a6f865040d8e250191e2a3a552", null ],
+ [ "IsObject", "classrapidjson_1_1_generic_value.html#ab5ce40f269b788b6dac0c2d95cf58201", null ],
+ [ "IsString", "classrapidjson_1_1_generic_value.html#a0dcb17e6f5ac240c4dfdb3aa97a394b8", null ],
+ [ "IsTrue", "classrapidjson_1_1_generic_value.html#a1ad0fa486347a4e58804bb8af5fe1050", null ],
+ [ "IsUint", "classrapidjson_1_1_generic_value.html#ae7043304c8625aec1fc2df3363e7bb0a", null ],
+ [ "IsUint64", "classrapidjson_1_1_generic_value.html#a5444562cb25d10a2cb1c5ef5a86c3e49", null ],
+ [ "MemberBegin", "classrapidjson_1_1_generic_value.html#ae89a77887aa3eb1f1f913727cbff6786", null ],
[ "MemberBegin", "classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a", null ],
- [ "MemberCount", "classrapidjson_1_1_generic_value.html#acf5019b9002ebfd66a1191d19e986c7b", null ],
- [ "MemberEnd", "classrapidjson_1_1_generic_value.html#a88d2c5b861cd8a6a14976456dfbc1f64", null ],
+ [ "MemberCount", "classrapidjson_1_1_generic_value.html#a8b7e47c57a20d0de0cd19eee799ebd88", null ],
+ [ "MemberEnd", "classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c", null ],
[ "MemberEnd", "classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee", null ],
[ "Move", "classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b", null ],
- [ "ObjectEmpty", "classrapidjson_1_1_generic_value.html#a1f28a345c9b9c93c76abf695669e4378", null ],
- [ "operator!=", "classrapidjson_1_1_generic_value.html#a0cb232adce79932c499c5f04cbc8dc54", null ],
- [ "operator!=", "classrapidjson_1_1_generic_value.html#aff1711092a1278d36b8152f5520a686e", null ],
- [ "operator!=", "classrapidjson_1_1_generic_value.html#ad7e6ef7acbbfef57485b9f2dee620dbf", null ],
+ [ "ObjectEmpty", "classrapidjson_1_1_generic_value.html#a1f4835373e05abae52b91e1c6b7ec92c", null ],
+ [ "operator!=", "classrapidjson_1_1_generic_value.html#ad5bf5afd53f21f370f917041b3be4bfc", null ],
+ [ "operator!=", "classrapidjson_1_1_generic_value.html#a6443cf5323fb46c4c51cd15a365da49b", null ],
+ [ "operator!=", "classrapidjson_1_1_generic_value.html#ae6fe0576ff0336f6e2b09fe32f3ff809", null ],
[ "operator=", "classrapidjson_1_1_generic_value.html#ae8bcedd951f50b69786aaaa1828e9fac", null ],
[ "operator=", "classrapidjson_1_1_generic_value.html#aecc9d0a6aafe31f4fdf9f6e75e5f089c", null ],
[ "operator=", "classrapidjson_1_1_generic_value.html#ab7446da62fdc61d6d987d508cdb6ac13", null ],
- [ "operator==", "classrapidjson_1_1_generic_value.html#afbdbc9cbc3b59feb5a28d5bfee97dbb3", null ],
- [ "operator==", "classrapidjson_1_1_generic_value.html#a7bed9035dd1beeabe6f47e870874e793", null ],
- [ "operator==", "classrapidjson_1_1_generic_value.html#a6f7f7c66d8f8c08e496ae831ba114126", null ],
- [ "operator==", "classrapidjson_1_1_generic_value.html#ae6c196979931e8283bcbd499133169ed", null ],
+ [ "operator==", "classrapidjson_1_1_generic_value.html#ab4e5285102bb686f39bca2855a17a181", null ],
+ [ "operator==", "classrapidjson_1_1_generic_value.html#af03ef6020e188bbfceb018da5cd8becc", null ],
+ [ "operator==", "classrapidjson_1_1_generic_value.html#af089d2bee0386ca7504ff4fab466c87f", null ],
+ [ "operator==", "classrapidjson_1_1_generic_value.html#aaddbbbb35cd783f209f889cf8dea9570", null ],
[ "operator[]", "classrapidjson_1_1_generic_value.html#a8ec7fc7f221306925c7674dccbe02b07", null ],
- [ "operator[]", "classrapidjson_1_1_generic_value.html#a015a8559e69e0e6237ec5ce2f0b38f43", null ],
+ [ "operator[]", "classrapidjson_1_1_generic_value.html#a408ab1a7454dfa54917b92195f81622b", null ],
[ "operator[]", "classrapidjson_1_1_generic_value.html#aa62b57746c96ce3d264b2fe178196062", null ],
- [ "operator[]", "classrapidjson_1_1_generic_value.html#a8f135403c71fa69ba164f019e1a51fd0", null ],
+ [ "operator[]", "classrapidjson_1_1_generic_value.html#a295506a024a28d02a2ddae9d0e47c58b", null ],
[ "operator[]", "classrapidjson_1_1_generic_value.html#a4d337239ee3e2096462f6a36b9ab0811", null ],
- [ "operator[]", "classrapidjson_1_1_generic_value.html#a4c05202c7f49309c9faffe98ff1e5878", null ],
+ [ "operator[]", "classrapidjson_1_1_generic_value.html#a66b362b364e57f17ae56ea1d41eb4883", null ],
[ "operator[]", "classrapidjson_1_1_generic_value.html#adc312de070d03a63e6c692c9c61db156", null ],
- [ "operator[]", "classrapidjson_1_1_generic_value.html#a0b02962601636f6b040c6451ec7a3778", null ],
+ [ "operator[]", "classrapidjson_1_1_generic_value.html#a1bac9a1db05bb5825bc0adaeabf4775b", null ],
[ "PopBack", "classrapidjson_1_1_generic_value.html#ae475f31fb851138ced40e2ff6cb43ca6", null ],
[ "PushBack", "classrapidjson_1_1_generic_value.html#a0ec9f34bef5890241d4bc882b73b1db4", null ],
[ "PushBack", "classrapidjson_1_1_generic_value.html#a41946915cb219a684f6ffc9341efee22", null ],
@@ -150,7 +150,7 @@ var classrapidjson_1_1_generic_value =
[ "SetString", "classrapidjson_1_1_generic_value.html#a3e930bffb40a78e570e3deef461f0532", null ],
[ "SetUint", "classrapidjson_1_1_generic_value.html#a0e173c8bb01a536c94529d4e3f9bfc67", null ],
[ "SetUint64", "classrapidjson_1_1_generic_value.html#a8c89bdc7f8dd14e4ab974e587b99405a", null ],
- [ "Size", "classrapidjson_1_1_generic_value.html#a2e6e849cfb368a3fa708f8bcf1d56ec9", null ],
+ [ "Size", "classrapidjson_1_1_generic_value.html#a799a8a2503989f486f3fc7a660266555", null ],
[ "Swap", "classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db", null ],
[ "GenericDocument", "classrapidjson_1_1_generic_value.html#ab05bc9e52e201a2867ea5bac141ee1ae", null ],
[ "GenericValue", "classrapidjson_1_1_generic_value.html#a899449e1a645b5e377af059fb61113d8", null ],
diff --git a/zh-cn/classrapidjson_1_1_handler.html b/zh-cn/classrapidjson_1_1_handler.html
index f2c07bfa..0040e604 100644
--- a/zh-cn/classrapidjson_1_1_handler.html
+++ b/zh-cn/classrapidjson_1_1_handler.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::Handler类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_handler.html','');}
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -87,26 +88,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_handler.html','');}
<p><code>#include &lt;<a class="el" href="reader_8h_source.html">reader.h</a>&gt;</code></p>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p>Concept for receiving events from <a class="el" href="classrapidjson_1_1_generic_reader.html" title="SAX-style JSON parser. Use Reader for UTF8 encoding and default allocator. ">GenericReader</a> upon parsing. The functions return true if no error occurs. If they return false, the event publisher should terminate the process. </p>
-<div class="fragment"><div class="line">concept Handler {</div>
-<div class="line"> <span class="keyword">typename</span> Ch;</div>
-<div class="line"></div>
-<div class="line"> <span class="keywordtype">bool</span> Null();</div>
-<div class="line"> <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b);</div>
-<div class="line"> <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i);</div>
-<div class="line"> <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> i);</div>
-<div class="line"> <span class="keywordtype">bool</span> Int64(int64_t i);</div>
-<div class="line"> <span class="keywordtype">bool</span> Uint64(uint64_t i);</div>
-<div class="line"> <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span> d);<span class="comment"></span></div>
-<div class="line"><span class="comment"> /// enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length)</span></div>
-<div class="line"><span class="comment"></span> <span class="keywordtype">bool</span> RawNumber(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy);</div>
-<div class="line"> <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy);</div>
-<div class="line"> <span class="keywordtype">bool</span> StartObject();</div>
-<div class="line"> <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy);</div>
-<div class="line"> <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount);</div>
-<div class="line"> <span class="keywordtype">bool</span> StartArray();</div>
-<div class="line"> <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount);</div>
-<div class="line">};</div>
-</div><!-- fragment --> </div><hr/>该类的文档由以下文件生成:<ul>
+<div class="fragment"><div class="line">concept Handler {</div><div class="line"> <span class="keyword">typename</span> Ch;</div><div class="line"></div><div class="line"> <span class="keywordtype">bool</span> Null();</div><div class="line"> <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b);</div><div class="line"> <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i);</div><div class="line"> <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> i);</div><div class="line"> <span class="keywordtype">bool</span> Int64(int64_t i);</div><div class="line"> <span class="keywordtype">bool</span> Uint64(uint64_t i);</div><div class="line"> <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span> d);<span class="comment"></span></div><div class="line"><span class="comment"> /// enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length)</span></div><div class="line"><span class="comment"></span> <span class="keywordtype">bool</span> RawNumber(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy);</div><div class="line"> <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy);</div><div class="line"> <span class="keywordtype">bool</span> StartObject();</div><div class="line"> <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy);</div><div class="line"> <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount);</div><div class="line"> <span class="keywordtype">bool</span> StartArray();</div><div class="line"> <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount);</div><div class="line">};</div></div><!-- fragment --> </div><hr/>该类的文档由以下文件生成:<ul>
<li>include/rapidjson/<a class="el" href="reader_8h_source.html">reader.h</a></li>
</ul>
</div><!-- contents -->
diff --git a/zh-cn/classrapidjson_1_1_i_generic_remote_schema_document_provider-members.html b/zh-cn/classrapidjson_1_1_i_generic_remote_schema_document_provider-members.html
index a0b08029..c10316b7 100644
--- a/zh-cn/classrapidjson_1_1_i_generic_remote_schema_document_provider-members.html
+++ b/zh-cn/classrapidjson_1_1_i_generic_remote_schema_document_provider-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_i_generic_remote_sc
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/classrapidjson_1_1_i_generic_remote_schema_document_provider.html b/zh-cn/classrapidjson_1_1_i_generic_remote_schema_document_provider.html
index d658c0eb..e85b5a37 100644
--- a/zh-cn/classrapidjson_1_1_i_generic_remote_schema_document_provider.html
+++ b/zh-cn/classrapidjson_1_1_i_generic_remote_schema_document_provider.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::IGenericRemoteSchemaDocumentProvider&lt; SchemaDocumentType &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_i_generic_remote_sc
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -87,13 +88,13 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_i_generic_remote_sc
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:af1eaa40c0f7d7b778f2f24666d56a441"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1eaa40c0f7d7b778f2f24666d56a441"></a>
+<tr class="memitem:af1eaa40c0f7d7b778f2f24666d56a441"><td class="memItemLeft" align="right" valign="top"><a id="af1eaa40c0f7d7b778f2f24666d56a441"></a>
typedef SchemaDocumentType::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:af1eaa40c0f7d7b778f2f24666d56a441"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:a41dc360abb19df5a09c1ed1a83ec683c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41dc360abb19df5a09c1ed1a83ec683c"></a>
+<tr class="memitem:a41dc360abb19df5a09c1ed1a83ec683c"><td class="memItemLeft" align="right" valign="top"><a id="a41dc360abb19df5a09c1ed1a83ec683c"></a>
virtual const SchemaDocumentType *&#160;</td><td class="memItemRight" valign="bottom"><b>GetRemoteDocument</b> (const Ch *uri, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length)=0</td></tr>
<tr class="separator:a41dc360abb19df5a09c1ed1a83ec683c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
diff --git a/zh-cn/classrapidjson_1_1_memory_pool_allocator-members.html b/zh-cn/classrapidjson_1_1_memory_pool_allocator-members.html
index 6ed4c1a2..d8accdd9 100644
--- a/zh-cn/classrapidjson_1_1_memory_pool_allocator-members.html
+++ b/zh-cn/classrapidjson_1_1_memory_pool_allocator-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_memory_pool_allocat
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -83,7 +84,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_memory_pool_allocat
<p>成员的完整列表,这些成员属于 <a class="el" href="classrapidjson_1_1_memory_pool_allocator.html">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a>,包括所有继承而来的类成员</p>
<table class="directory">
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a7433671a5129289939c3a4f24d173b6e">Capacity</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#acdf0fc08cbcd940205a0a6289f1c58bd">Capacity</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#aa050d52c62503ca6d6f66289ce83a18e">Clear</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a9470dfeaeef3b3775249df2223129a2b">Free</a>(void *ptr)</td><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a2606d96e19bcfc9d4bf58aefe55c1b29">kNeedFree</a></td><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
@@ -91,7 +92,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_memory_pool_allocat
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a59d783f4feba17dcd35d9f25fcbc09f4">MemoryPoolAllocator</a>(size_t chunkSize=kDefaultChunkCapacity, BaseAllocator *baseAllocator=0)</td><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#abcc572bdb6902c9d69711540db5098a7">MemoryPoolAllocator</a>(void *buffer, size_t size, size_t chunkSize=kDefaultChunkCapacity, BaseAllocator *baseAllocator=0)</td><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a880524b17bbecb5d2691b8075050d55d">Realloc</a>(void *originalPtr, size_t originalSize, size_t newSize)</td><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#aad83829efa77ad26a23f74d6cab3d781">Size</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#aa08b368c54e7643fcd23ef55139b9b40">Size</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#aa1d5b36c67611937e8ad6b2be53a483e">~MemoryPoolAllocator</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
diff --git a/zh-cn/classrapidjson_1_1_memory_pool_allocator.html b/zh-cn/classrapidjson_1_1_memory_pool_allocator.html
index f91755e7..c729e122 100644
--- a/zh-cn/classrapidjson_1_1_memory_pool_allocator.html
+++ b/zh-cn/classrapidjson_1_1_memory_pool_allocator.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_memory_pool_allocat
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -103,35 +104,35 @@ Public 成员函数</h2></td></tr>
<tr class="memitem:aa1d5b36c67611937e8ad6b2be53a483e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#aa1d5b36c67611937e8ad6b2be53a483e">~MemoryPoolAllocator</a> ()</td></tr>
<tr class="memdesc:aa1d5b36c67611937e8ad6b2be53a483e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <a href="#aa1d5b36c67611937e8ad6b2be53a483e">更多...</a><br /></td></tr>
<tr class="separator:aa1d5b36c67611937e8ad6b2be53a483e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa050d52c62503ca6d6f66289ce83a18e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa050d52c62503ca6d6f66289ce83a18e"></a>
+<tr class="memitem:aa050d52c62503ca6d6f66289ce83a18e"><td class="memItemLeft" align="right" valign="top"><a id="aa050d52c62503ca6d6f66289ce83a18e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#aa050d52c62503ca6d6f66289ce83a18e">Clear</a> ()</td></tr>
<tr class="memdesc:aa050d52c62503ca6d6f66289ce83a18e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deallocates all memory chunks, excluding the user-supplied buffer. <br /></td></tr>
<tr class="separator:aa050d52c62503ca6d6f66289ce83a18e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7433671a5129289939c3a4f24d173b6e"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a7433671a5129289939c3a4f24d173b6e">Capacity</a> () const </td></tr>
-<tr class="memdesc:a7433671a5129289939c3a4f24d173b6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the total capacity of allocated memory chunks. <a href="#a7433671a5129289939c3a4f24d173b6e">更多...</a><br /></td></tr>
-<tr class="separator:a7433671a5129289939c3a4f24d173b6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aad83829efa77ad26a23f74d6cab3d781"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#aad83829efa77ad26a23f74d6cab3d781">Size</a> () const </td></tr>
-<tr class="memdesc:aad83829efa77ad26a23f74d6cab3d781"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the memory blocks allocated. <a href="#aad83829efa77ad26a23f74d6cab3d781">更多...</a><br /></td></tr>
-<tr class="separator:aad83829efa77ad26a23f74d6cab3d781"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a208c29e04b1d748bfe068444b7044344"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a208c29e04b1d748bfe068444b7044344"></a>
+<tr class="memitem:acdf0fc08cbcd940205a0a6289f1c58bd"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#acdf0fc08cbcd940205a0a6289f1c58bd">Capacity</a> () const</td></tr>
+<tr class="memdesc:acdf0fc08cbcd940205a0a6289f1c58bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the total capacity of allocated memory chunks. <a href="#acdf0fc08cbcd940205a0a6289f1c58bd">更多...</a><br /></td></tr>
+<tr class="separator:acdf0fc08cbcd940205a0a6289f1c58bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa08b368c54e7643fcd23ef55139b9b40"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#aa08b368c54e7643fcd23ef55139b9b40">Size</a> () const</td></tr>
+<tr class="memdesc:aa08b368c54e7643fcd23ef55139b9b40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the memory blocks allocated. <a href="#aa08b368c54e7643fcd23ef55139b9b40">更多...</a><br /></td></tr>
+<tr class="separator:aa08b368c54e7643fcd23ef55139b9b40"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a208c29e04b1d748bfe068444b7044344"><td class="memItemLeft" align="right" valign="top"><a id="a208c29e04b1d748bfe068444b7044344"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a208c29e04b1d748bfe068444b7044344">Malloc</a> (size_t size)</td></tr>
<tr class="memdesc:a208c29e04b1d748bfe068444b7044344"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocates a memory block. (concept <a class="el" href="classrapidjson_1_1_allocator.html" title="Concept for allocating, resizing and freeing memory block. ">Allocator</a>) <br /></td></tr>
<tr class="separator:a208c29e04b1d748bfe068444b7044344"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a880524b17bbecb5d2691b8075050d55d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a880524b17bbecb5d2691b8075050d55d"></a>
+<tr class="memitem:a880524b17bbecb5d2691b8075050d55d"><td class="memItemLeft" align="right" valign="top"><a id="a880524b17bbecb5d2691b8075050d55d"></a>
void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a880524b17bbecb5d2691b8075050d55d">Realloc</a> (void *originalPtr, size_t originalSize, size_t newSize)</td></tr>
<tr class="memdesc:a880524b17bbecb5d2691b8075050d55d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resizes a memory block (concept <a class="el" href="classrapidjson_1_1_allocator.html" title="Concept for allocating, resizing and freeing memory block. ">Allocator</a>) <br /></td></tr>
<tr class="separator:a880524b17bbecb5d2691b8075050d55d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
-<tr class="memitem:a9470dfeaeef3b3775249df2223129a2b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9470dfeaeef3b3775249df2223129a2b"></a>
+<tr class="memitem:a9470dfeaeef3b3775249df2223129a2b"><td class="memItemLeft" align="right" valign="top"><a id="a9470dfeaeef3b3775249df2223129a2b"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a9470dfeaeef3b3775249df2223129a2b">Free</a> (void *ptr)</td></tr>
<tr class="memdesc:a9470dfeaeef3b3775249df2223129a2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees a memory block (concept <a class="el" href="classrapidjson_1_1_allocator.html" title="Concept for allocating, resizing and freeing memory block. ">Allocator</a>) <br /></td></tr>
<tr class="separator:a9470dfeaeef3b3775249df2223129a2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
静态 Public 属性</h2></td></tr>
-<tr class="memitem:a2606d96e19bcfc9d4bf58aefe55c1b29"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2606d96e19bcfc9d4bf58aefe55c1b29"></a>
+<tr class="memitem:a2606d96e19bcfc9d4bf58aefe55c1b29"><td class="memItemLeft" align="right" valign="top"><a id="a2606d96e19bcfc9d4bf58aefe55c1b29"></a>
static const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a2606d96e19bcfc9d4bf58aefe55c1b29">kNeedFree</a> = false</td></tr>
<tr class="memdesc:a2606d96e19bcfc9d4bf58aefe55c1b29"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tell users that no need to call <a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a9470dfeaeef3b3775249df2223129a2b" title="Frees a memory block (concept Allocator) ">Free()</a> with this allocator. (concept <a class="el" href="classrapidjson_1_1_allocator.html" title="Concept for allocating, resizing and freeing memory block. ">Allocator</a>) <br /></td></tr>
<tr class="separator:a2606d96e19bcfc9d4bf58aefe55c1b29"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -155,7 +156,9 @@ class rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</h3>
</dl>
<dl class="section note"><dt>注解</dt><dd>implements <a class="el" href="classrapidjson_1_1_allocator.html" title="Concept for allocating, resizing and freeing memory block. ">Allocator</a> concept </dd></dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
-<a class="anchor" id="a59d783f4feba17dcd35d9f25fcbc09f4"></a>
+<a id="a59d783f4feba17dcd35d9f25fcbc09f4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a59d783f4feba17dcd35d9f25fcbc09f4">&#9670;&nbsp;</a></span>MemoryPoolAllocator() <span class="overload">[1/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -200,7 +203,9 @@ template&lt;typename BaseAllocator = CrtAllocator&gt; </div>
</div>
</div>
-<a class="anchor" id="abcc572bdb6902c9d69711540db5098a7"></a>
+<a id="abcc572bdb6902c9d69711540db5098a7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abcc572bdb6902c9d69711540db5098a7">&#9670;&nbsp;</a></span>MemoryPoolAllocator() <span class="overload">[2/2]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -261,7 +266,9 @@ template&lt;typename BaseAllocator = CrtAllocator&gt; </div>
</div>
</div>
-<a class="anchor" id="aa1d5b36c67611937e8ad6b2be53a483e"></a>
+<a id="aa1d5b36c67611937e8ad6b2be53a483e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa1d5b36c67611937e8ad6b2be53a483e">&#9670;&nbsp;</a></span>~MemoryPoolAllocator()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -290,7 +297,9 @@ template&lt;typename BaseAllocator = CrtAllocator&gt; </div>
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
-<a class="anchor" id="a7433671a5129289939c3a4f24d173b6e"></a>
+<a id="acdf0fc08cbcd940205a0a6289f1c58bd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acdf0fc08cbcd940205a0a6289f1c58bd">&#9670;&nbsp;</a></span>Capacity()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -318,7 +327,9 @@ template&lt;typename BaseAllocator = CrtAllocator&gt; </div>
</div>
</div>
-<a class="anchor" id="aad83829efa77ad26a23f74d6cab3d781"></a>
+<a id="aa08b368c54e7643fcd23ef55139b9b40"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa08b368c54e7643fcd23ef55139b9b40">&#9670;&nbsp;</a></span>Size()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
diff --git a/zh-cn/classrapidjson_1_1_memory_pool_allocator.js b/zh-cn/classrapidjson_1_1_memory_pool_allocator.js
index f5f821a8..5a450df6 100644
--- a/zh-cn/classrapidjson_1_1_memory_pool_allocator.js
+++ b/zh-cn/classrapidjson_1_1_memory_pool_allocator.js
@@ -3,9 +3,9 @@ var classrapidjson_1_1_memory_pool_allocator =
[ "MemoryPoolAllocator", "classrapidjson_1_1_memory_pool_allocator.html#a59d783f4feba17dcd35d9f25fcbc09f4", null ],
[ "MemoryPoolAllocator", "classrapidjson_1_1_memory_pool_allocator.html#abcc572bdb6902c9d69711540db5098a7", null ],
[ "~MemoryPoolAllocator", "classrapidjson_1_1_memory_pool_allocator.html#aa1d5b36c67611937e8ad6b2be53a483e", null ],
- [ "Capacity", "classrapidjson_1_1_memory_pool_allocator.html#a7433671a5129289939c3a4f24d173b6e", null ],
+ [ "Capacity", "classrapidjson_1_1_memory_pool_allocator.html#acdf0fc08cbcd940205a0a6289f1c58bd", null ],
[ "Clear", "classrapidjson_1_1_memory_pool_allocator.html#aa050d52c62503ca6d6f66289ce83a18e", null ],
[ "Malloc", "classrapidjson_1_1_memory_pool_allocator.html#a208c29e04b1d748bfe068444b7044344", null ],
[ "Realloc", "classrapidjson_1_1_memory_pool_allocator.html#a880524b17bbecb5d2691b8075050d55d", null ],
- [ "Size", "classrapidjson_1_1_memory_pool_allocator.html#aad83829efa77ad26a23f74d6cab3d781", null ]
+ [ "Size", "classrapidjson_1_1_memory_pool_allocator.html#aa08b368c54e7643fcd23ef55139b9b40", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_pretty_writer-members.html b/zh-cn/classrapidjson_1_1_pretty_writer-members.html
index c1e2971a..85db242f 100644
--- a/zh-cn/classrapidjson_1_1_pretty_writer-members.html
+++ b/zh-cn/classrapidjson_1_1_pretty_writer-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_pretty_writer.html'
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,13 +93,13 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_pretty_writer.html'
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EndValue</b>(bool ret) (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html#a72cefd18d176bc12a53adb3185c51ca7">Flush</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>formatOptions_</b> (定义于 <a class="el" href="classrapidjson_1_1_pretty_writer.html">rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_pretty_writer.html">rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetMaxDecimalPlaces</b>() const (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetMaxDecimalPlaces</b>() const (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>hasRoot_</b> (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>indentChar_</b> (定义于 <a class="el" href="classrapidjson_1_1_pretty_writer.html">rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_pretty_writer.html">rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>indentCharCount_</b> (定义于 <a class="el" href="classrapidjson_1_1_pretty_writer.html">rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_pretty_writer.html">rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Int</b>(int i) (定义于 <a class="el" href="classrapidjson_1_1_pretty_writer.html">rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_pretty_writer.html">rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Int64</b>(int64_t i64) (定义于 <a class="el" href="classrapidjson_1_1_pretty_writer.html">rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_pretty_writer.html">rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html#a0cde8037db76f887cd9c557fd68630c5">IsComplete</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html#a190d964d3e62155e87153e858a0b04da">IsComplete</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>kDefaultLevelDepth</b> (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>kDefaultMaxDecimalPlaces</b> (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Key</b>(const Ch *str, SizeType length, bool copy=false) (定义于 <a class="el" href="classrapidjson_1_1_pretty_writer.html">rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_pretty_writer.html">rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
diff --git a/zh-cn/classrapidjson_1_1_pretty_writer.html b/zh-cn/classrapidjson_1_1_pretty_writer.html
index 1af61498..ae0e2741 100644
--- a/zh-cn/classrapidjson_1_1_pretty_writer.html
+++ b/zh-cn/classrapidjson_1_1_pretty_writer.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_pretty_writer.html'
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -87,7 +88,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_pretty_writer.html'
</div><!--header-->
<div class="contents">
-<p><a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer. ">Writer</a> with indentation and spacing.
+<p><a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer ">Writer</a> with indentation and spacing.
<a href="classrapidjson_1_1_pretty_writer.html#details">更多...</a></p>
<p><code>#include &lt;<a class="el" href="prettywriter_8h_source.html">prettywriter.h</a>&gt;</code></p>
@@ -95,33 +96,31 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_pretty_writer.html'
类 rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt; 继承关系图:</div>
<div class="dyncontent">
<div class="center">
- <img src="classrapidjson_1_1_pretty_writer.png" usemap="#rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;_map" alt=""/>
- <map id="rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;_map" name="rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;_map">
-<area href="classrapidjson_1_1_writer.html" title="JSON writer. " alt="rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;" shape="rect" coords="0,0,596,24"/>
+ <img src="classrapidjson_1_1_pretty_writer.png" usemap="#rapidjson::PrettyWriter_3C_20OutputStream_2C_20SourceEncoding_2C_20TargetEncoding_2C_20StackAllocator_2C_20writeFlags_20_3E_map" alt=""/>
+ <map id="rapidjson::PrettyWriter_3C_20OutputStream_2C_20SourceEncoding_2C_20TargetEncoding_2C_20StackAllocator_2C_20writeFlags_20_3E_map" name="rapidjson::PrettyWriter_3C_20OutputStream_2C_20SourceEncoding_2C_20TargetEncoding_2C_20StackAllocator_2C_20writeFlags_20_3E_map">
+<area href="classrapidjson_1_1_writer.html" title="JSON writer " alt="rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;" shape="rect" coords="0,0,596,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a792881200bdf51add62117617e66bd49"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a792881200bdf51add62117617e66bd49"></a>
-typedef <a class="el" href="classrapidjson_1_1_writer.html">Writer</a>&lt; OutputStream, <br class="typebreak" />
-SourceEncoding, TargetEncoding, <br class="typebreak" />
-StackAllocator, writeFlags &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Base</b></td></tr>
+<tr class="memitem:a792881200bdf51add62117617e66bd49"><td class="memItemLeft" align="right" valign="top"><a id="a792881200bdf51add62117617e66bd49"></a>
+typedef <a class="el" href="classrapidjson_1_1_writer.html">Writer</a>&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Base</b></td></tr>
<tr class="separator:a792881200bdf51add62117617e66bd49"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a74a38902073aa599c8bcc6a3ca6126d0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74a38902073aa599c8bcc6a3ca6126d0"></a>
+<tr class="memitem:a74a38902073aa599c8bcc6a3ca6126d0"><td class="memItemLeft" align="right" valign="top"><a id="a74a38902073aa599c8bcc6a3ca6126d0"></a>
typedef Base::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a74a38902073aa599c8bcc6a3ca6126d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classrapidjson_1_1_writer"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classrapidjson_1_1_writer')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td></tr>
-<tr class="memitem:a2cf973937ca1110293bf1350fac2a6d6 inherit pub_types_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cf973937ca1110293bf1350fac2a6d6"></a>
+<tr class="memitem:a2cf973937ca1110293bf1350fac2a6d6 inherit pub_types_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a2cf973937ca1110293bf1350fac2a6d6"></a>
typedef SourceEncoding::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a2cf973937ca1110293bf1350fac2a6d6 inherit pub_types_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a688d7ebf5c8015e423b7a970afc8e0a0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_pretty_writer.html#a688d7ebf5c8015e423b7a970afc8e0a0">PrettyWriter</a> (OutputStream &amp;os, StackAllocator *allocator=0, size_t levelDepth=Base::kDefaultLevelDepth)</td></tr>
-<tr class="memdesc:a688d7ebf5c8015e423b7a970afc8e0a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="#a688d7ebf5c8015e423b7a970afc8e0a0">更多...</a><br /></td></tr>
+<tr class="memdesc:a688d7ebf5c8015e423b7a970afc8e0a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor <a href="#a688d7ebf5c8015e423b7a970afc8e0a0">更多...</a><br /></td></tr>
<tr class="separator:a688d7ebf5c8015e423b7a970afc8e0a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2872cf0f442e07fd823846432c0d3923"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2872cf0f442e07fd823846432c0d3923"></a>
+<tr class="memitem:a2872cf0f442e07fd823846432c0d3923"><td class="memItemLeft" align="right" valign="top"><a id="a2872cf0f442e07fd823846432c0d3923"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>PrettyWriter</b> (StackAllocator *allocator=0, size_t levelDepth=Base::kDefaultLevelDepth)</td></tr>
<tr class="separator:a2872cf0f442e07fd823846432c0d3923"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a121686c29ca7fe071fa4108c46955ff0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_pretty_writer.html#a121686c29ca7fe071fa4108c46955ff0">SetIndent</a> (Ch indentChar, unsigned indentCharCount)</td></tr>
@@ -136,262 +135,262 @@ Public 成员函数</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Implementation of Handler</div></td></tr>
<tr><td colspan="2"><div class="groupText"><dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a> </dd></dl>
</div></td></tr>
-<tr class="memitem:afb049092845d2c0168f1570cf4ad66bc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb049092845d2c0168f1570cf4ad66bc"></a>
+<tr class="memitem:afb049092845d2c0168f1570cf4ad66bc"><td class="memItemLeft" align="right" valign="top"><a id="afb049092845d2c0168f1570cf4ad66bc"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Null</b> ()</td></tr>
<tr class="separator:afb049092845d2c0168f1570cf4ad66bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab4507239564501014bed4375bdebc630"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4507239564501014bed4375bdebc630"></a>
+<tr class="memitem:ab4507239564501014bed4375bdebc630"><td class="memItemLeft" align="right" valign="top"><a id="ab4507239564501014bed4375bdebc630"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Bool</b> (bool b)</td></tr>
<tr class="separator:ab4507239564501014bed4375bdebc630"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a631a35ee8006c1c218ce78e3d919c927"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a631a35ee8006c1c218ce78e3d919c927"></a>
+<tr class="memitem:a631a35ee8006c1c218ce78e3d919c927"><td class="memItemLeft" align="right" valign="top"><a id="a631a35ee8006c1c218ce78e3d919c927"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Int</b> (int i)</td></tr>
<tr class="separator:a631a35ee8006c1c218ce78e3d919c927"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a93a81e65915f0b607a2f69b2d9728c39"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a93a81e65915f0b607a2f69b2d9728c39"></a>
+<tr class="memitem:a93a81e65915f0b607a2f69b2d9728c39"><td class="memItemLeft" align="right" valign="top"><a id="a93a81e65915f0b607a2f69b2d9728c39"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Uint</b> (unsigned u)</td></tr>
<tr class="separator:a93a81e65915f0b607a2f69b2d9728c39"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aebdf6ed7eeb5e953b941239384d3a4e1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aebdf6ed7eeb5e953b941239384d3a4e1"></a>
+<tr class="memitem:aebdf6ed7eeb5e953b941239384d3a4e1"><td class="memItemLeft" align="right" valign="top"><a id="aebdf6ed7eeb5e953b941239384d3a4e1"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Int64</b> (int64_t i64)</td></tr>
<tr class="separator:aebdf6ed7eeb5e953b941239384d3a4e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3a2d3bf5af1edf76b4d2c6b1fdf08d26"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3a2d3bf5af1edf76b4d2c6b1fdf08d26"></a>
+<tr class="memitem:a3a2d3bf5af1edf76b4d2c6b1fdf08d26"><td class="memItemLeft" align="right" valign="top"><a id="a3a2d3bf5af1edf76b4d2c6b1fdf08d26"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Uint64</b> (uint64_t u64)</td></tr>
<tr class="separator:a3a2d3bf5af1edf76b4d2c6b1fdf08d26"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a912576054f9ebf5c614e42981f8404ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a912576054f9ebf5c614e42981f8404ce"></a>
+<tr class="memitem:a912576054f9ebf5c614e42981f8404ce"><td class="memItemLeft" align="right" valign="top"><a id="a912576054f9ebf5c614e42981f8404ce"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Double</b> (double d)</td></tr>
<tr class="separator:a912576054f9ebf5c614e42981f8404ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1189fbfd7e57207be1d5dc36d3d4b385"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1189fbfd7e57207be1d5dc36d3d4b385"></a>
+<tr class="memitem:a1189fbfd7e57207be1d5dc36d3d4b385"><td class="memItemLeft" align="right" valign="top"><a id="a1189fbfd7e57207be1d5dc36d3d4b385"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>RawNumber</b> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, bool copy=false)</td></tr>
<tr class="separator:a1189fbfd7e57207be1d5dc36d3d4b385"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af3c6ad244ef86efafa62ff3b3dd8e25b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3c6ad244ef86efafa62ff3b3dd8e25b"></a>
+<tr class="memitem:af3c6ad244ef86efafa62ff3b3dd8e25b"><td class="memItemLeft" align="right" valign="top"><a id="af3c6ad244ef86efafa62ff3b3dd8e25b"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>String</b> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, bool copy=false)</td></tr>
<tr class="separator:af3c6ad244ef86efafa62ff3b3dd8e25b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a21fa2422fd7054900387fc53e54c5861"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21fa2422fd7054900387fc53e54c5861"></a>
+<tr class="memitem:a21fa2422fd7054900387fc53e54c5861"><td class="memItemLeft" align="right" valign="top"><a id="a21fa2422fd7054900387fc53e54c5861"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>String</b> (const std::basic_string&lt; Ch &gt; &amp;str)</td></tr>
<tr class="separator:a21fa2422fd7054900387fc53e54c5861"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac043c4de0728cdfa8739af94560bddc3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac043c4de0728cdfa8739af94560bddc3"></a>
+<tr class="memitem:ac043c4de0728cdfa8739af94560bddc3"><td class="memItemLeft" align="right" valign="top"><a id="ac043c4de0728cdfa8739af94560bddc3"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>StartObject</b> ()</td></tr>
<tr class="separator:ac043c4de0728cdfa8739af94560bddc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aec6183f368bb54310a41e0e1e00bf329"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aec6183f368bb54310a41e0e1e00bf329"></a>
+<tr class="memitem:aec6183f368bb54310a41e0e1e00bf329"><td class="memItemLeft" align="right" valign="top"><a id="aec6183f368bb54310a41e0e1e00bf329"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Key</b> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, bool copy=false)</td></tr>
<tr class="separator:aec6183f368bb54310a41e0e1e00bf329"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0ebfb88ba0a9d87fe2a2f59f4e0b72fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0ebfb88ba0a9d87fe2a2f59f4e0b72fb"></a>
+<tr class="memitem:a0ebfb88ba0a9d87fe2a2f59f4e0b72fb"><td class="memItemLeft" align="right" valign="top"><a id="a0ebfb88ba0a9d87fe2a2f59f4e0b72fb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Key</b> (const std::basic_string&lt; Ch &gt; &amp;str)</td></tr>
<tr class="separator:a0ebfb88ba0a9d87fe2a2f59f4e0b72fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab53444ec4b12be2152bd712c24ec5193"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab53444ec4b12be2152bd712c24ec5193"></a>
+<tr class="memitem:ab53444ec4b12be2152bd712c24ec5193"><td class="memItemLeft" align="right" valign="top"><a id="ab53444ec4b12be2152bd712c24ec5193"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndObject</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount=0)</td></tr>
<tr class="separator:ab53444ec4b12be2152bd712c24ec5193"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad12f40eaec2b43158cee716dbd88c393"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad12f40eaec2b43158cee716dbd88c393"></a>
+<tr class="memitem:ad12f40eaec2b43158cee716dbd88c393"><td class="memItemLeft" align="right" valign="top"><a id="ad12f40eaec2b43158cee716dbd88c393"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>StartArray</b> ()</td></tr>
<tr class="separator:ad12f40eaec2b43158cee716dbd88c393"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6c8958810f5cd764de9a8fbe6fb63095"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6c8958810f5cd764de9a8fbe6fb63095"></a>
+<tr class="memitem:a6c8958810f5cd764de9a8fbe6fb63095"><td class="memItemLeft" align="right" valign="top"><a id="a6c8958810f5cd764de9a8fbe6fb63095"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndArray</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount=0)</td></tr>
<tr class="separator:a6c8958810f5cd764de9a8fbe6fb63095"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Convenience extensions</div></td></tr>
-<tr class="memitem:a363c2280393e27e19bceb8d015c2832c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a363c2280393e27e19bceb8d015c2832c"></a>
+<tr class="memitem:a363c2280393e27e19bceb8d015c2832c"><td class="memItemLeft" align="right" valign="top"><a id="a363c2280393e27e19bceb8d015c2832c"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_pretty_writer.html#a363c2280393e27e19bceb8d015c2832c">String</a> (const Ch *str)</td></tr>
<tr class="memdesc:a363c2280393e27e19bceb8d015c2832c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simpler but slower overload. <br /></td></tr>
<tr class="separator:a363c2280393e27e19bceb8d015c2832c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0b7000c10be5b1e24920ce27a7ba7f6a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b7000c10be5b1e24920ce27a7ba7f6a"></a>
+<tr class="memitem:a0b7000c10be5b1e24920ce27a7ba7f6a"><td class="memItemLeft" align="right" valign="top"><a id="a0b7000c10be5b1e24920ce27a7ba7f6a"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Key</b> (const Ch *str)</td></tr>
<tr class="separator:a0b7000c10be5b1e24920ce27a7ba7f6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classrapidjson_1_1_writer"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classrapidjson_1_1_writer')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td></tr>
<tr class="memitem:a98a421c806b456688874511f64add1f2 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2">Writer</a> (OutputStream &amp;os, StackAllocator *stackAllocator=0, size_t levelDepth=kDefaultLevelDepth)</td></tr>
-<tr class="memdesc:a98a421c806b456688874511f64add1f2 inherit pub_methods_classrapidjson_1_1_writer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="#a98a421c806b456688874511f64add1f2">更多...</a><br /></td></tr>
+<tr class="memdesc:a98a421c806b456688874511f64add1f2 inherit pub_methods_classrapidjson_1_1_writer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor <a href="classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2">更多...</a><br /></td></tr>
<tr class="separator:a98a421c806b456688874511f64add1f2 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2e78f43b2395d7ecb0d9a284659d59fb inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e78f43b2395d7ecb0d9a284659d59fb"></a>
+<tr class="memitem:a2e78f43b2395d7ecb0d9a284659d59fb inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a2e78f43b2395d7ecb0d9a284659d59fb"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>Writer</b> (StackAllocator *allocator=0, size_t levelDepth=kDefaultLevelDepth)</td></tr>
<tr class="separator:a2e78f43b2395d7ecb0d9a284659d59fb inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4026d3f14b80d6d7fc10004b1972722 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#ac4026d3f14b80d6d7fc10004b1972722">Reset</a> (OutputStream &amp;os)</td></tr>
-<tr class="memdesc:ac4026d3f14b80d6d7fc10004b1972722 inherit pub_methods_classrapidjson_1_1_writer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the writer with a new stream. <a href="#ac4026d3f14b80d6d7fc10004b1972722">更多...</a><br /></td></tr>
+<tr class="memdesc:ac4026d3f14b80d6d7fc10004b1972722 inherit pub_methods_classrapidjson_1_1_writer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the writer with a new stream. <a href="classrapidjson_1_1_writer.html#ac4026d3f14b80d6d7fc10004b1972722">更多...</a><br /></td></tr>
<tr class="separator:ac4026d3f14b80d6d7fc10004b1972722 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0cde8037db76f887cd9c557fd68630c5 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#a0cde8037db76f887cd9c557fd68630c5">IsComplete</a> () const </td></tr>
-<tr class="memdesc:a0cde8037db76f887cd9c557fd68630c5 inherit pub_methods_classrapidjson_1_1_writer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether the output is a complete JSON. <a href="#a0cde8037db76f887cd9c557fd68630c5">更多...</a><br /></td></tr>
-<tr class="separator:a0cde8037db76f887cd9c557fd68630c5 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5ba4d42de8571712f54f7d40a6414162 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ba4d42de8571712f54f7d40a6414162"></a>
-int&#160;</td><td class="memItemRight" valign="bottom"><b>GetMaxDecimalPlaces</b> () const </td></tr>
-<tr class="separator:a5ba4d42de8571712f54f7d40a6414162 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a190d964d3e62155e87153e858a0b04da inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#a190d964d3e62155e87153e858a0b04da">IsComplete</a> () const</td></tr>
+<tr class="memdesc:a190d964d3e62155e87153e858a0b04da inherit pub_methods_classrapidjson_1_1_writer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether the output is a complete JSON. <a href="classrapidjson_1_1_writer.html#a190d964d3e62155e87153e858a0b04da">更多...</a><br /></td></tr>
+<tr class="separator:a190d964d3e62155e87153e858a0b04da inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa436d23d8227c270a9a5297a6dbc0674 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="aa436d23d8227c270a9a5297a6dbc0674"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>GetMaxDecimalPlaces</b> () const</td></tr>
+<tr class="separator:aa436d23d8227c270a9a5297a6dbc0674 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7b6967dc237519e2a6d8b3939fb9634 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#aa7b6967dc237519e2a6d8b3939fb9634">SetMaxDecimalPlaces</a> (int maxDecimalPlaces)</td></tr>
-<tr class="memdesc:aa7b6967dc237519e2a6d8b3939fb9634 inherit pub_methods_classrapidjson_1_1_writer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the maximum number of decimal places for double output. <a href="#aa7b6967dc237519e2a6d8b3939fb9634">更多...</a><br /></td></tr>
+<tr class="memdesc:aa7b6967dc237519e2a6d8b3939fb9634 inherit pub_methods_classrapidjson_1_1_writer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the maximum number of decimal places for double output. <a href="classrapidjson_1_1_writer.html#aa7b6967dc237519e2a6d8b3939fb9634">更多...</a><br /></td></tr>
<tr class="separator:aa7b6967dc237519e2a6d8b3939fb9634 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8acb89b2bbb1e5f384e6076b65044dbe inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#a8acb89b2bbb1e5f384e6076b65044dbe">RawValue</a> (const Ch *json, size_t length, <a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type)</td></tr>
-<tr class="memdesc:a8acb89b2bbb1e5f384e6076b65044dbe inherit pub_methods_classrapidjson_1_1_writer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a raw JSON value. <a href="#a8acb89b2bbb1e5f384e6076b65044dbe">更多...</a><br /></td></tr>
+<tr class="memdesc:a8acb89b2bbb1e5f384e6076b65044dbe inherit pub_methods_classrapidjson_1_1_writer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a raw JSON value. <a href="classrapidjson_1_1_writer.html#a8acb89b2bbb1e5f384e6076b65044dbe">更多...</a><br /></td></tr>
<tr class="separator:a8acb89b2bbb1e5f384e6076b65044dbe inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72cefd18d176bc12a53adb3185c51ca7 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#a72cefd18d176bc12a53adb3185c51ca7">Flush</a> ()</td></tr>
-<tr class="memdesc:a72cefd18d176bc12a53adb3185c51ca7 inherit pub_methods_classrapidjson_1_1_writer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flush the output stream. <a href="#a72cefd18d176bc12a53adb3185c51ca7">更多...</a><br /></td></tr>
+<tr class="memdesc:a72cefd18d176bc12a53adb3185c51ca7 inherit pub_methods_classrapidjson_1_1_writer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flush the output stream. <a href="classrapidjson_1_1_writer.html#a72cefd18d176bc12a53adb3185c51ca7">更多...</a><br /></td></tr>
<tr class="separator:a72cefd18d176bc12a53adb3185c51ca7 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1e857b9fe7071fc0b9fa89b56ad05651 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e857b9fe7071fc0b9fa89b56ad05651"></a>
+<tr class="memitem:a1e857b9fe7071fc0b9fa89b56ad05651 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a1e857b9fe7071fc0b9fa89b56ad05651"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Null</b> ()</td></tr>
<tr class="separator:a1e857b9fe7071fc0b9fa89b56ad05651 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afd055764da99bd167b030c19104b107a inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afd055764da99bd167b030c19104b107a"></a>
+<tr class="memitem:afd055764da99bd167b030c19104b107a inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="afd055764da99bd167b030c19104b107a"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Bool</b> (bool b)</td></tr>
<tr class="separator:afd055764da99bd167b030c19104b107a inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a22fd25fb5cb2db6c25762961e51e9c46 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22fd25fb5cb2db6c25762961e51e9c46"></a>
+<tr class="memitem:a22fd25fb5cb2db6c25762961e51e9c46 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a22fd25fb5cb2db6c25762961e51e9c46"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Int</b> (int i)</td></tr>
<tr class="separator:a22fd25fb5cb2db6c25762961e51e9c46 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a49f2dd265ab15ee065f0506a8d3efac9 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49f2dd265ab15ee065f0506a8d3efac9"></a>
+<tr class="memitem:a49f2dd265ab15ee065f0506a8d3efac9 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a49f2dd265ab15ee065f0506a8d3efac9"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Uint</b> (unsigned u)</td></tr>
<tr class="separator:a49f2dd265ab15ee065f0506a8d3efac9 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae11f678a8f363b690629f53bdf33b5af inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae11f678a8f363b690629f53bdf33b5af"></a>
+<tr class="memitem:ae11f678a8f363b690629f53bdf33b5af inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="ae11f678a8f363b690629f53bdf33b5af"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Int64</b> (int64_t i64)</td></tr>
<tr class="separator:ae11f678a8f363b690629f53bdf33b5af inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a76e9e1271747e3fd5e0d665da69f1de7 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76e9e1271747e3fd5e0d665da69f1de7"></a>
+<tr class="memitem:a76e9e1271747e3fd5e0d665da69f1de7 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a76e9e1271747e3fd5e0d665da69f1de7"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Uint64</b> (uint64_t u64)</td></tr>
<tr class="separator:a76e9e1271747e3fd5e0d665da69f1de7 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff66881798d01e932a0b8b8ef97b0373 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#aff66881798d01e932a0b8b8ef97b0373">Double</a> (double d)</td></tr>
-<tr class="memdesc:aff66881798d01e932a0b8b8ef97b0373 inherit pub_methods_classrapidjson_1_1_writer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes the given <code>double</code> value to the stream. <a href="#aff66881798d01e932a0b8b8ef97b0373">更多...</a><br /></td></tr>
+<tr class="memdesc:aff66881798d01e932a0b8b8ef97b0373 inherit pub_methods_classrapidjson_1_1_writer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes the given <code>double</code> value to the stream <a href="classrapidjson_1_1_writer.html#aff66881798d01e932a0b8b8ef97b0373">更多...</a><br /></td></tr>
<tr class="separator:aff66881798d01e932a0b8b8ef97b0373 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a65a378b4de5df3fb02521a4a78b25230 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65a378b4de5df3fb02521a4a78b25230"></a>
+<tr class="memitem:a65a378b4de5df3fb02521a4a78b25230 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a65a378b4de5df3fb02521a4a78b25230"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>RawNumber</b> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, bool copy=false)</td></tr>
<tr class="separator:a65a378b4de5df3fb02521a4a78b25230 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3cddcb5176054f559d0d552a3ff8789b inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3cddcb5176054f559d0d552a3ff8789b"></a>
+<tr class="memitem:a3cddcb5176054f559d0d552a3ff8789b inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a3cddcb5176054f559d0d552a3ff8789b"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>String</b> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, bool copy=false)</td></tr>
<tr class="separator:a3cddcb5176054f559d0d552a3ff8789b inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a08e5ea94699a727a24123737927514ee inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a08e5ea94699a727a24123737927514ee"></a>
+<tr class="memitem:a08e5ea94699a727a24123737927514ee inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a08e5ea94699a727a24123737927514ee"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>String</b> (const std::basic_string&lt; Ch &gt; &amp;str)</td></tr>
<tr class="separator:a08e5ea94699a727a24123737927514ee inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8b0be54744be8ecb53cbe7e408447faa inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b0be54744be8ecb53cbe7e408447faa"></a>
+<tr class="memitem:a8b0be54744be8ecb53cbe7e408447faa inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a8b0be54744be8ecb53cbe7e408447faa"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>StartObject</b> ()</td></tr>
<tr class="separator:a8b0be54744be8ecb53cbe7e408447faa inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a58ecbfbe9f86e5303448f2b8024cbd46 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a58ecbfbe9f86e5303448f2b8024cbd46"></a>
+<tr class="memitem:a58ecbfbe9f86e5303448f2b8024cbd46 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a58ecbfbe9f86e5303448f2b8024cbd46"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Key</b> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, bool copy=false)</td></tr>
<tr class="separator:a58ecbfbe9f86e5303448f2b8024cbd46 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a93193e26d9f0c3926bb8b8d4e2b7a619 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a93193e26d9f0c3926bb8b8d4e2b7a619"></a>
+<tr class="memitem:a93193e26d9f0c3926bb8b8d4e2b7a619 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a93193e26d9f0c3926bb8b8d4e2b7a619"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Key</b> (const std::basic_string&lt; Ch &gt; &amp;str)</td></tr>
<tr class="separator:a93193e26d9f0c3926bb8b8d4e2b7a619 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac8851882467c9c00cd8c2a202261e2b0 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8851882467c9c00cd8c2a202261e2b0"></a>
+<tr class="memitem:ac8851882467c9c00cd8c2a202261e2b0 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="ac8851882467c9c00cd8c2a202261e2b0"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndObject</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount=0)</td></tr>
<tr class="separator:ac8851882467c9c00cd8c2a202261e2b0 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7019d2c81548f7b4dcc96f98a3e2bf76 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7019d2c81548f7b4dcc96f98a3e2bf76"></a>
+<tr class="memitem:a7019d2c81548f7b4dcc96f98a3e2bf76 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a7019d2c81548f7b4dcc96f98a3e2bf76"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>StartArray</b> ()</td></tr>
<tr class="separator:a7019d2c81548f7b4dcc96f98a3e2bf76 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a13c98a10c8a8be0823c6cfd8e1b479a4 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13c98a10c8a8be0823c6cfd8e1b479a4"></a>
+<tr class="memitem:a13c98a10c8a8be0823c6cfd8e1b479a4 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a13c98a10c8a8be0823c6cfd8e1b479a4"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndArray</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount=0)</td></tr>
<tr class="separator:a13c98a10c8a8be0823c6cfd8e1b479a4 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a849e2b675a2b868699a14d45c7396f24 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a849e2b675a2b868699a14d45c7396f24"></a>
+<tr class="memitem:a849e2b675a2b868699a14d45c7396f24 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a849e2b675a2b868699a14d45c7396f24"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#a849e2b675a2b868699a14d45c7396f24">String</a> (const Ch *const &amp;str)</td></tr>
<tr class="memdesc:a849e2b675a2b868699a14d45c7396f24 inherit pub_methods_classrapidjson_1_1_writer"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simpler but slower overload. <br /></td></tr>
<tr class="separator:a849e2b675a2b868699a14d45c7396f24 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adb7804b54bcd5e71c69ec219652787d5 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adb7804b54bcd5e71c69ec219652787d5"></a>
+<tr class="memitem:adb7804b54bcd5e71c69ec219652787d5 inherit pub_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="adb7804b54bcd5e71c69ec219652787d5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Key</b> (const Ch *const &amp;str)</td></tr>
<tr class="separator:adb7804b54bcd5e71c69ec219652787d5 inherit pub_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
-<tr class="memitem:aff11c26086470359ef3ab1142515441c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff11c26086470359ef3ab1142515441c"></a>
+<tr class="memitem:aff11c26086470359ef3ab1142515441c"><td class="memItemLeft" align="right" valign="top"><a id="aff11c26086470359ef3ab1142515441c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>PrettyPrefix</b> (<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type)</td></tr>
<tr class="separator:aff11c26086470359ef3ab1142515441c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa0bfa813b170d7fc27f1b370388861e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0bfa813b170d7fc27f1b370388861e4"></a>
+<tr class="memitem:aa0bfa813b170d7fc27f1b370388861e4"><td class="memItemLeft" align="right" valign="top"><a id="aa0bfa813b170d7fc27f1b370388861e4"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>WriteIndent</b> ()</td></tr>
<tr class="separator:aa0bfa813b170d7fc27f1b370388861e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classrapidjson_1_1_writer"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classrapidjson_1_1_writer')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td></tr>
-<tr class="memitem:af8275fa2332a8c7774aa4c8a3655afd5 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8275fa2332a8c7774aa4c8a3655afd5"></a>
+<tr class="memitem:af8275fa2332a8c7774aa4c8a3655afd5 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="af8275fa2332a8c7774aa4c8a3655afd5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteNull</b> ()</td></tr>
<tr class="separator:af8275fa2332a8c7774aa4c8a3655afd5 inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a09c1a50dd2d6de4e8d59e6c8ecf62460 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a09c1a50dd2d6de4e8d59e6c8ecf62460"></a>
+<tr class="memitem:a09c1a50dd2d6de4e8d59e6c8ecf62460 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a09c1a50dd2d6de4e8d59e6c8ecf62460"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteBool</b> (bool b)</td></tr>
<tr class="separator:a09c1a50dd2d6de4e8d59e6c8ecf62460 inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aca40d77c14bf6911c03b5d4b23283e02 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca40d77c14bf6911c03b5d4b23283e02"></a>
+<tr class="memitem:aca40d77c14bf6911c03b5d4b23283e02 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="aca40d77c14bf6911c03b5d4b23283e02"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteInt</b> (int i)</td></tr>
<tr class="separator:aca40d77c14bf6911c03b5d4b23283e02 inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9255fff8cc9476048f14a1ee7dbd9937 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9255fff8cc9476048f14a1ee7dbd9937"></a>
+<tr class="memitem:a9255fff8cc9476048f14a1ee7dbd9937 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a9255fff8cc9476048f14a1ee7dbd9937"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteUint</b> (unsigned u)</td></tr>
<tr class="separator:a9255fff8cc9476048f14a1ee7dbd9937 inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aada3d510b7637fd0e9e8b3cbad093c2e inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aada3d510b7637fd0e9e8b3cbad093c2e"></a>
+<tr class="memitem:aada3d510b7637fd0e9e8b3cbad093c2e inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="aada3d510b7637fd0e9e8b3cbad093c2e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteInt64</b> (int64_t i64)</td></tr>
<tr class="separator:aada3d510b7637fd0e9e8b3cbad093c2e inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a341c2665f6564467dab9787bbbaee2fe inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a341c2665f6564467dab9787bbbaee2fe"></a>
+<tr class="memitem:a341c2665f6564467dab9787bbbaee2fe inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a341c2665f6564467dab9787bbbaee2fe"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteUint64</b> (uint64_t u64)</td></tr>
<tr class="separator:a341c2665f6564467dab9787bbbaee2fe inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad8cdd06dfdf1731a2148e859b828979c inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8cdd06dfdf1731a2148e859b828979c"></a>
+<tr class="memitem:ad8cdd06dfdf1731a2148e859b828979c inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="ad8cdd06dfdf1731a2148e859b828979c"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteDouble</b> (double d)</td></tr>
<tr class="separator:ad8cdd06dfdf1731a2148e859b828979c inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a95860b89f9a9eea9d4336f0023c497ce inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95860b89f9a9eea9d4336f0023c497ce"></a>
+<tr class="memitem:a95860b89f9a9eea9d4336f0023c497ce inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a95860b89f9a9eea9d4336f0023c497ce"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteString</b> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length)</td></tr>
<tr class="separator:a95860b89f9a9eea9d4336f0023c497ce inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2d5599f972475793e391559db2de1061 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d5599f972475793e391559db2de1061"></a>
+<tr class="memitem:a2d5599f972475793e391559db2de1061 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a2d5599f972475793e391559db2de1061"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>ScanWriteUnescapedString</b> (<a class="el" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream</a>&lt; SourceEncoding &gt; &amp;is, size_t length)</td></tr>
<tr class="separator:a2d5599f972475793e391559db2de1061 inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aed07aaa7245d5e607933a75c634921f9 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed07aaa7245d5e607933a75c634921f9"></a>
+<tr class="memitem:aed07aaa7245d5e607933a75c634921f9 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="aed07aaa7245d5e607933a75c634921f9"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteStartObject</b> ()</td></tr>
<tr class="separator:aed07aaa7245d5e607933a75c634921f9 inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afc5bc83bdf5fda810c8fe200cdda12b5 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afc5bc83bdf5fda810c8fe200cdda12b5"></a>
+<tr class="memitem:afc5bc83bdf5fda810c8fe200cdda12b5 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="afc5bc83bdf5fda810c8fe200cdda12b5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteEndObject</b> ()</td></tr>
<tr class="separator:afc5bc83bdf5fda810c8fe200cdda12b5 inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1221be4404ddaddc9605725e69dc7e53 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1221be4404ddaddc9605725e69dc7e53"></a>
+<tr class="memitem:a1221be4404ddaddc9605725e69dc7e53 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a1221be4404ddaddc9605725e69dc7e53"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteStartArray</b> ()</td></tr>
<tr class="separator:a1221be4404ddaddc9605725e69dc7e53 inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a60939802ba2dfdd19754f20bda553a26 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60939802ba2dfdd19754f20bda553a26"></a>
+<tr class="memitem:a60939802ba2dfdd19754f20bda553a26 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a60939802ba2dfdd19754f20bda553a26"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteEndArray</b> ()</td></tr>
<tr class="separator:a60939802ba2dfdd19754f20bda553a26 inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a60b50a90fa1cfd525e14c37c36b9998d inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60b50a90fa1cfd525e14c37c36b9998d"></a>
+<tr class="memitem:a60b50a90fa1cfd525e14c37c36b9998d inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a60b50a90fa1cfd525e14c37c36b9998d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteRawValue</b> (const Ch *json, size_t length)</td></tr>
<tr class="separator:a60b50a90fa1cfd525e14c37c36b9998d inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aefe33eab3521b2d9366dff3b788f0665 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefe33eab3521b2d9366dff3b788f0665"></a>
+<tr class="memitem:aefe33eab3521b2d9366dff3b788f0665 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="aefe33eab3521b2d9366dff3b788f0665"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Prefix</b> (<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type)</td></tr>
<tr class="separator:aefe33eab3521b2d9366dff3b788f0665 inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adca78a0b05864d1c903f9afa955f3b07 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adca78a0b05864d1c903f9afa955f3b07"></a>
+<tr class="memitem:adca78a0b05864d1c903f9afa955f3b07 inherit pro_methods_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="adca78a0b05864d1c903f9afa955f3b07"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndValue</b> (bool ret)</td></tr>
<tr class="separator:adca78a0b05864d1c903f9afa955f3b07 inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab2ccb801bfd355ecc03a3a3ba5eb7392 inherit pro_methods_classrapidjson_1_1_writer"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab2ccb801bfd355ecc03a3a3ba5eb7392"></a>
+<tr class="memitem:ab2ccb801bfd355ecc03a3a3ba5eb7392 inherit pro_methods_classrapidjson_1_1_writer"><td class="memTemplParams" colspan="2"><a id="ab2ccb801bfd355ecc03a3a3ba5eb7392"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:ab2ccb801bfd355ecc03a3a3ba5eb7392 inherit pro_methods_classrapidjson_1_1_writer"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>WriteInt</b> (int i)</td></tr>
<tr class="separator:ab2ccb801bfd355ecc03a3a3ba5eb7392 inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab7c08a743fff55d9f09dc58f0a75e67f inherit pro_methods_classrapidjson_1_1_writer"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab7c08a743fff55d9f09dc58f0a75e67f"></a>
+<tr class="memitem:ab7c08a743fff55d9f09dc58f0a75e67f inherit pro_methods_classrapidjson_1_1_writer"><td class="memTemplParams" colspan="2"><a id="ab7c08a743fff55d9f09dc58f0a75e67f"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:ab7c08a743fff55d9f09dc58f0a75e67f inherit pro_methods_classrapidjson_1_1_writer"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>WriteUint</b> (unsigned u)</td></tr>
<tr class="separator:ab7c08a743fff55d9f09dc58f0a75e67f inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a91d238a4532d08363f97f37d3626632b inherit pro_methods_classrapidjson_1_1_writer"><td class="memTemplParams" colspan="2"><a class="anchor" id="a91d238a4532d08363f97f37d3626632b"></a>
+<tr class="memitem:a91d238a4532d08363f97f37d3626632b inherit pro_methods_classrapidjson_1_1_writer"><td class="memTemplParams" colspan="2"><a id="a91d238a4532d08363f97f37d3626632b"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a91d238a4532d08363f97f37d3626632b inherit pro_methods_classrapidjson_1_1_writer"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>WriteInt64</b> (int64_t i64)</td></tr>
<tr class="separator:a91d238a4532d08363f97f37d3626632b inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a474abb8f7b704f1ef7c00bbe2a2e01b6 inherit pro_methods_classrapidjson_1_1_writer"><td class="memTemplParams" colspan="2"><a class="anchor" id="a474abb8f7b704f1ef7c00bbe2a2e01b6"></a>
+<tr class="memitem:a474abb8f7b704f1ef7c00bbe2a2e01b6 inherit pro_methods_classrapidjson_1_1_writer"><td class="memTemplParams" colspan="2"><a id="a474abb8f7b704f1ef7c00bbe2a2e01b6"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a474abb8f7b704f1ef7c00bbe2a2e01b6 inherit pro_methods_classrapidjson_1_1_writer"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>WriteUint64</b> (uint64_t u)</td></tr>
<tr class="separator:a474abb8f7b704f1ef7c00bbe2a2e01b6 inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7d18f380070f825f48a494c8213adf9c inherit pro_methods_classrapidjson_1_1_writer"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7d18f380070f825f48a494c8213adf9c"></a>
+<tr class="memitem:a7d18f380070f825f48a494c8213adf9c inherit pro_methods_classrapidjson_1_1_writer"><td class="memTemplParams" colspan="2"><a id="a7d18f380070f825f48a494c8213adf9c"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a7d18f380070f825f48a494c8213adf9c inherit pro_methods_classrapidjson_1_1_writer"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>WriteDouble</b> (double d)</td></tr>
<tr class="separator:a7d18f380070f825f48a494c8213adf9c inherit pro_methods_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
-<tr class="memitem:ad5492530262115dee2b44fc7682ddc07"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5492530262115dee2b44fc7682ddc07"></a>
+<tr class="memitem:ad5492530262115dee2b44fc7682ddc07"><td class="memItemLeft" align="right" valign="top"><a id="ad5492530262115dee2b44fc7682ddc07"></a>
Ch&#160;</td><td class="memItemRight" valign="bottom"><b>indentChar_</b></td></tr>
<tr class="separator:ad5492530262115dee2b44fc7682ddc07"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8b4afa26067dcc84e3940bdde08e59f1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b4afa26067dcc84e3940bdde08e59f1"></a>
+<tr class="memitem:a8b4afa26067dcc84e3940bdde08e59f1"><td class="memItemLeft" align="right" valign="top"><a id="a8b4afa26067dcc84e3940bdde08e59f1"></a>
unsigned&#160;</td><td class="memItemRight" valign="bottom"><b>indentCharCount_</b></td></tr>
<tr class="separator:a8b4afa26067dcc84e3940bdde08e59f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a27c46a2b1fd7a0c1cb518ba9c0f998cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a27c46a2b1fd7a0c1cb518ba9c0f998cf"></a>
+<tr class="memitem:a27c46a2b1fd7a0c1cb518ba9c0f998cf"><td class="memItemLeft" align="right" valign="top"><a id="a27c46a2b1fd7a0c1cb518ba9c0f998cf"></a>
<a class="el" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4b">PrettyFormatOptions</a>&#160;</td><td class="memItemRight" valign="bottom"><b>formatOptions_</b></td></tr>
<tr class="separator:a27c46a2b1fd7a0c1cb518ba9c0f998cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classrapidjson_1_1_writer"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classrapidjson_1_1_writer')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td></tr>
-<tr class="memitem:a1370d3fd6728d4f0b3f20d734bb27eaf inherit pro_attribs_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1370d3fd6728d4f0b3f20d734bb27eaf"></a>
+<tr class="memitem:a1370d3fd6728d4f0b3f20d734bb27eaf inherit pro_attribs_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a1370d3fd6728d4f0b3f20d734bb27eaf"></a>
OutputStream *&#160;</td><td class="memItemRight" valign="bottom"><b>os_</b></td></tr>
<tr class="separator:a1370d3fd6728d4f0b3f20d734bb27eaf inherit pro_attribs_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a939007778b53074132750d9eccfdc5a2 inherit pro_attribs_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a939007778b53074132750d9eccfdc5a2"></a>
+<tr class="memitem:a939007778b53074132750d9eccfdc5a2 inherit pro_attribs_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a939007778b53074132750d9eccfdc5a2"></a>
internal::Stack&lt; StackAllocator &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>level_stack_</b></td></tr>
<tr class="separator:a939007778b53074132750d9eccfdc5a2 inherit pro_attribs_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4666542e7957218d23c2a1b68c7295d8 inherit pro_attribs_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4666542e7957218d23c2a1b68c7295d8"></a>
+<tr class="memitem:a4666542e7957218d23c2a1b68c7295d8 inherit pro_attribs_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a4666542e7957218d23c2a1b68c7295d8"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>maxDecimalPlaces_</b></td></tr>
<tr class="separator:a4666542e7957218d23c2a1b68c7295d8 inherit pro_attribs_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac374605d753f26912b8462fc478e4b3e inherit pro_attribs_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac374605d753f26912b8462fc478e4b3e"></a>
+<tr class="memitem:ac374605d753f26912b8462fc478e4b3e inherit pro_attribs_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="ac374605d753f26912b8462fc478e4b3e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>hasRoot_</b></td></tr>
<tr class="separator:ac374605d753f26912b8462fc478e4b3e inherit pro_attribs_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
额外继承的成员函数</h2></td></tr>
<tr class="inherit_header pub_static_attribs_classrapidjson_1_1_writer"><td colspan="2" onclick="javascript:toggleInherit('pub_static_attribs_classrapidjson_1_1_writer')"><img src="closed.png" alt="-"/>&#160;静态 Public 属性 继承自 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td></tr>
-<tr class="memitem:aaf9568d23fcff10e6de27dde77e28547 inherit pub_static_attribs_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf9568d23fcff10e6de27dde77e28547"></a>
+<tr class="memitem:aaf9568d23fcff10e6de27dde77e28547 inherit pub_static_attribs_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="aaf9568d23fcff10e6de27dde77e28547"></a>
static const int&#160;</td><td class="memItemRight" valign="bottom"><b>kDefaultMaxDecimalPlaces</b> = 324</td></tr>
<tr class="separator:aaf9568d23fcff10e6de27dde77e28547 inherit pub_static_attribs_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_attribs_classrapidjson_1_1_writer"><td colspan="2" onclick="javascript:toggleInherit('pro_static_attribs_classrapidjson_1_1_writer')"><img src="closed.png" alt="-"/>&#160;静态 Protected 属性 继承自 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td></tr>
-<tr class="memitem:a9acc453af3bfddea0bf001e022ae411c inherit pro_static_attribs_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9acc453af3bfddea0bf001e022ae411c"></a>
+<tr class="memitem:a9acc453af3bfddea0bf001e022ae411c inherit pro_static_attribs_classrapidjson_1_1_writer"><td class="memItemLeft" align="right" valign="top"><a id="a9acc453af3bfddea0bf001e022ae411c"></a>
static const size_t&#160;</td><td class="memItemRight" valign="bottom"><b>kDefaultLevelDepth</b> = 32</td></tr>
<tr class="separator:a9acc453af3bfddea0bf001e022ae411c inherit pro_static_attribs_classrapidjson_1_1_writer"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<div class="textblock"><h3>template&lt;typename OutputStream, typename SourceEncoding, typename TargetEncoding, typename StackAllocator, unsigned writeFlags&gt;<br />
+<div class="textblock"><h3>template&lt;typename OutputStream, typename SourceEncoding = UTF8&lt;&gt;, typename TargetEncoding = UTF8&lt;&gt;, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags&gt;<br />
class rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</h3>
-<p><a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer. ">Writer</a> with indentation and spacing. </p>
+<p><a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer ">Writer</a> with indentation and spacing. </p>
<dl class="tparams"><dt>模板参数</dt><dd>
<table class="tparams">
<tr><td class="paramname">OutputStream</td><td>Type of ouptut os. </td></tr>
@@ -402,11 +401,13 @@ class rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding,
</dd>
</dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
-<a class="anchor" id="a688d7ebf5c8015e423b7a970afc8e0a0"></a>
+<a id="a688d7ebf5c8015e423b7a970afc8e0a0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a688d7ebf5c8015e423b7a970afc8e0a0">&#9670;&nbsp;</a></span>PrettyWriter()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags&gt; </div>
+template&lt;typename OutputStream , typename SourceEncoding = UTF8&lt;&gt;, typename TargetEncoding = UTF8&lt;&gt;, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -442,7 +443,7 @@ template&lt;typename OutputStream , typename SourceEncoding , typename TargetEnc
</table>
</div><div class="memdoc">
-<p>Constructor. </p>
+<p>Constructor </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">os</td><td>Output stream. </td></tr>
@@ -455,11 +456,13 @@ template&lt;typename OutputStream , typename SourceEncoding , typename TargetEnc
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
-<a class="anchor" id="a3136e3426a5d06e5da50f6e6aab8a5be"></a>
+<a id="a3136e3426a5d06e5da50f6e6aab8a5be"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3136e3426a5d06e5da50f6e6aab8a5be">&#9670;&nbsp;</a></span>RawValue()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags&gt; </div>
+template&lt;typename OutputStream , typename SourceEncoding = UTF8&lt;&gt;, typename TargetEncoding = UTF8&lt;&gt;, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -509,11 +512,13 @@ template&lt;typename OutputStream , typename SourceEncoding , typename TargetEnc
</div>
</div>
-<a class="anchor" id="acde6176577f29869e28a4f3c4a251090"></a>
+<a id="acde6176577f29869e28a4f3c4a251090"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acde6176577f29869e28a4f3c4a251090">&#9670;&nbsp;</a></span>SetFormatOptions()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags&gt; </div>
+template&lt;typename OutputStream , typename SourceEncoding = UTF8&lt;&gt;, typename TargetEncoding = UTF8&lt;&gt;, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -543,11 +548,13 @@ template&lt;typename OutputStream , typename SourceEncoding , typename TargetEnc
</div>
</div>
-<a class="anchor" id="a121686c29ca7fe071fa4108c46955ff0"></a>
+<a id="a121686c29ca7fe071fa4108c46955ff0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a121686c29ca7fe071fa4108c46955ff0">&#9670;&nbsp;</a></span>SetIndent()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags&gt; </div>
+template&lt;typename OutputStream , typename SourceEncoding = UTF8&lt;&gt;, typename TargetEncoding = UTF8&lt;&gt;, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
diff --git a/zh-cn/classrapidjson_1_1_schema_validating_reader-members.html b/zh-cn/classrapidjson_1_1_schema_validating_reader-members.html
index 6f2b0478..f8b79103 100644
--- a/zh-cn/classrapidjson_1_1_schema_validating_reader-members.html
+++ b/zh-cn/classrapidjson_1_1_schema_validating_reader-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_schema_validating_r
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -84,11 +85,11 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_schema_validating_r
<p>成员的完整列表,这些成员属于 <a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>,包括所有继承而来的类成员</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Ch</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetInvalidDocumentPointer</b>() const (定义于 <a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetInvalidSchemaKeyword</b>() const (定义于 <a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetInvalidSchemaPointer</b>() const (定义于 <a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetParseResult</b>() const (定义于 <a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>IsValid</b>() const (定义于 <a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetInvalidDocumentPointer</b>() const (定义于 <a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetInvalidSchemaKeyword</b>() const (定义于 <a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetInvalidSchemaPointer</b>() const (定义于 <a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetParseResult</b>() const (定义于 <a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>IsValid</b>() const (定义于 <a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>operator()</b>(Handler &amp;handler) (定义于 <a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>PointerType</b> typedef (定义于 <a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html#a1e2bcc66cad23376241cd91e8bf8c706">SchemaValidatingReader</a>(InputStream &amp;is, const SchemaDocumentType &amp;sd)</td><td class="entry"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
diff --git a/zh-cn/classrapidjson_1_1_schema_validating_reader.html b/zh-cn/classrapidjson_1_1_schema_validating_reader.html
index ca93b9f1..c3941829 100644
--- a/zh-cn/classrapidjson_1_1_schema_validating_reader.html
+++ b/zh-cn/classrapidjson_1_1_schema_validating_reader.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_schema_validating_r
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,38 +93,37 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_schema_validating_r
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a42c64d1ed25ffb2e70a35b9e43e0e564"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a42c64d1ed25ffb2e70a35b9e43e0e564"></a>
-typedef <br class="typebreak" />
-SchemaDocumentType::PointerType&#160;</td><td class="memItemRight" valign="bottom"><b>PointerType</b></td></tr>
+<tr class="memitem:a42c64d1ed25ffb2e70a35b9e43e0e564"><td class="memItemLeft" align="right" valign="top"><a id="a42c64d1ed25ffb2e70a35b9e43e0e564"></a>
+typedef SchemaDocumentType::PointerType&#160;</td><td class="memItemRight" valign="bottom"><b>PointerType</b></td></tr>
<tr class="separator:a42c64d1ed25ffb2e70a35b9e43e0e564"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3507a4886ce6778fe1cae39ed5f0baaf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3507a4886ce6778fe1cae39ed5f0baaf"></a>
+<tr class="memitem:a3507a4886ce6778fe1cae39ed5f0baaf"><td class="memItemLeft" align="right" valign="top"><a id="a3507a4886ce6778fe1cae39ed5f0baaf"></a>
typedef InputStream::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a3507a4886ce6778fe1cae39ed5f0baaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a1e2bcc66cad23376241cd91e8bf8c706"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html#a1e2bcc66cad23376241cd91e8bf8c706">SchemaValidatingReader</a> (InputStream &amp;is, const SchemaDocumentType &amp;sd)</td></tr>
-<tr class="memdesc:a1e2bcc66cad23376241cd91e8bf8c706"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="#a1e2bcc66cad23376241cd91e8bf8c706">更多...</a><br /></td></tr>
+<tr class="memdesc:a1e2bcc66cad23376241cd91e8bf8c706"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor <a href="#a1e2bcc66cad23376241cd91e8bf8c706">更多...</a><br /></td></tr>
<tr class="separator:a1e2bcc66cad23376241cd91e8bf8c706"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adb09230cc40b8dc5ba607de14d37dc42"><td class="memTemplParams" colspan="2"><a class="anchor" id="adb09230cc40b8dc5ba607de14d37dc42"></a>
+<tr class="memitem:adb09230cc40b8dc5ba607de14d37dc42"><td class="memTemplParams" colspan="2"><a id="adb09230cc40b8dc5ba607de14d37dc42"></a>
template&lt;typename Handler &gt; </td></tr>
<tr class="memitem:adb09230cc40b8dc5ba607de14d37dc42"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>operator()</b> (<a class="el" href="classrapidjson_1_1_handler.html">Handler</a> &amp;handler)</td></tr>
<tr class="separator:adb09230cc40b8dc5ba607de14d37dc42"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac73cdab259f38f00af7862861a6e3c52"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac73cdab259f38f00af7862861a6e3c52"></a>
-const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>GetParseResult</b> () const </td></tr>
-<tr class="separator:ac73cdab259f38f00af7862861a6e3c52"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a84b5bb649a69e5da572ead36fb907b0e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a84b5bb649a69e5da572ead36fb907b0e"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsValid</b> () const </td></tr>
-<tr class="separator:a84b5bb649a69e5da572ead36fb907b0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa23c98c009967dec658bd2099f3c9418"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa23c98c009967dec658bd2099f3c9418"></a>
-const PointerType &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>GetInvalidSchemaPointer</b> () const </td></tr>
-<tr class="separator:aa23c98c009967dec658bd2099f3c9418"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af60e486b5ba0a826d443a111a4fbe87d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af60e486b5ba0a826d443a111a4fbe87d"></a>
-const Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>GetInvalidSchemaKeyword</b> () const </td></tr>
-<tr class="separator:af60e486b5ba0a826d443a111a4fbe87d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a86c9e433d8b540e54808fd54ac9c4be0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a86c9e433d8b540e54808fd54ac9c4be0"></a>
-const PointerType &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>GetInvalidDocumentPointer</b> () const </td></tr>
-<tr class="separator:a86c9e433d8b540e54808fd54ac9c4be0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a957147a03ad791aa12a0552320371a41"><td class="memItemLeft" align="right" valign="top"><a id="a957147a03ad791aa12a0552320371a41"></a>
+const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>GetParseResult</b> () const</td></tr>
+<tr class="separator:a957147a03ad791aa12a0552320371a41"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a803e1eff3f4fa021e56c6583c45c9fb4"><td class="memItemLeft" align="right" valign="top"><a id="a803e1eff3f4fa021e56c6583c45c9fb4"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>IsValid</b> () const</td></tr>
+<tr class="separator:a803e1eff3f4fa021e56c6583c45c9fb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae90052ccece8e04e7a840dd61f7ac83c"><td class="memItemLeft" align="right" valign="top"><a id="ae90052ccece8e04e7a840dd61f7ac83c"></a>
+const PointerType &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>GetInvalidSchemaPointer</b> () const</td></tr>
+<tr class="separator:ae90052ccece8e04e7a840dd61f7ac83c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a67bf36f1e4bf24a0760170ed199f592b"><td class="memItemLeft" align="right" valign="top"><a id="a67bf36f1e4bf24a0760170ed199f592b"></a>
+const Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>GetInvalidSchemaKeyword</b> () const</td></tr>
+<tr class="separator:a67bf36f1e4bf24a0760170ed199f592b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a00e8db597e8a55b5f8810707dda40dfa"><td class="memItemLeft" align="right" valign="top"><a id="a00e8db597e8a55b5f8810707dda40dfa"></a>
+const PointerType &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>GetInvalidDocumentPointer</b> () const</td></tr>
+<tr class="separator:a00e8db597e8a55b5f8810707dda40dfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;unsigned parseFlags, typename InputStream, typename SourceEncoding, typename SchemaDocumentType = SchemaDocument, typename StackAllocator = CrtAllocator&gt;<br />
@@ -142,7 +142,9 @@ class rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncod
</dd>
</dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
-<a class="anchor" id="a1e2bcc66cad23376241cd91e8bf8c706"></a>
+<a id="a1e2bcc66cad23376241cd91e8bf8c706"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1e2bcc66cad23376241cd91e8bf8c706">&#9670;&nbsp;</a></span>SchemaValidatingReader()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -176,7 +178,7 @@ template&lt;unsigned parseFlags, typename InputStream , typename SourceEncoding
</table>
</div><div class="memdoc">
-<p>Constructor. </p>
+<p>Constructor </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">is</td><td>Input stream. </td></tr>
diff --git a/zh-cn/classrapidjson_1_1_schema_validating_reader.js b/zh-cn/classrapidjson_1_1_schema_validating_reader.js
index 899cd189..e4bc060b 100644
--- a/zh-cn/classrapidjson_1_1_schema_validating_reader.js
+++ b/zh-cn/classrapidjson_1_1_schema_validating_reader.js
@@ -3,10 +3,10 @@ var classrapidjson_1_1_schema_validating_reader =
[ "Ch", "classrapidjson_1_1_schema_validating_reader.html#a3507a4886ce6778fe1cae39ed5f0baaf", null ],
[ "PointerType", "classrapidjson_1_1_schema_validating_reader.html#a42c64d1ed25ffb2e70a35b9e43e0e564", null ],
[ "SchemaValidatingReader", "classrapidjson_1_1_schema_validating_reader.html#a1e2bcc66cad23376241cd91e8bf8c706", null ],
- [ "GetInvalidDocumentPointer", "classrapidjson_1_1_schema_validating_reader.html#a86c9e433d8b540e54808fd54ac9c4be0", null ],
- [ "GetInvalidSchemaKeyword", "classrapidjson_1_1_schema_validating_reader.html#af60e486b5ba0a826d443a111a4fbe87d", null ],
- [ "GetInvalidSchemaPointer", "classrapidjson_1_1_schema_validating_reader.html#aa23c98c009967dec658bd2099f3c9418", null ],
- [ "GetParseResult", "classrapidjson_1_1_schema_validating_reader.html#ac73cdab259f38f00af7862861a6e3c52", null ],
- [ "IsValid", "classrapidjson_1_1_schema_validating_reader.html#a84b5bb649a69e5da572ead36fb907b0e", null ],
+ [ "GetInvalidDocumentPointer", "classrapidjson_1_1_schema_validating_reader.html#a00e8db597e8a55b5f8810707dda40dfa", null ],
+ [ "GetInvalidSchemaKeyword", "classrapidjson_1_1_schema_validating_reader.html#a67bf36f1e4bf24a0760170ed199f592b", null ],
+ [ "GetInvalidSchemaPointer", "classrapidjson_1_1_schema_validating_reader.html#ae90052ccece8e04e7a840dd61f7ac83c", null ],
+ [ "GetParseResult", "classrapidjson_1_1_schema_validating_reader.html#a957147a03ad791aa12a0552320371a41", null ],
+ [ "IsValid", "classrapidjson_1_1_schema_validating_reader.html#a803e1eff3f4fa021e56c6583c45c9fb4", null ],
[ "operator()", "classrapidjson_1_1_schema_validating_reader.html#adb09230cc40b8dc5ba607de14d37dc42", null ]
]; \ No newline at end of file
diff --git a/zh-cn/classrapidjson_1_1_stream.html b/zh-cn/classrapidjson_1_1_stream.html
index 0674062d..9660c24a 100644
--- a/zh-cn/classrapidjson_1_1_stream.html
+++ b/zh-cn/classrapidjson_1_1_stream.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::Stream类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_stream.html','');})
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -89,35 +90,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_stream.html','');})
<div class="textblock"><p>Concept for reading and writing characters. </p>
<p>For read-only stream, no need to implement PutBegin(), Put(), Flush() and PutEnd().</p>
<p>For write-only stream, only need to implement Put() and Flush().</p>
-<div class="fragment"><div class="line">concept Stream {</div>
-<div class="line"> <span class="keyword">typename</span> Ch; <span class="comment">//!&lt; Character type of the stream.</span></div>
-<div class="line"><span class="comment"></span><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! Read the current character from stream without moving the read cursor.</span></div>
-<div class="line"><span class="comment"></span> Ch Peek() <span class="keyword">const</span>;</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! Read the current character from stream and moving the read cursor to next character.</span></div>
-<div class="line"><span class="comment"></span> Ch Take();</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! Get the current read cursor.</span></div>
-<div class="line"><span class="comment"> //! \return Number of characters read from start.</span></div>
-<div class="line"><span class="comment"></span> <span class="keywordtype">size_t</span> Tell();</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! Begin writing operation at the current read pointer.</span></div>
-<div class="line"><span class="comment"> //! \return The begin writer pointer.</span></div>
-<div class="line"><span class="comment"></span> Ch* PutBegin();</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! Write a character.</span></div>
-<div class="line"><span class="comment"></span> <span class="keywordtype">void</span> Put(Ch c);</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! Flush the buffer.</span></div>
-<div class="line"><span class="comment"></span> <span class="keywordtype">void</span> Flush();</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! End the writing operation.</span></div>
-<div class="line"><span class="comment"> //! \param begin The begin write pointer returned by PutBegin().</span></div>
-<div class="line"><span class="comment"> //! \return Number of characters written.</span></div>
-<div class="line"><span class="comment"></span> <span class="keywordtype">size_t</span> PutEnd(Ch* begin);</div>
-<div class="line">}</div>
-</div><!-- fragment --> </div><hr/>该类的文档由以下文件生成:<ul>
+<div class="fragment"><div class="line">concept Stream {</div><div class="line"> <span class="keyword">typename</span> Ch; <span class="comment">//!&lt; Character type of the stream.</span></div><div class="line"><span class="comment"></span><span class="comment"></span></div><div class="line"><span class="comment"> //! Read the current character from stream without moving the read cursor.</span></div><div class="line"><span class="comment"></span> Ch Peek() <span class="keyword">const</span>;</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! Read the current character from stream and moving the read cursor to next character.</span></div><div class="line"><span class="comment"></span> Ch Take();</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! Get the current read cursor.</span></div><div class="line"><span class="comment"> //! \return Number of characters read from start.</span></div><div class="line"><span class="comment"></span> <span class="keywordtype">size_t</span> Tell();</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! Begin writing operation at the current read pointer.</span></div><div class="line"><span class="comment"> //! \return The begin writer pointer.</span></div><div class="line"><span class="comment"></span> Ch* PutBegin();</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! Write a character.</span></div><div class="line"><span class="comment"></span> <span class="keywordtype">void</span> Put(Ch c);</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! Flush the buffer.</span></div><div class="line"><span class="comment"></span> <span class="keywordtype">void</span> Flush();</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! End the writing operation.</span></div><div class="line"><span class="comment"> //! \param begin The begin write pointer returned by PutBegin().</span></div><div class="line"><span class="comment"> //! \return Number of characters written.</span></div><div class="line"><span class="comment"></span> <span class="keywordtype">size_t</span> PutEnd(Ch* begin);</div><div class="line">}</div></div><!-- fragment --> </div><hr/>该类的文档由以下文件生成:<ul>
<li>include/rapidjson/<a class="el" href="stream_8h_source.html">stream.h</a></li>
</ul>
</div><!-- contents -->
diff --git a/zh-cn/classrapidjson_1_1_writer-members.html b/zh-cn/classrapidjson_1_1_writer-members.html
index 7ca543d5..c29a1c7a 100644
--- a/zh-cn/classrapidjson_1_1_writer-members.html
+++ b/zh-cn/classrapidjson_1_1_writer-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_writer.html','');})
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -90,11 +91,11 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_writer.html','');})
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>EndObject</b>(SizeType memberCount=0) (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>EndValue</b>(bool ret) (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">protected</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html#a72cefd18d176bc12a53adb3185c51ca7">Flush</a>()</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetMaxDecimalPlaces</b>() const (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetMaxDecimalPlaces</b>() const (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>hasRoot_</b> (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Int</b>(int i) (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Int64</b>(int64_t i64) (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html#a0cde8037db76f887cd9c557fd68630c5">IsComplete</a>() const </td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html#a190d964d3e62155e87153e858a0b04da">IsComplete</a>() const</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>kDefaultLevelDepth</b> (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>kDefaultMaxDecimalPlaces</b> (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Key</b>(const Ch *str, SizeType length, bool copy=false) (定义于 <a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>)</td><td class="entry"><a class="el" href="classrapidjson_1_1_writer.html">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
diff --git a/zh-cn/classrapidjson_1_1_writer.html b/zh-cn/classrapidjson_1_1_writer.html
index dda2607d..783bfb55 100644
--- a/zh-cn/classrapidjson_1_1_writer.html
+++ b/zh-cn/classrapidjson_1_1_writer.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_writer.html','');})
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -90,7 +91,7 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_writer.html','');})
</div><!--header-->
<div class="contents">
-<p>JSON writer.
+<p>JSON writer
<a href="classrapidjson_1_1_writer.html#details">更多...</a></p>
<p><code>#include &lt;<a class="el" href="writer_8h_source.html">writer.h</a>&gt;</code></p>
@@ -98,8 +99,8 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_writer.html','');})
类 rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt; 继承关系图:</div>
<div class="dyncontent">
<div class="center">
- <img src="classrapidjson_1_1_writer.png" usemap="#rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;_map" alt=""/>
- <map id="rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;_map" name="rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;_map">
+ <img src="classrapidjson_1_1_writer.png" usemap="#rapidjson::Writer_3C_20OutputStream_2C_20SourceEncoding_2C_20TargetEncoding_2C_20StackAllocator_2C_20writeFlags_20_3E_map" alt=""/>
+ <map id="rapidjson::Writer_3C_20OutputStream_2C_20SourceEncoding_2C_20TargetEncoding_2C_20StackAllocator_2C_20writeFlags_20_3E_map" name="rapidjson::Writer_3C_20OutputStream_2C_20SourceEncoding_2C_20TargetEncoding_2C_20StackAllocator_2C_20writeFlags_20_3E_map">
<area href="classrapidjson_1_1_pretty_writer.html" title="Writer with indentation and spacing. " alt="rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;" shape="rect" coords="0,56,596,80"/>
</map>
</div></div>
@@ -107,32 +108,32 @@ $(document).ready(function(){initNavTree('classrapidjson_1_1_writer.html','');})
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
类</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_writer_1_1_level.html">Level</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Information for each nested level. <a href="structrapidjson_1_1_writer_1_1_level.html#details">更多...</a><br /></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Information for each nested level <a href="structrapidjson_1_1_writer_1_1_level.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a2cf973937ca1110293bf1350fac2a6d6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2cf973937ca1110293bf1350fac2a6d6"></a>
+<tr class="memitem:a2cf973937ca1110293bf1350fac2a6d6"><td class="memItemLeft" align="right" valign="top"><a id="a2cf973937ca1110293bf1350fac2a6d6"></a>
typedef SourceEncoding::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a2cf973937ca1110293bf1350fac2a6d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a98a421c806b456688874511f64add1f2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2">Writer</a> (OutputStream &amp;os, StackAllocator *stackAllocator=0, size_t levelDepth=kDefaultLevelDepth)</td></tr>
-<tr class="memdesc:a98a421c806b456688874511f64add1f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <a href="#a98a421c806b456688874511f64add1f2">更多...</a><br /></td></tr>
+<tr class="memdesc:a98a421c806b456688874511f64add1f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor <a href="#a98a421c806b456688874511f64add1f2">更多...</a><br /></td></tr>
<tr class="separator:a98a421c806b456688874511f64add1f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2e78f43b2395d7ecb0d9a284659d59fb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e78f43b2395d7ecb0d9a284659d59fb"></a>
+<tr class="memitem:a2e78f43b2395d7ecb0d9a284659d59fb"><td class="memItemLeft" align="right" valign="top"><a id="a2e78f43b2395d7ecb0d9a284659d59fb"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>Writer</b> (StackAllocator *allocator=0, size_t levelDepth=kDefaultLevelDepth)</td></tr>
<tr class="separator:a2e78f43b2395d7ecb0d9a284659d59fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4026d3f14b80d6d7fc10004b1972722"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#ac4026d3f14b80d6d7fc10004b1972722">Reset</a> (OutputStream &amp;os)</td></tr>
<tr class="memdesc:ac4026d3f14b80d6d7fc10004b1972722"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset the writer with a new stream. <a href="#ac4026d3f14b80d6d7fc10004b1972722">更多...</a><br /></td></tr>
<tr class="separator:ac4026d3f14b80d6d7fc10004b1972722"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0cde8037db76f887cd9c557fd68630c5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#a0cde8037db76f887cd9c557fd68630c5">IsComplete</a> () const </td></tr>
-<tr class="memdesc:a0cde8037db76f887cd9c557fd68630c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether the output is a complete JSON. <a href="#a0cde8037db76f887cd9c557fd68630c5">更多...</a><br /></td></tr>
-<tr class="separator:a0cde8037db76f887cd9c557fd68630c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5ba4d42de8571712f54f7d40a6414162"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ba4d42de8571712f54f7d40a6414162"></a>
-int&#160;</td><td class="memItemRight" valign="bottom"><b>GetMaxDecimalPlaces</b> () const </td></tr>
-<tr class="separator:a5ba4d42de8571712f54f7d40a6414162"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a190d964d3e62155e87153e858a0b04da"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#a190d964d3e62155e87153e858a0b04da">IsComplete</a> () const</td></tr>
+<tr class="memdesc:a190d964d3e62155e87153e858a0b04da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether the output is a complete JSON. <a href="#a190d964d3e62155e87153e858a0b04da">更多...</a><br /></td></tr>
+<tr class="separator:a190d964d3e62155e87153e858a0b04da"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa436d23d8227c270a9a5297a6dbc0674"><td class="memItemLeft" align="right" valign="top"><a id="aa436d23d8227c270a9a5297a6dbc0674"></a>
+int&#160;</td><td class="memItemRight" valign="bottom"><b>GetMaxDecimalPlaces</b> () const</td></tr>
+<tr class="separator:aa436d23d8227c270a9a5297a6dbc0674"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7b6967dc237519e2a6d8b3939fb9634"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#aa7b6967dc237519e2a6d8b3939fb9634">SetMaxDecimalPlaces</a> (int maxDecimalPlaces)</td></tr>
<tr class="memdesc:aa7b6967dc237519e2a6d8b3939fb9634"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the maximum number of decimal places for double output. <a href="#aa7b6967dc237519e2a6d8b3939fb9634">更多...</a><br /></td></tr>
<tr class="separator:aa7b6967dc237519e2a6d8b3939fb9634"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -145,170 +146,170 @@ int&#160;</td><td class="memItemRight" valign="bottom"><b>GetMaxDecimalPlaces</b
<tr><td colspan="2"><div class="groupHeader">Implementation of Handler</div></td></tr>
<tr><td colspan="2"><div class="groupText"><dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a> </dd></dl>
</div></td></tr>
-<tr class="memitem:a1e857b9fe7071fc0b9fa89b56ad05651"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1e857b9fe7071fc0b9fa89b56ad05651"></a>
+<tr class="memitem:a1e857b9fe7071fc0b9fa89b56ad05651"><td class="memItemLeft" align="right" valign="top"><a id="a1e857b9fe7071fc0b9fa89b56ad05651"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Null</b> ()</td></tr>
<tr class="separator:a1e857b9fe7071fc0b9fa89b56ad05651"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afd055764da99bd167b030c19104b107a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afd055764da99bd167b030c19104b107a"></a>
+<tr class="memitem:afd055764da99bd167b030c19104b107a"><td class="memItemLeft" align="right" valign="top"><a id="afd055764da99bd167b030c19104b107a"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Bool</b> (bool b)</td></tr>
<tr class="separator:afd055764da99bd167b030c19104b107a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a22fd25fb5cb2db6c25762961e51e9c46"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22fd25fb5cb2db6c25762961e51e9c46"></a>
+<tr class="memitem:a22fd25fb5cb2db6c25762961e51e9c46"><td class="memItemLeft" align="right" valign="top"><a id="a22fd25fb5cb2db6c25762961e51e9c46"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Int</b> (int i)</td></tr>
<tr class="separator:a22fd25fb5cb2db6c25762961e51e9c46"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a49f2dd265ab15ee065f0506a8d3efac9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49f2dd265ab15ee065f0506a8d3efac9"></a>
+<tr class="memitem:a49f2dd265ab15ee065f0506a8d3efac9"><td class="memItemLeft" align="right" valign="top"><a id="a49f2dd265ab15ee065f0506a8d3efac9"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Uint</b> (unsigned u)</td></tr>
<tr class="separator:a49f2dd265ab15ee065f0506a8d3efac9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae11f678a8f363b690629f53bdf33b5af"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae11f678a8f363b690629f53bdf33b5af"></a>
+<tr class="memitem:ae11f678a8f363b690629f53bdf33b5af"><td class="memItemLeft" align="right" valign="top"><a id="ae11f678a8f363b690629f53bdf33b5af"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Int64</b> (int64_t i64)</td></tr>
<tr class="separator:ae11f678a8f363b690629f53bdf33b5af"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a76e9e1271747e3fd5e0d665da69f1de7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76e9e1271747e3fd5e0d665da69f1de7"></a>
+<tr class="memitem:a76e9e1271747e3fd5e0d665da69f1de7"><td class="memItemLeft" align="right" valign="top"><a id="a76e9e1271747e3fd5e0d665da69f1de7"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Uint64</b> (uint64_t u64)</td></tr>
<tr class="separator:a76e9e1271747e3fd5e0d665da69f1de7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff66881798d01e932a0b8b8ef97b0373"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#aff66881798d01e932a0b8b8ef97b0373">Double</a> (double d)</td></tr>
-<tr class="memdesc:aff66881798d01e932a0b8b8ef97b0373"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes the given <code>double</code> value to the stream. <a href="#aff66881798d01e932a0b8b8ef97b0373">更多...</a><br /></td></tr>
+<tr class="memdesc:aff66881798d01e932a0b8b8ef97b0373"><td class="mdescLeft">&#160;</td><td class="mdescRight">Writes the given <code>double</code> value to the stream <a href="#aff66881798d01e932a0b8b8ef97b0373">更多...</a><br /></td></tr>
<tr class="separator:aff66881798d01e932a0b8b8ef97b0373"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a65a378b4de5df3fb02521a4a78b25230"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65a378b4de5df3fb02521a4a78b25230"></a>
+<tr class="memitem:a65a378b4de5df3fb02521a4a78b25230"><td class="memItemLeft" align="right" valign="top"><a id="a65a378b4de5df3fb02521a4a78b25230"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>RawNumber</b> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, bool copy=false)</td></tr>
<tr class="separator:a65a378b4de5df3fb02521a4a78b25230"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3cddcb5176054f559d0d552a3ff8789b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3cddcb5176054f559d0d552a3ff8789b"></a>
+<tr class="memitem:a3cddcb5176054f559d0d552a3ff8789b"><td class="memItemLeft" align="right" valign="top"><a id="a3cddcb5176054f559d0d552a3ff8789b"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>String</b> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, bool copy=false)</td></tr>
<tr class="separator:a3cddcb5176054f559d0d552a3ff8789b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a08e5ea94699a727a24123737927514ee"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a08e5ea94699a727a24123737927514ee"></a>
+<tr class="memitem:a08e5ea94699a727a24123737927514ee"><td class="memItemLeft" align="right" valign="top"><a id="a08e5ea94699a727a24123737927514ee"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>String</b> (const std::basic_string&lt; Ch &gt; &amp;str)</td></tr>
<tr class="separator:a08e5ea94699a727a24123737927514ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8b0be54744be8ecb53cbe7e408447faa"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b0be54744be8ecb53cbe7e408447faa"></a>
+<tr class="memitem:a8b0be54744be8ecb53cbe7e408447faa"><td class="memItemLeft" align="right" valign="top"><a id="a8b0be54744be8ecb53cbe7e408447faa"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>StartObject</b> ()</td></tr>
<tr class="separator:a8b0be54744be8ecb53cbe7e408447faa"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a58ecbfbe9f86e5303448f2b8024cbd46"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a58ecbfbe9f86e5303448f2b8024cbd46"></a>
+<tr class="memitem:a58ecbfbe9f86e5303448f2b8024cbd46"><td class="memItemLeft" align="right" valign="top"><a id="a58ecbfbe9f86e5303448f2b8024cbd46"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Key</b> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, bool copy=false)</td></tr>
<tr class="separator:a58ecbfbe9f86e5303448f2b8024cbd46"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a93193e26d9f0c3926bb8b8d4e2b7a619"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a93193e26d9f0c3926bb8b8d4e2b7a619"></a>
+<tr class="memitem:a93193e26d9f0c3926bb8b8d4e2b7a619"><td class="memItemLeft" align="right" valign="top"><a id="a93193e26d9f0c3926bb8b8d4e2b7a619"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Key</b> (const std::basic_string&lt; Ch &gt; &amp;str)</td></tr>
<tr class="separator:a93193e26d9f0c3926bb8b8d4e2b7a619"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac8851882467c9c00cd8c2a202261e2b0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac8851882467c9c00cd8c2a202261e2b0"></a>
+<tr class="memitem:ac8851882467c9c00cd8c2a202261e2b0"><td class="memItemLeft" align="right" valign="top"><a id="ac8851882467c9c00cd8c2a202261e2b0"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndObject</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount=0)</td></tr>
<tr class="separator:ac8851882467c9c00cd8c2a202261e2b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7019d2c81548f7b4dcc96f98a3e2bf76"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7019d2c81548f7b4dcc96f98a3e2bf76"></a>
+<tr class="memitem:a7019d2c81548f7b4dcc96f98a3e2bf76"><td class="memItemLeft" align="right" valign="top"><a id="a7019d2c81548f7b4dcc96f98a3e2bf76"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>StartArray</b> ()</td></tr>
<tr class="separator:a7019d2c81548f7b4dcc96f98a3e2bf76"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a13c98a10c8a8be0823c6cfd8e1b479a4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13c98a10c8a8be0823c6cfd8e1b479a4"></a>
+<tr class="memitem:a13c98a10c8a8be0823c6cfd8e1b479a4"><td class="memItemLeft" align="right" valign="top"><a id="a13c98a10c8a8be0823c6cfd8e1b479a4"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndArray</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount=0)</td></tr>
<tr class="separator:a13c98a10c8a8be0823c6cfd8e1b479a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Convenience extensions</div></td></tr>
-<tr class="memitem:a849e2b675a2b868699a14d45c7396f24"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a849e2b675a2b868699a14d45c7396f24"></a>
+<tr class="memitem:a849e2b675a2b868699a14d45c7396f24"><td class="memItemLeft" align="right" valign="top"><a id="a849e2b675a2b868699a14d45c7396f24"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html#a849e2b675a2b868699a14d45c7396f24">String</a> (const Ch *const &amp;str)</td></tr>
<tr class="memdesc:a849e2b675a2b868699a14d45c7396f24"><td class="mdescLeft">&#160;</td><td class="mdescRight">Simpler but slower overload. <br /></td></tr>
<tr class="separator:a849e2b675a2b868699a14d45c7396f24"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adb7804b54bcd5e71c69ec219652787d5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adb7804b54bcd5e71c69ec219652787d5"></a>
+<tr class="memitem:adb7804b54bcd5e71c69ec219652787d5"><td class="memItemLeft" align="right" valign="top"><a id="adb7804b54bcd5e71c69ec219652787d5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Key</b> (const Ch *const &amp;str)</td></tr>
<tr class="separator:adb7804b54bcd5e71c69ec219652787d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
静态 Public 属性</h2></td></tr>
-<tr class="memitem:aaf9568d23fcff10e6de27dde77e28547"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf9568d23fcff10e6de27dde77e28547"></a>
+<tr class="memitem:aaf9568d23fcff10e6de27dde77e28547"><td class="memItemLeft" align="right" valign="top"><a id="aaf9568d23fcff10e6de27dde77e28547"></a>
static const int&#160;</td><td class="memItemRight" valign="bottom"><b>kDefaultMaxDecimalPlaces</b> = 324</td></tr>
<tr class="separator:aaf9568d23fcff10e6de27dde77e28547"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
-<tr class="memitem:af8275fa2332a8c7774aa4c8a3655afd5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8275fa2332a8c7774aa4c8a3655afd5"></a>
+<tr class="memitem:af8275fa2332a8c7774aa4c8a3655afd5"><td class="memItemLeft" align="right" valign="top"><a id="af8275fa2332a8c7774aa4c8a3655afd5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteNull</b> ()</td></tr>
<tr class="separator:af8275fa2332a8c7774aa4c8a3655afd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a09c1a50dd2d6de4e8d59e6c8ecf62460"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a09c1a50dd2d6de4e8d59e6c8ecf62460"></a>
+<tr class="memitem:a09c1a50dd2d6de4e8d59e6c8ecf62460"><td class="memItemLeft" align="right" valign="top"><a id="a09c1a50dd2d6de4e8d59e6c8ecf62460"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteBool</b> (bool b)</td></tr>
<tr class="separator:a09c1a50dd2d6de4e8d59e6c8ecf62460"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aca40d77c14bf6911c03b5d4b23283e02"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca40d77c14bf6911c03b5d4b23283e02"></a>
+<tr class="memitem:aca40d77c14bf6911c03b5d4b23283e02"><td class="memItemLeft" align="right" valign="top"><a id="aca40d77c14bf6911c03b5d4b23283e02"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteInt</b> (int i)</td></tr>
<tr class="separator:aca40d77c14bf6911c03b5d4b23283e02"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9255fff8cc9476048f14a1ee7dbd9937"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9255fff8cc9476048f14a1ee7dbd9937"></a>
+<tr class="memitem:a9255fff8cc9476048f14a1ee7dbd9937"><td class="memItemLeft" align="right" valign="top"><a id="a9255fff8cc9476048f14a1ee7dbd9937"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteUint</b> (unsigned u)</td></tr>
<tr class="separator:a9255fff8cc9476048f14a1ee7dbd9937"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aada3d510b7637fd0e9e8b3cbad093c2e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aada3d510b7637fd0e9e8b3cbad093c2e"></a>
+<tr class="memitem:aada3d510b7637fd0e9e8b3cbad093c2e"><td class="memItemLeft" align="right" valign="top"><a id="aada3d510b7637fd0e9e8b3cbad093c2e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteInt64</b> (int64_t i64)</td></tr>
<tr class="separator:aada3d510b7637fd0e9e8b3cbad093c2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a341c2665f6564467dab9787bbbaee2fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a341c2665f6564467dab9787bbbaee2fe"></a>
+<tr class="memitem:a341c2665f6564467dab9787bbbaee2fe"><td class="memItemLeft" align="right" valign="top"><a id="a341c2665f6564467dab9787bbbaee2fe"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteUint64</b> (uint64_t u64)</td></tr>
<tr class="separator:a341c2665f6564467dab9787bbbaee2fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad8cdd06dfdf1731a2148e859b828979c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8cdd06dfdf1731a2148e859b828979c"></a>
+<tr class="memitem:ad8cdd06dfdf1731a2148e859b828979c"><td class="memItemLeft" align="right" valign="top"><a id="ad8cdd06dfdf1731a2148e859b828979c"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteDouble</b> (double d)</td></tr>
<tr class="separator:ad8cdd06dfdf1731a2148e859b828979c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a95860b89f9a9eea9d4336f0023c497ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95860b89f9a9eea9d4336f0023c497ce"></a>
+<tr class="memitem:a95860b89f9a9eea9d4336f0023c497ce"><td class="memItemLeft" align="right" valign="top"><a id="a95860b89f9a9eea9d4336f0023c497ce"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteString</b> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length)</td></tr>
<tr class="separator:a95860b89f9a9eea9d4336f0023c497ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2d5599f972475793e391559db2de1061"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d5599f972475793e391559db2de1061"></a>
+<tr class="memitem:a2d5599f972475793e391559db2de1061"><td class="memItemLeft" align="right" valign="top"><a id="a2d5599f972475793e391559db2de1061"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>ScanWriteUnescapedString</b> (<a class="el" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream</a>&lt; SourceEncoding &gt; &amp;is, size_t length)</td></tr>
<tr class="separator:a2d5599f972475793e391559db2de1061"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aed07aaa7245d5e607933a75c634921f9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed07aaa7245d5e607933a75c634921f9"></a>
+<tr class="memitem:aed07aaa7245d5e607933a75c634921f9"><td class="memItemLeft" align="right" valign="top"><a id="aed07aaa7245d5e607933a75c634921f9"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteStartObject</b> ()</td></tr>
<tr class="separator:aed07aaa7245d5e607933a75c634921f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afc5bc83bdf5fda810c8fe200cdda12b5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afc5bc83bdf5fda810c8fe200cdda12b5"></a>
+<tr class="memitem:afc5bc83bdf5fda810c8fe200cdda12b5"><td class="memItemLeft" align="right" valign="top"><a id="afc5bc83bdf5fda810c8fe200cdda12b5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteEndObject</b> ()</td></tr>
<tr class="separator:afc5bc83bdf5fda810c8fe200cdda12b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1221be4404ddaddc9605725e69dc7e53"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1221be4404ddaddc9605725e69dc7e53"></a>
+<tr class="memitem:a1221be4404ddaddc9605725e69dc7e53"><td class="memItemLeft" align="right" valign="top"><a id="a1221be4404ddaddc9605725e69dc7e53"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteStartArray</b> ()</td></tr>
<tr class="separator:a1221be4404ddaddc9605725e69dc7e53"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a60939802ba2dfdd19754f20bda553a26"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60939802ba2dfdd19754f20bda553a26"></a>
+<tr class="memitem:a60939802ba2dfdd19754f20bda553a26"><td class="memItemLeft" align="right" valign="top"><a id="a60939802ba2dfdd19754f20bda553a26"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteEndArray</b> ()</td></tr>
<tr class="separator:a60939802ba2dfdd19754f20bda553a26"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a60b50a90fa1cfd525e14c37c36b9998d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60b50a90fa1cfd525e14c37c36b9998d"></a>
+<tr class="memitem:a60b50a90fa1cfd525e14c37c36b9998d"><td class="memItemLeft" align="right" valign="top"><a id="a60b50a90fa1cfd525e14c37c36b9998d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>WriteRawValue</b> (const Ch *json, size_t length)</td></tr>
<tr class="separator:a60b50a90fa1cfd525e14c37c36b9998d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aefe33eab3521b2d9366dff3b788f0665"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aefe33eab3521b2d9366dff3b788f0665"></a>
+<tr class="memitem:aefe33eab3521b2d9366dff3b788f0665"><td class="memItemLeft" align="right" valign="top"><a id="aefe33eab3521b2d9366dff3b788f0665"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Prefix</b> (<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type)</td></tr>
<tr class="separator:aefe33eab3521b2d9366dff3b788f0665"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adca78a0b05864d1c903f9afa955f3b07"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adca78a0b05864d1c903f9afa955f3b07"></a>
+<tr class="memitem:adca78a0b05864d1c903f9afa955f3b07"><td class="memItemLeft" align="right" valign="top"><a id="adca78a0b05864d1c903f9afa955f3b07"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndValue</b> (bool ret)</td></tr>
<tr class="separator:adca78a0b05864d1c903f9afa955f3b07"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab2ccb801bfd355ecc03a3a3ba5eb7392"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab2ccb801bfd355ecc03a3a3ba5eb7392"></a>
+<tr class="memitem:ab2ccb801bfd355ecc03a3a3ba5eb7392"><td class="memTemplParams" colspan="2"><a id="ab2ccb801bfd355ecc03a3a3ba5eb7392"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:ab2ccb801bfd355ecc03a3a3ba5eb7392"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>WriteInt</b> (int i)</td></tr>
<tr class="separator:ab2ccb801bfd355ecc03a3a3ba5eb7392"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab7c08a743fff55d9f09dc58f0a75e67f"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab7c08a743fff55d9f09dc58f0a75e67f"></a>
+<tr class="memitem:ab7c08a743fff55d9f09dc58f0a75e67f"><td class="memTemplParams" colspan="2"><a id="ab7c08a743fff55d9f09dc58f0a75e67f"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:ab7c08a743fff55d9f09dc58f0a75e67f"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>WriteUint</b> (unsigned u)</td></tr>
<tr class="separator:ab7c08a743fff55d9f09dc58f0a75e67f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a91d238a4532d08363f97f37d3626632b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a91d238a4532d08363f97f37d3626632b"></a>
+<tr class="memitem:a91d238a4532d08363f97f37d3626632b"><td class="memTemplParams" colspan="2"><a id="a91d238a4532d08363f97f37d3626632b"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a91d238a4532d08363f97f37d3626632b"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>WriteInt64</b> (int64_t i64)</td></tr>
<tr class="separator:a91d238a4532d08363f97f37d3626632b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a474abb8f7b704f1ef7c00bbe2a2e01b6"><td class="memTemplParams" colspan="2"><a class="anchor" id="a474abb8f7b704f1ef7c00bbe2a2e01b6"></a>
+<tr class="memitem:a474abb8f7b704f1ef7c00bbe2a2e01b6"><td class="memTemplParams" colspan="2"><a id="a474abb8f7b704f1ef7c00bbe2a2e01b6"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a474abb8f7b704f1ef7c00bbe2a2e01b6"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>WriteUint64</b> (uint64_t u)</td></tr>
<tr class="separator:a474abb8f7b704f1ef7c00bbe2a2e01b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7d18f380070f825f48a494c8213adf9c"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7d18f380070f825f48a494c8213adf9c"></a>
+<tr class="memitem:a7d18f380070f825f48a494c8213adf9c"><td class="memTemplParams" colspan="2"><a id="a7d18f380070f825f48a494c8213adf9c"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a7d18f380070f825f48a494c8213adf9c"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>WriteDouble</b> (double d)</td></tr>
<tr class="separator:a7d18f380070f825f48a494c8213adf9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
-<tr class="memitem:a1370d3fd6728d4f0b3f20d734bb27eaf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1370d3fd6728d4f0b3f20d734bb27eaf"></a>
+<tr class="memitem:a1370d3fd6728d4f0b3f20d734bb27eaf"><td class="memItemLeft" align="right" valign="top"><a id="a1370d3fd6728d4f0b3f20d734bb27eaf"></a>
OutputStream *&#160;</td><td class="memItemRight" valign="bottom"><b>os_</b></td></tr>
<tr class="separator:a1370d3fd6728d4f0b3f20d734bb27eaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a939007778b53074132750d9eccfdc5a2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a939007778b53074132750d9eccfdc5a2"></a>
+<tr class="memitem:a939007778b53074132750d9eccfdc5a2"><td class="memItemLeft" align="right" valign="top"><a id="a939007778b53074132750d9eccfdc5a2"></a>
internal::Stack&lt; StackAllocator &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>level_stack_</b></td></tr>
<tr class="separator:a939007778b53074132750d9eccfdc5a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4666542e7957218d23c2a1b68c7295d8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4666542e7957218d23c2a1b68c7295d8"></a>
+<tr class="memitem:a4666542e7957218d23c2a1b68c7295d8"><td class="memItemLeft" align="right" valign="top"><a id="a4666542e7957218d23c2a1b68c7295d8"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>maxDecimalPlaces_</b></td></tr>
<tr class="separator:a4666542e7957218d23c2a1b68c7295d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac374605d753f26912b8462fc478e4b3e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac374605d753f26912b8462fc478e4b3e"></a>
+<tr class="memitem:ac374605d753f26912b8462fc478e4b3e"><td class="memItemLeft" align="right" valign="top"><a id="ac374605d753f26912b8462fc478e4b3e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>hasRoot_</b></td></tr>
<tr class="separator:ac374605d753f26912b8462fc478e4b3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-attribs"></a>
静态 Protected 属性</h2></td></tr>
-<tr class="memitem:a9acc453af3bfddea0bf001e022ae411c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9acc453af3bfddea0bf001e022ae411c"></a>
+<tr class="memitem:a9acc453af3bfddea0bf001e022ae411c"><td class="memItemLeft" align="right" valign="top"><a id="a9acc453af3bfddea0bf001e022ae411c"></a>
static const size_t&#160;</td><td class="memItemRight" valign="bottom"><b>kDefaultLevelDepth</b> = 32</td></tr>
<tr class="separator:a9acc453af3bfddea0bf001e022ae411c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<div class="textblock"><h3>template&lt;typename OutputStream, typename SourceEncoding, typename TargetEncoding, typename StackAllocator, unsigned writeFlags&gt;<br />
+<div class="textblock"><h3>template&lt;typename OutputStream, typename SourceEncoding = UTF8&lt;&gt;, typename TargetEncoding = UTF8&lt;&gt;, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags&gt;<br />
class rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</h3>
-<p>JSON writer. </p>
-<p><a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer. ">Writer</a> implements the concept <a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a>. It generates JSON text by events to an output os.</p>
+<p>JSON writer </p>
+<p><a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer ">Writer</a> implements the concept <a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a>. It generates JSON text by events to an output os.</p>
<p>User may programmatically calls the functions of a writer to generate JSON text.</p>
<p>On the other side, a writer can also be passed to objects that generates events,</p>
-<p>for example <a class="el" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b" title="Parse JSON text. ">Reader::Parse()</a> and <a class="el" href="classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e" title="Generate events of this value to a Handler. ">Document::Accept()</a>.</p>
+<p>for example <a class="el" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b" title="Parse JSON text. ">Reader::Parse()</a> and <a class="el" href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c" title="Generate events of this value to a Handler. ">Document::Accept()</a>.</p>
<dl class="tparams"><dt>模板参数</dt><dd>
<table class="tparams">
<tr><td class="paramname">OutputStream</td><td>Type of output stream. </td></tr>
@@ -320,11 +321,13 @@ class rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackA
</dl>
<dl class="section note"><dt>注解</dt><dd>implements <a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a> concept </dd></dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
-<a class="anchor" id="a98a421c806b456688874511f64add1f2"></a>
+<a id="a98a421c806b456688874511f64add1f2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a98a421c806b456688874511f64add1f2">&#9670;&nbsp;</a></span>Writer()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags&gt; </div>
+template&lt;typename OutputStream, typename SourceEncoding = UTF8&lt;&gt;, typename TargetEncoding = UTF8&lt;&gt;, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -360,7 +363,7 @@ template&lt;typename OutputStream , typename SourceEncoding , typename TargetEnc
</table>
</div><div class="memdoc">
-<p>Constructor. </p>
+<p>Constructor </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">os</td><td>Output stream. </td></tr>
@@ -373,11 +376,13 @@ template&lt;typename OutputStream , typename SourceEncoding , typename TargetEnc
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
-<a class="anchor" id="aff66881798d01e932a0b8b8ef97b0373"></a>
+<a id="aff66881798d01e932a0b8b8ef97b0373"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aff66881798d01e932a0b8b8ef97b0373">&#9670;&nbsp;</a></span>Double()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags&gt; </div>
+template&lt;typename OutputStream, typename SourceEncoding = UTF8&lt;&gt;, typename TargetEncoding = UTF8&lt;&gt;, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -397,7 +402,7 @@ template&lt;typename OutputStream , typename SourceEncoding , typename TargetEnc
</table>
</div><div class="memdoc">
-<p>Writes the given <code>double</code> value to the stream. </p>
+<p>Writes the given <code>double</code> value to the stream </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">d</td><td>The value to be written. </td></tr>
@@ -408,11 +413,13 @@ template&lt;typename OutputStream , typename SourceEncoding , typename TargetEnc
</div>
</div>
-<a class="anchor" id="a72cefd18d176bc12a53adb3185c51ca7"></a>
+<a id="a72cefd18d176bc12a53adb3185c51ca7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a72cefd18d176bc12a53adb3185c51ca7">&#9670;&nbsp;</a></span>Flush()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags&gt; </div>
+template&lt;typename OutputStream, typename SourceEncoding = UTF8&lt;&gt;, typename TargetEncoding = UTF8&lt;&gt;, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -436,11 +443,13 @@ template&lt;typename OutputStream , typename SourceEncoding , typename TargetEnc
</div>
</div>
-<a class="anchor" id="a0cde8037db76f887cd9c557fd68630c5"></a>
+<a id="a190d964d3e62155e87153e858a0b04da"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a190d964d3e62155e87153e858a0b04da">&#9670;&nbsp;</a></span>IsComplete()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags&gt; </div>
+template&lt;typename OutputStream, typename SourceEncoding = UTF8&lt;&gt;, typename TargetEncoding = UTF8&lt;&gt;, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -464,11 +473,13 @@ template&lt;typename OutputStream , typename SourceEncoding , typename TargetEnc
</div>
</div>
-<a class="anchor" id="a8acb89b2bbb1e5f384e6076b65044dbe"></a>
+<a id="a8acb89b2bbb1e5f384e6076b65044dbe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8acb89b2bbb1e5f384e6076b65044dbe">&#9670;&nbsp;</a></span>RawValue()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags&gt; </div>
+template&lt;typename OutputStream, typename SourceEncoding = UTF8&lt;&gt;, typename TargetEncoding = UTF8&lt;&gt;, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -517,11 +528,13 @@ template&lt;typename OutputStream , typename SourceEncoding , typename TargetEnc
</div>
</div>
-<a class="anchor" id="ac4026d3f14b80d6d7fc10004b1972722"></a>
+<a id="ac4026d3f14b80d6d7fc10004b1972722"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac4026d3f14b80d6d7fc10004b1972722">&#9670;&nbsp;</a></span>Reset()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags&gt; </div>
+template&lt;typename OutputStream, typename SourceEncoding = UTF8&lt;&gt;, typename TargetEncoding = UTF8&lt;&gt;, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -542,30 +555,23 @@ template&lt;typename OutputStream , typename SourceEncoding , typename TargetEnc
</div><div class="memdoc">
<p>Reset the writer with a new stream. </p>
-<p>This function reset the writer with a new stream and default settings, in order to make a <a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer. ">Writer</a> object reusable for output multiple JSONs.</p>
+<p>This function reset the writer with a new stream and default settings, in order to make a <a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer ">Writer</a> object reusable for output multiple JSONs.</p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
- <tr><td class="paramname">os</td><td>New output stream. <div class="fragment"><div class="line">Writer&lt;OutputStream&gt; writer(os1);</div>
-<div class="line">writer.StartObject();</div>
-<div class="line"><span class="comment">// ...</span></div>
-<div class="line">writer.EndObject();</div>
-<div class="line"></div>
-<div class="line">writer.Reset(os2);</div>
-<div class="line">writer.StartObject();</div>
-<div class="line"><span class="comment">// ...</span></div>
-<div class="line">writer.EndObject();</div>
-</div><!-- fragment --> </td></tr>
+ <tr><td class="paramname">os</td><td>New output stream. <div class="fragment"><div class="line">Writer&lt;OutputStream&gt; writer(os1);</div><div class="line">writer.StartObject();</div><div class="line"><span class="comment">// ...</span></div><div class="line">writer.EndObject();</div><div class="line"></div><div class="line">writer.Reset(os2);</div><div class="line">writer.StartObject();</div><div class="line"><span class="comment">// ...</span></div><div class="line">writer.EndObject();</div></div><!-- fragment --> </td></tr>
</table>
</dd>
</dl>
</div>
</div>
-<a class="anchor" id="aa7b6967dc237519e2a6d8b3939fb9634"></a>
+<a id="aa7b6967dc237519e2a6d8b3939fb9634"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa7b6967dc237519e2a6d8b3939fb9634">&#9670;&nbsp;</a></span>SetMaxDecimalPlaces()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
-template&lt;typename OutputStream , typename SourceEncoding , typename TargetEncoding , typename StackAllocator , unsigned writeFlags&gt; </div>
+template&lt;typename OutputStream, typename SourceEncoding = UTF8&lt;&gt;, typename TargetEncoding = UTF8&lt;&gt;, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags&gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
@@ -588,15 +594,7 @@ template&lt;typename OutputStream , typename SourceEncoding , typename TargetEnc
<p>Sets the maximum number of decimal places for double output. </p>
<p>This setting truncates the output with specified number of decimal places.</p>
<p>For example,</p>
-<div class="fragment"><div class="line">writer.SetMaxDecimalPlaces(3);</div>
-<div class="line">writer.StartArray();</div>
-<div class="line">writer.Double(0.12345); <span class="comment">// &quot;0.123&quot;</span></div>
-<div class="line">writer.Double(0.0001); <span class="comment">// &quot;0.0&quot;</span></div>
-<div class="line">writer.Double(1.234567890123456e30); <span class="comment">// &quot;1.234567890123456e30&quot; (do not truncate significand for positive exponent)</span></div>
-<div class="line">writer.Double(1.23e-4); <span class="comment">// &quot;0.0&quot; (do truncate significand for negative exponent)</span></div>
-<div class="line">writer.EndArray();</div>
-</div><!-- fragment --><p>The default setting does not truncate any decimal places. You can restore to this setting by calling </p><div class="fragment"><div class="line">writer.SetMaxDecimalPlaces(Writer::kDefaultMaxDecimalPlaces);</div>
-</div><!-- fragment -->
+<div class="fragment"><div class="line">writer.SetMaxDecimalPlaces(3);</div><div class="line">writer.StartArray();</div><div class="line">writer.Double(0.12345); <span class="comment">// &quot;0.123&quot;</span></div><div class="line">writer.Double(0.0001); <span class="comment">// &quot;0.0&quot;</span></div><div class="line">writer.Double(1.234567890123456e30); <span class="comment">// &quot;1.234567890123456e30&quot; (do not truncate significand for positive exponent)</span></div><div class="line">writer.Double(1.23e-4); <span class="comment">// &quot;0.0&quot; (do truncate significand for negative exponent)</span></div><div class="line">writer.EndArray();</div></div><!-- fragment --><p>The default setting does not truncate any decimal places. You can restore to this setting by calling </p><div class="fragment"><div class="line">writer.SetMaxDecimalPlaces(Writer::kDefaultMaxDecimalPlaces);</div></div><!-- fragment -->
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
diff --git a/zh-cn/classrapidjson_1_1_writer.js b/zh-cn/classrapidjson_1_1_writer.js
index cb446170..85b52ca1 100644
--- a/zh-cn/classrapidjson_1_1_writer.js
+++ b/zh-cn/classrapidjson_1_1_writer.js
@@ -10,10 +10,10 @@ var classrapidjson_1_1_writer =
[ "EndObject", "classrapidjson_1_1_writer.html#ac8851882467c9c00cd8c2a202261e2b0", null ],
[ "EndValue", "classrapidjson_1_1_writer.html#adca78a0b05864d1c903f9afa955f3b07", null ],
[ "Flush", "classrapidjson_1_1_writer.html#a72cefd18d176bc12a53adb3185c51ca7", null ],
- [ "GetMaxDecimalPlaces", "classrapidjson_1_1_writer.html#a5ba4d42de8571712f54f7d40a6414162", null ],
+ [ "GetMaxDecimalPlaces", "classrapidjson_1_1_writer.html#aa436d23d8227c270a9a5297a6dbc0674", null ],
[ "Int", "classrapidjson_1_1_writer.html#a22fd25fb5cb2db6c25762961e51e9c46", null ],
[ "Int64", "classrapidjson_1_1_writer.html#ae11f678a8f363b690629f53bdf33b5af", null ],
- [ "IsComplete", "classrapidjson_1_1_writer.html#a0cde8037db76f887cd9c557fd68630c5", null ],
+ [ "IsComplete", "classrapidjson_1_1_writer.html#a190d964d3e62155e87153e858a0b04da", null ],
[ "Key", "classrapidjson_1_1_writer.html#a58ecbfbe9f86e5303448f2b8024cbd46", null ],
[ "Key", "classrapidjson_1_1_writer.html#a93193e26d9f0c3926bb8b8d4e2b7a619", null ],
[ "Key", "classrapidjson_1_1_writer.html#adb7804b54bcd5e71c69ec219652787d5", null ],
diff --git a/zh-cn/dir_0b07344794a20f8375311f92e90cd9a3.html b/zh-cn/dir_0b07344794a20f8375311f92e90cd9a3.html
deleted file mode 100644
index 68083868..00000000
--- a/zh-cn/dir_0b07344794a20f8375311f92e90cd9a3.html
+++ /dev/null
@@ -1,143 +0,0 @@
-<!-- HTML header for doxygen 1.8.7-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
-<title>RapidJSON: include/rapidjson 目录参考</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="navtree.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="resize.js"></script>
-<script type="text/javascript" src="navtree.js"></script>
-<script type="text/javascript">
- $(document).ready(initResizable);
- $(window).load(resizeHeight);
-</script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="topbanner"><a href="https://github.com/miloyip/rapidjson" title="RapidJSON GitHub"><i class="githublogo"></i></a></div>
- <div id="MSearchBox" class="MSearchBoxInactive">
- <span class="left">
- <img id="MSearchSelect" src="search/mag_sel.png"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- alt=""/>
- <input type="text" id="MSearchField" value="搜索" accesskey="S"
- onfocus="searchBox.OnSearchFieldFocus(true)"
- onblur="searchBox.OnSearchFieldFocus(false)"
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
- </span><span class="right">
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
- </span>
- </div>
-<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'搜索');
-</script>
-</div><!-- top -->
-<div id="side-nav" class="ui-resizable side-nav-resizable">
- <div id="nav-tree">
- <div id="nav-tree-contents">
- <div id="nav-sync" class="sync"></div>
- </div>
- </div>
- <div id="splitbar" style="-moz-user-select:none;"
- class="ui-resizable-handle">
- </div>
-</div>
-<script type="text/javascript">
-$(document).ready(function(){initNavTree('dir_0b07344794a20f8375311f92e90cd9a3.html','');});
-</script>
-<div id="doc-content">
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0"
- name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="header">
- <div class="headertitle">
-<div class="title">rapidjson 目录参考</div> </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
-目录</h2></td></tr>
-<tr class="memitem:dir_fe9dda5e4327cd9afbdccfe35db969bf"><td class="memItemLeft" align="right" valign="top">目录 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_fe9dda5e4327cd9afbdccfe35db969bf.html">error</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:dir_5167ae66a3a40cb9e5e46c75b7477e81"><td class="memItemLeft" align="right" valign="top">目录 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_5167ae66a3a40cb9e5e46c75b7477e81.html">internal</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-文件</h2></td></tr>
-<tr class="memitem:allocators_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>allocators.h</b> <a href="allocators_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:document_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="document_8h.html">document.h</a> <a href="document_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:encodedstream_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>encodedstream.h</b> <a href="encodedstream_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:encodings_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>encodings.h</b> <a href="encodings_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:filereadstream_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>filereadstream.h</b> <a href="filereadstream_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:filewritestream_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>filewritestream.h</b> <a href="filewritestream_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:fwd_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>fwd.h</b> <a href="fwd_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:istreamwrapper_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>istreamwrapper.h</b> <a href="istreamwrapper_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:memorybuffer_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>memorybuffer.h</b> <a href="memorybuffer_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:memorystream_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>memorystream.h</b> <a href="memorystream_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ostreamwrapper_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>ostreamwrapper.h</b> <a href="ostreamwrapper_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:pointer_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>pointer.h</b> <a href="pointer_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:prettywriter_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>prettywriter.h</b> <a href="prettywriter_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:rapidjson_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rapidjson_8h.html">rapidjson.h</a> <a href="rapidjson_8h_source.html">[代码]</a></td></tr>
-<tr class="memdesc:rapidjson_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">common definitions and configuration <br /></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:reader_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="reader_8h.html">reader.h</a> <a href="reader_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:schema_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>schema.h</b> <a href="schema_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:stream_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>stream.h</b> <a href="stream_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:stringbuffer_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>stringbuffer.h</b> <a href="stringbuffer_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:writer_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>writer.h</b> <a href="writer_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-</div><!-- contents -->
-</div><!-- doc-content -->
-<!-- HTML footer for doxygen 1.8.7-->
-<!-- start footer part -->
-<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
- <ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li>
- </ul>
-</div>
-</body>
-</html>
diff --git a/zh-cn/dir_2e777bb85672ca91d8484c1593fb1d89.js b/zh-cn/dir_2e777bb85672ca91d8484c1593fb1d89.js
deleted file mode 100644
index d1467640..00000000
--- a/zh-cn/dir_2e777bb85672ca91d8484c1593fb1d89.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var dir_2e777bb85672ca91d8484c1593fb1d89 =
-[
- [ "rapidjson", "dir_0b07344794a20f8375311f92e90cd9a3.html", "dir_0b07344794a20f8375311f92e90cd9a3" ]
-]; \ No newline at end of file
diff --git a/zh-cn/dir_32fb88e4d38e67d524aa70efbc36f66b.html b/zh-cn/dir_32fb88e4d38e67d524aa70efbc36f66b.html
new file mode 100644
index 00000000..6b051fd3
--- /dev/null
+++ b/zh-cn/dir_32fb88e4d38e67d524aa70efbc36f66b.html
@@ -0,0 +1,108 @@
+<!-- HTML header for doxygen 1.8.7-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<title>RapidJSON: include/rapidjson 目录参考</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="topbanner"><a href="https://github.com/miloyip/rapidjson" title="RapidJSON GitHub"><i class="githublogo"></i></a></div>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="搜索" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+<!-- end header part -->
+<!-- 制作者 Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'搜索');
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_32fb88e4d38e67d524aa70efbc36f66b.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">rapidjson 目录参考</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
+目录</h2></td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+文件</h2></td></tr>
+<tr class="memitem:document_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="document_8h.html">document.h</a> <a href="document_8h_source.html">[代码]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:rapidjson_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rapidjson_8h.html">rapidjson.h</a> <a href="rapidjson_8h_source.html">[代码]</a></td></tr>
+<tr class="memdesc:rapidjson_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">common definitions and configuration <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:reader_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="reader_8h.html">reader.h</a> <a href="reader_8h_source.html">[代码]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- HTML footer for doxygen 1.8.7-->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/zh-cn/dir_0b07344794a20f8375311f92e90cd9a3.js b/zh-cn/dir_32fb88e4d38e67d524aa70efbc36f66b.js
index bd44614f..4f37947c 100644
--- a/zh-cn/dir_0b07344794a20f8375311f92e90cd9a3.js
+++ b/zh-cn/dir_32fb88e4d38e67d524aa70efbc36f66b.js
@@ -1,7 +1,7 @@
-var dir_0b07344794a20f8375311f92e90cd9a3 =
+var dir_32fb88e4d38e67d524aa70efbc36f66b =
[
- [ "error", "dir_fe9dda5e4327cd9afbdccfe35db969bf.html", "dir_fe9dda5e4327cd9afbdccfe35db969bf" ],
- [ "internal", "dir_5167ae66a3a40cb9e5e46c75b7477e81.html", "dir_5167ae66a3a40cb9e5e46c75b7477e81" ],
+ [ "error", "dir_5937892b65cdaf02cc4201f920170bd1.html", "dir_5937892b65cdaf02cc4201f920170bd1" ],
+ [ "internal", "dir_8d7584a8244d286291cd37b99676a43b.html", "dir_8d7584a8244d286291cd37b99676a43b" ],
[ "allocators.h", "allocators_8h_source.html", null ],
[ "document.h", "document_8h.html", "document_8h" ],
[ "encodedstream.h", "encodedstream_8h_source.html", null ],
diff --git a/zh-cn/dir_5167ae66a3a40cb9e5e46c75b7477e81.html b/zh-cn/dir_5167ae66a3a40cb9e5e46c75b7477e81.html
deleted file mode 100644
index f5d009c8..00000000
--- a/zh-cn/dir_5167ae66a3a40cb9e5e46c75b7477e81.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!-- HTML header for doxygen 1.8.7-->
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
-<title>RapidJSON: include/rapidjson/internal 目录参考</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="navtree.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="resize.js"></script>
-<script type="text/javascript" src="navtree.js"></script>
-<script type="text/javascript">
- $(document).ready(initResizable);
- $(window).load(resizeHeight);
-</script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="topbanner"><a href="https://github.com/miloyip/rapidjson" title="RapidJSON GitHub"><i class="githublogo"></i></a></div>
- <div id="MSearchBox" class="MSearchBoxInactive">
- <span class="left">
- <img id="MSearchSelect" src="search/mag_sel.png"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- alt=""/>
- <input type="text" id="MSearchField" value="搜索" accesskey="S"
- onfocus="searchBox.OnSearchFieldFocus(true)"
- onblur="searchBox.OnSearchFieldFocus(false)"
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
- </span><span class="right">
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
- </span>
- </div>
-<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'搜索');
-</script>
-</div><!-- top -->
-<div id="side-nav" class="ui-resizable side-nav-resizable">
- <div id="nav-tree">
- <div id="nav-tree-contents">
- <div id="nav-sync" class="sync"></div>
- </div>
- </div>
- <div id="splitbar" style="-moz-user-select:none;"
- class="ui-resizable-handle">
- </div>
-</div>
-<script type="text/javascript">
-$(document).ready(function(){initNavTree('dir_5167ae66a3a40cb9e5e46c75b7477e81.html','');});
-</script>
-<div id="doc-content">
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
- onmouseover="return searchBox.OnSearchSelectShow()"
- onmouseout="return searchBox.OnSearchSelectHide()"
- onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0"
- name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="header">
- <div class="headertitle">
-<div class="title">internal 目录参考</div> </div>
-</div><!--header-->
-<div class="contents">
-<table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
-文件</h2></td></tr>
-<tr class="memitem:biginteger_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>biginteger.h</b> <a href="biginteger_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:diyfp_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>diyfp.h</b> <a href="diyfp_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:dtoa_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>dtoa.h</b> <a href="dtoa_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ieee754_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>ieee754.h</b> <a href="ieee754_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:itoa_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>itoa.h</b> <a href="itoa_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:meta_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>meta.h</b> <a href="meta_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:pow10_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>pow10.h</b> <a href="pow10_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:regex_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>regex.h</b> <a href="regex_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:stack_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>stack.h</b> <a href="stack_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:strfunc_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>strfunc.h</b> <a href="strfunc_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:strtod_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>strtod.h</b> <a href="strtod_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:swap_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>swap.h</b> <a href="swap_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table>
-</div><!-- contents -->
-</div><!-- doc-content -->
-<!-- HTML footer for doxygen 1.8.7-->
-<!-- start footer part -->
-<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
- <ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5167ae66a3a40cb9e5e46c75b7477e81.html">internal</a></li>
- </ul>
-</div>
-</body>
-</html>
diff --git a/zh-cn/dir_fe9dda5e4327cd9afbdccfe35db969bf.html b/zh-cn/dir_5937892b65cdaf02cc4201f920170bd1.html
index aa340505..cdf43b2c 100644
--- a/zh-cn/dir_fe9dda5e4327cd9afbdccfe35db969bf.html
+++ b/zh-cn/dir_5937892b65cdaf02cc4201f920170bd1.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/error 目录参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -58,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('dir_fe9dda5e4327cd9afbdccfe35db969bf.html','');});
+$(document).ready(function(){initNavTree('dir_5937892b65cdaf02cc4201f920170bd1.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('dir_fe9dda5e4327cd9afbdccfe35db969bf.h
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -83,8 +84,6 @@ $(document).ready(function(){initNavTree('dir_fe9dda5e4327cd9afbdccfe35db969bf.h
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
文件</h2></td></tr>
-<tr class="memitem:en_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><b>en.h</b> <a href="en_8h_source.html">[代码]</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:error_8h"><td class="memItemLeft" align="right" valign="top">文件 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="error_8h.html">error.h</a> <a href="error_8h_source.html">[代码]</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@@ -94,7 +93,7 @@ $(document).ready(function(){initNavTree('dir_fe9dda5e4327cd9afbdccfe35db969bf.h
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_fe9dda5e4327cd9afbdccfe35db969bf.html">error</a></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5937892b65cdaf02cc4201f920170bd1.html">error</a></li>
</ul>
</div>
</body>
diff --git a/zh-cn/dir_fe9dda5e4327cd9afbdccfe35db969bf.js b/zh-cn/dir_5937892b65cdaf02cc4201f920170bd1.js
index 2260064e..d6cc31ea 100644
--- a/zh-cn/dir_fe9dda5e4327cd9afbdccfe35db969bf.js
+++ b/zh-cn/dir_5937892b65cdaf02cc4201f920170bd1.js
@@ -1,4 +1,4 @@
-var dir_fe9dda5e4327cd9afbdccfe35db969bf =
+var dir_5937892b65cdaf02cc4201f920170bd1 =
[
[ "en.h", "en_8h_source.html", null ],
[ "error.h", "error_8h.html", "error_8h" ]
diff --git a/zh-cn/dir_8d7584a8244d286291cd37b99676a43b.html b/zh-cn/dir_8d7584a8244d286291cd37b99676a43b.html
new file mode 100644
index 00000000..f8a0b68a
--- /dev/null
+++ b/zh-cn/dir_8d7584a8244d286291cd37b99676a43b.html
@@ -0,0 +1,94 @@
+<!-- HTML header for doxygen 1.8.7-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
+<title>RapidJSON: include/rapidjson/internal 目录参考</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="navtree.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
+<script type="text/javascript" src="navtree.js"></script>
+<script type="text/javascript">
+ $(document).ready(initResizable);
+</script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() { init_search(); });
+</script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="topbanner"><a href="https://github.com/miloyip/rapidjson" title="RapidJSON GitHub"><i class="githublogo"></i></a></div>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="搜索" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+<!-- end header part -->
+<!-- 制作者 Doxygen 1.8.13 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'搜索');
+</script>
+</div><!-- top -->
+<div id="side-nav" class="ui-resizable side-nav-resizable">
+ <div id="nav-tree">
+ <div id="nav-tree-contents">
+ <div id="nav-sync" class="sync"></div>
+ </div>
+ </div>
+ <div id="splitbar" style="-moz-user-select:none;"
+ class="ui-resizable-handle">
+ </div>
+</div>
+<script type="text/javascript">
+$(document).ready(function(){initNavTree('dir_8d7584a8244d286291cd37b99676a43b.html','');});
+</script>
+<div id="doc-content">
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle">
+<div class="title">internal 目录参考</div> </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+</div><!-- doc-content -->
+<!-- HTML footer for doxygen 1.8.7-->
+<!-- start footer part -->
+<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
+ <ul>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_8d7584a8244d286291cd37b99676a43b.html">internal</a></li>
+ </ul>
+</div>
+</body>
+</html>
diff --git a/zh-cn/dir_5167ae66a3a40cb9e5e46c75b7477e81.js b/zh-cn/dir_8d7584a8244d286291cd37b99676a43b.js
index 45a401b4..c72461e3 100644
--- a/zh-cn/dir_5167ae66a3a40cb9e5e46c75b7477e81.js
+++ b/zh-cn/dir_8d7584a8244d286291cd37b99676a43b.js
@@ -1,4 +1,4 @@
-var dir_5167ae66a3a40cb9e5e46c75b7477e81 =
+var dir_8d7584a8244d286291cd37b99676a43b =
[
[ "biginteger.h", "biginteger_8h_source.html", null ],
[ "diyfp.h", "diyfp_8h_source.html", null ],
diff --git a/zh-cn/dir_2e777bb85672ca91d8484c1593fb1d89.html b/zh-cn/dir_d44c64559bbebec7f509842c48db8b23.html
index 2aaee6ca..d215f6bd 100644
--- a/zh-cn/dir_2e777bb85672ca91d8484c1593fb1d89.html
+++ b/zh-cn/dir_d44c64559bbebec7f509842c48db8b23.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include 目录参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -58,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('dir_2e777bb85672ca91d8484c1593fb1d89.html','');});
+$(document).ready(function(){initNavTree('dir_d44c64559bbebec7f509842c48db8b23.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('dir_2e777bb85672ca91d8484c1593fb1d89.h
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -83,8 +84,6 @@ $(document).ready(function(){initNavTree('dir_2e777bb85672ca91d8484c1593fb1d89.h
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
目录</h2></td></tr>
-<tr class="memitem:dir_0b07344794a20f8375311f92e90cd9a3"><td class="memItemLeft" align="right" valign="top">目录 &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></td></tr>
-<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
@@ -92,7 +91,7 @@ $(document).ready(function(){initNavTree('dir_2e777bb85672ca91d8484c1593fb1d89.h
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li>
</ul>
</div>
</body>
diff --git a/zh-cn/dir_d44c64559bbebec7f509842c48db8b23.js b/zh-cn/dir_d44c64559bbebec7f509842c48db8b23.js
new file mode 100644
index 00000000..42c704c0
--- /dev/null
+++ b/zh-cn/dir_d44c64559bbebec7f509842c48db8b23.js
@@ -0,0 +1,4 @@
+var dir_d44c64559bbebec7f509842c48db8b23 =
+[
+ [ "rapidjson", "dir_32fb88e4d38e67d524aa70efbc36f66b.html", "dir_32fb88e4d38e67d524aa70efbc36f66b" ]
+]; \ No newline at end of file
diff --git a/zh-cn/diyfp_8h_source.html b/zh-cn/diyfp_8h_source.html
index 2f555284..de23fcf6 100644
--- a/zh-cn/diyfp_8h_source.html
+++ b/zh-cn/diyfp_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/internal/diyfp.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('diyfp_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,272 +81,14 @@ $(document).ready(function(){initNavTree('diyfp_8h_source.html','');});
<div class="title">diyfp.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// This is a C++ header-only implementation of Grisu2 algorithm from the publication:</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Loitsch, Florian. &quot;Printing floating-point numbers quickly and accurately with</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// integers.&quot; ACM Sigplan Notices 45.6 (2010): 233-243.</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_DIYFP_H_</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIYFP_H_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; defined(_M_AMD64) &amp;&amp; !defined(__INTEL_COMPILER)</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;intrin.h&gt;</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#pragma intrinsic(_BitScanReverse64)</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#pragma intrinsic(_umul128)</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">struct </span>DiyFp {</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; DiyFp() : f(), e() {}</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; DiyFp(uint64_t fp, <span class="keywordtype">int</span> exp) : f(fp), e(exp) {}</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">explicit</span> DiyFp(<span class="keywordtype">double</span> d) {</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">union </span>{</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">double</span> d;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; uint64_t u64;</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; } u = { d };</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">int</span> biased_e = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>((u.u64 &amp; kDpExponentMask) &gt;&gt; kDpSignificandSize);</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; uint64_t significand = (u.u64 &amp; kDpSignificandMask);</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (biased_e != 0) {</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; f = significand + kDpHiddenBit;</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; e = biased_e - kDpExponentBias;</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; } </div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; f = significand;</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; e = kDpMinExponent + 1;</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; DiyFp operator-(<span class="keyword">const</span> DiyFp&amp; rhs)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> DiyFp(f - rhs.f, e);</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; DiyFp operator*(<span class="keyword">const</span> DiyFp&amp; rhs)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; defined(_M_AMD64)</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; uint64_t h;</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; uint64_t l = _umul128(f, rhs.f, &amp;h);</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (l &amp; (uint64_t(1) &lt;&lt; 63)) <span class="comment">// rounding</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; h++;</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> DiyFp(h, e + rhs.e + 64);</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#elif (__GNUC__ &gt; 4 || (__GNUC__ == 4 &amp;&amp; __GNUC_MINOR__ &gt;= 6)) &amp;&amp; defined(__x86_64__)</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; __extension__ <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int128 uint128;</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; uint128 p = <span class="keyword">static_cast&lt;</span>uint128<span class="keyword">&gt;</span>(f) * static_cast&lt;uint128&gt;(rhs.f);</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; uint64_t h = <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(p &gt;&gt; 64);</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; uint64_t l = <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(p);</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">if</span> (l &amp; (uint64_t(1) &lt;&lt; 63)) <span class="comment">// rounding</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; h++;</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> DiyFp(h, e + rhs.e + 64);</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">const</span> uint64_t M32 = 0xFFFFFFFF;</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">const</span> uint64_t a = f &gt;&gt; 32;</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> uint64_t b = f &amp; M32;</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">const</span> uint64_t c = rhs.f &gt;&gt; 32;</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">const</span> uint64_t d = rhs.f &amp; M32;</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">const</span> uint64_t ac = a * c;</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">const</span> uint64_t bc = b * c;</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> uint64_t ad = a * d;</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> uint64_t bd = b * d;</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; uint64_t tmp = (bd &gt;&gt; 32) + (ad &amp; M32) + (bc &amp; M32);</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; tmp += 1U &lt;&lt; 31; <span class="comment">/// mult_round</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"></span> <span class="keywordflow">return</span> DiyFp(ac + (ad &gt;&gt; 32) + (bc &gt;&gt; 32) + (tmp &gt;&gt; 32), e + rhs.e + 64);</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; DiyFp Normalize()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; defined(_M_AMD64)</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> index;</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; _BitScanReverse64(&amp;index, f);</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> DiyFp(f &lt;&lt; (63 - index), e - (63 - index));</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor">#elif defined(__GNUC__) &amp;&amp; __GNUC__ &gt;= 4</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">int</span> s = __builtin_clzll(f);</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> DiyFp(f &lt;&lt; s, e - s);</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; DiyFp res = *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">while</span> (!(res.f &amp; (static_cast&lt;uint64_t&gt;(1) &lt;&lt; 63))) {</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; res.f &lt;&lt;= 1;</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; res.e--;</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> res;</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; DiyFp NormalizeBoundary()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; DiyFp res = *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">while</span> (!(res.f &amp; (kDpHiddenBit &lt;&lt; 1))) {</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; res.f &lt;&lt;= 1;</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; res.e--;</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; res.f &lt;&lt;= (kDiySignificandSize - kDpSignificandSize - 2);</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; res.e = res.e - (kDiySignificandSize - kDpSignificandSize - 2);</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> res;</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">void</span> NormalizedBoundaries(DiyFp* minus, DiyFp* plus)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; DiyFp pl = DiyFp((f &lt;&lt; 1) + 1, e - 1).NormalizeBoundary();</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; DiyFp mi = (f == kDpHiddenBit) ? DiyFp((f &lt;&lt; 2) - 1, e - 2) : DiyFp((f &lt;&lt; 1) - 1, e - 1);</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; mi.f &lt;&lt;= mi.e - pl.e;</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; mi.e = pl.e;</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; *plus = pl;</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; *minus = mi;</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordtype">double</span> ToDouble()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">union </span>{</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordtype">double</span> d;</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; uint64_t u64;</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }u;</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">const</span> uint64_t be = (e == kDpDenormalExponent &amp;&amp; (f &amp; kDpHiddenBit) == 0) ? 0 : </div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(e + kDpExponentBias);</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; u.u64 = (f &amp; kDpSignificandMask) | (be &lt;&lt; kDpSignificandSize);</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">return</span> u.d;</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDiySignificandSize = 64;</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDpSignificandSize = 52;</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDpExponentBias = 0x3FF + kDpSignificandSize;</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDpMaxExponent = 0x7FF - kDpExponentBias;</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDpMinExponent = -kDpExponentBias;</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDpDenormalExponent = -kDpExponentBias + 1;</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kDpExponentMask = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x7FF00000, 0x00000000);</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kDpSignificandMask = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x000FFFFF, 0xFFFFFFFF);</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kDpHiddenBit = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x00100000, 0x00000000);</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; uint64_t f;</div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordtype">int</span> e;</div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;};</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="keyword">inline</span> DiyFp GetCachedPowerByIndex(<span class="keywordtype">size_t</span> index) {</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="comment">// 10^-348, 10^-340, ..., 10^340</span></div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kCachedPowers_F[] = {</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xfa8fd5a0, 0x081c0288), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xbaaee17f, 0xa23ebf76),</div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x8b16fb20, 0x3055ac76), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xcf42894a, 0x5dce35ea),</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9a6bb0aa, 0x55653b2d), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xe61acf03, 0x3d1a45df),</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xab70fe17, 0xc79ac6ca), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xff77b1fc, 0xbebcdc4f),</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xbe5691ef, 0x416bd60c), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x8dd01fad, 0x907ffc3c),</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xd3515c28, 0x31559a83), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9d71ac8f, 0xada6c9b5),</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xea9c2277, 0x23ee8bcb), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xaecc4991, 0x4078536d),</div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x823c1279, 0x5db6ce57), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc2109436, 0x4dfb5637),</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9096ea6f, 0x3848984f), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xd77485cb, 0x25823ac7),</div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xa086cfcd, 0x97bf97f4), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xef340a98, 0x172aace5),</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xb23867fb, 0x2a35b28e), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x84c8d4df, 0xd2c63f3b),</div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc5dd4427, 0x1ad3cdba), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x936b9fce, 0xbb25c996),</div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xdbac6c24, 0x7d62a584), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xa3ab6658, 0x0d5fdaf6),</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xf3e2f893, 0xdec3f126), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xb5b5ada8, 0xaaff80b8),</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x87625f05, 0x6c7c4a8b), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc9bcff60, 0x34c13053),</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x964e858c, 0x91ba2655), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xdff97724, 0x70297ebd),</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xa6dfbd9f, 0xb8e5b88f), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xf8a95fcf, 0x88747d94),</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xb9447093, 0x8fa89bcf), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x8a08f0f8, 0xbf0f156b),</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xcdb02555, 0x653131b6), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x993fe2c6, 0xd07b7fac),</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xe45c10c4, 0x2a2b3b06), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xaa242499, 0x697392d3),</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xfd87b5f2, 0x8300ca0e), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xbce50864, 0x92111aeb),</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x8cbccc09, 0x6f5088cc), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xd1b71758, 0xe219652c),</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9c400000, 0x00000000), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xe8d4a510, 0x00000000),</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xad78ebc5, 0xac620000), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x813f3978, 0xf8940984),</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc097ce7b, 0xc90715b3), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x8f7e32ce, 0x7bea5c70),</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xd5d238a4, 0xabe98068), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9f4f2726, 0x179a2245),</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xed63a231, 0xd4c4fb27), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xb0de6538, 0x8cc8ada8),</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x83c7088e, 0x1aab65db), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc45d1df9, 0x42711d9a),</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x924d692c, 0xa61be758), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xda01ee64, 0x1a708dea),</div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xa26da399, 0x9aef774a), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xf209787b, 0xb47d6b85),</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xb454e4a1, 0x79dd1877), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x865b8692, 0x5b9bc5c2),</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc83553c5, 0xc8965d3d), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x952ab45c, 0xfa97a0b3),</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xde469fbd, 0x99a05fe3), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xa59bc234, 0xdb398c25),</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xf6c69a72, 0xa3989f5c), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xb7dcbf53, 0x54e9bece),</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x88fcf317, 0xf22241e2), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xcc20ce9b, 0xd35c78a5),</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x98165af3, 0x7b2153df), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xe2a0b5dc, 0x971f303a),</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xa8d9d153, 0x5ce3b396), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xfb9b7cd9, 0xa4a7443c),</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xbb764c4c, 0xa7a44410), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x8bab8eef, 0xb6409c1a),</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xd01fef10, 0xa657842c), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9b10a4e5, 0xe9913129),</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xe7109bfb, 0xa19c0c9d), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xac2820d9, 0x623bf429),</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x80444b5e, 0x7aa7cf85), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xbf21e440, 0x03acdd2d),</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x8e679c2f, 0x5e44ff8f), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xd433179d, 0x9c8cb841),</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9e19db92, 0xb4e31ba9), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xeb96bf6e, 0xbadf77d9),</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xaf87023b, 0x9bf0ee6b)</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; };</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> int16_t kCachedPowers_E[] = {</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,</div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; 907, 933, 960, 986, 1013, 1039, 1066</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; };</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> DiyFp(kCachedPowers_F[index], kCachedPowers_E[index]);</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;}</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; </div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="keyword">inline</span> DiyFp GetCachedPower(<span class="keywordtype">int</span> e, <span class="keywordtype">int</span>* K) {</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="comment">//int k = static_cast&lt;int&gt;(ceil((-61 - e) * 0.30102999566398114)) + 374;</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordtype">double</span> dk = (-61 - e) * 0.30102999566398114 + 347; <span class="comment">// dk must be positive, so can do ceiling in positive</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordtype">int</span> k = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(dk);</div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> (dk - k &gt; 0.0)</div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; k++;</div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordtype">unsigned</span> index = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>((k &gt;&gt; 3) + 1);</div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; *K = -(-348 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(index &lt;&lt; 3)); <span class="comment">// decimal exponent no need lookup table</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> GetCachedPowerByIndex(index);</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;}</div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="keyword">inline</span> DiyFp GetCachedPower10(<span class="keywordtype">int</span> exp, <span class="keywordtype">int</span> *outExp) {</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordtype">unsigned</span> index = (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(exp) + 348u) / 8u;</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; *outExp = -348 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(index) * 8;</div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> GetCachedPowerByIndex(index);</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_DIYFP_H_</span></div>
-<div class="ttc" id="rapidjson_8h_html_aaee1245f375a71be1ac9b8a07ba5fb8f"><div class="ttname"><a href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a></div><div class="ttdeci">#define RAPIDJSON_UINT64_C2(high32, low32)</div><div class="ttdoc">Construct a 64-bit literal by a pair of 32-bit integer. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:294</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// This is a C++ header-only implementation of Grisu2 algorithm from the publication:</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Loitsch, Florian. &quot;Printing floating-point numbers quickly and accurately with</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// integers.&quot; ACM Sigplan Notices 45.6 (2010): 233-243.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_DIYFP_H_</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIYFP_H_</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; defined(_M_AMD64) &amp;&amp; !defined(__INTEL_COMPILER)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;intrin.h&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#pragma intrinsic(_BitScanReverse64)</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#pragma intrinsic(_umul128)</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">struct </span>DiyFp {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; DiyFp() : f(), e() {}</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; DiyFp(uint64_t fp, <span class="keywordtype">int</span> exp) : f(fp), e(exp) {}</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">explicit</span> DiyFp(<span class="keywordtype">double</span> d) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">union </span>{</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">double</span> d;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; uint64_t u64;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; } u = { d };</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">int</span> biased_e = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>((u.u64 &amp; kDpExponentMask) &gt;&gt; kDpSignificandSize);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; uint64_t significand = (u.u64 &amp; kDpSignificandMask);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">if</span> (biased_e != 0) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; f = significand + kDpHiddenBit;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; e = biased_e - kDpExponentBias;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; } </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; f = significand;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; e = kDpMinExponent + 1;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; DiyFp operator-(<span class="keyword">const</span> DiyFp&amp; rhs)<span class="keyword"> const </span>{</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> DiyFp(f - rhs.f, e);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; DiyFp operator*(<span class="keyword">const</span> DiyFp&amp; rhs)<span class="keyword"> const </span>{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; defined(_M_AMD64)</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; uint64_t h;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; uint64_t l = _umul128(f, rhs.f, &amp;h);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (l &amp; (uint64_t(1) &lt;&lt; 63)) <span class="comment">// rounding</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; h++;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> DiyFp(h, e + rhs.e + 64);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#elif (__GNUC__ &gt; 4 || (__GNUC__ == 4 &amp;&amp; __GNUC_MINOR__ &gt;= 6)) &amp;&amp; defined(__x86_64__)</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; __extension__ <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int128 uint128;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; uint128 p = <span class="keyword">static_cast&lt;</span>uint128<span class="keyword">&gt;</span>(f) * static_cast&lt;uint128&gt;(rhs.f);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; uint64_t h = <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(p &gt;&gt; 64);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; uint64_t l = <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(p);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">if</span> (l &amp; (uint64_t(1) &lt;&lt; 63)) <span class="comment">// rounding</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; h++;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> DiyFp(h, e + rhs.e + 64);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">const</span> uint64_t M32 = 0xFFFFFFFF;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">const</span> uint64_t a = f &gt;&gt; 32;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">const</span> uint64_t b = f &amp; M32;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">const</span> uint64_t c = rhs.f &gt;&gt; 32;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">const</span> uint64_t d = rhs.f &amp; M32;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keyword">const</span> uint64_t ac = a * c;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">const</span> uint64_t bc = b * c;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> uint64_t ad = a * d;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">const</span> uint64_t bd = b * d;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; uint64_t tmp = (bd &gt;&gt; 32) + (ad &amp; M32) + (bc &amp; M32);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; tmp += 1U &lt;&lt; 31; <span class="comment">/// mult_round</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"></span> <span class="keywordflow">return</span> DiyFp(ac + (ad &gt;&gt; 32) + (bc &gt;&gt; 32) + (tmp &gt;&gt; 32), e + rhs.e + 64);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; DiyFp Normalize()<span class="keyword"> const </span>{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; defined(_M_AMD64)</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> index;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; _BitScanReverse64(&amp;index, f);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">return</span> DiyFp(f &lt;&lt; (63 - index), e - (63 - index));</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor">#elif defined(__GNUC__) &amp;&amp; __GNUC__ &gt;= 4</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">int</span> s = __builtin_clzll(f);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> DiyFp(f &lt;&lt; s, e - s);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; DiyFp res = *<span class="keyword">this</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">while</span> (!(res.f &amp; (static_cast&lt;uint64_t&gt;(1) &lt;&lt; 63))) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; res.f &lt;&lt;= 1;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; res.e--;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; DiyFp NormalizeBoundary()<span class="keyword"> const </span>{</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; DiyFp res = *<span class="keyword">this</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">while</span> (!(res.f &amp; (kDpHiddenBit &lt;&lt; 1))) {</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; res.f &lt;&lt;= 1;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; res.e--;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; res.f &lt;&lt;= (kDiySignificandSize - kDpSignificandSize - 2);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; res.e = res.e - (kDiySignificandSize - kDpSignificandSize - 2);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> res;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">void</span> NormalizedBoundaries(DiyFp* minus, DiyFp* plus)<span class="keyword"> const </span>{</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; DiyFp pl = DiyFp((f &lt;&lt; 1) + 1, e - 1).NormalizeBoundary();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; DiyFp mi = (f == kDpHiddenBit) ? DiyFp((f &lt;&lt; 2) - 1, e - 2) : DiyFp((f &lt;&lt; 1) - 1, e - 1);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; mi.f &lt;&lt;= mi.e - pl.e;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; mi.e = pl.e;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; *plus = pl;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; *minus = mi;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordtype">double</span> ToDouble()<span class="keyword"> const </span>{</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">union </span>{</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordtype">double</span> d;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; uint64_t u64;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }u;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">const</span> uint64_t be = (e == kDpDenormalExponent &amp;&amp; (f &amp; kDpHiddenBit) == 0) ? 0 : </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(e + kDpExponentBias);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; u.u64 = (f &amp; kDpSignificandMask) | (be &lt;&lt; kDpSignificandSize);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">return</span> u.d;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDiySignificandSize = 64;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDpSignificandSize = 52;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDpExponentBias = 0x3FF + kDpSignificandSize;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDpMaxExponent = 0x7FF - kDpExponentBias;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDpMinExponent = -kDpExponentBias;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDpDenormalExponent = -kDpExponentBias + 1;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kDpExponentMask = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x7FF00000, 0x00000000);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kDpSignificandMask = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x000FFFFF, 0xFFFFFFFF);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kDpHiddenBit = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x00100000, 0x00000000);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; uint64_t f;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordtype">int</span> e;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;};</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="keyword">inline</span> DiyFp GetCachedPowerByIndex(<span class="keywordtype">size_t</span> index) {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="comment">// 10^-348, 10^-340, ..., 10^340</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kCachedPowers_F[] = {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xfa8fd5a0, 0x081c0288), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xbaaee17f, 0xa23ebf76),</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x8b16fb20, 0x3055ac76), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xcf42894a, 0x5dce35ea),</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9a6bb0aa, 0x55653b2d), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xe61acf03, 0x3d1a45df),</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xab70fe17, 0xc79ac6ca), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xff77b1fc, 0xbebcdc4f),</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xbe5691ef, 0x416bd60c), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x8dd01fad, 0x907ffc3c),</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xd3515c28, 0x31559a83), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9d71ac8f, 0xada6c9b5),</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xea9c2277, 0x23ee8bcb), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xaecc4991, 0x4078536d),</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x823c1279, 0x5db6ce57), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc2109436, 0x4dfb5637),</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9096ea6f, 0x3848984f), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xd77485cb, 0x25823ac7),</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xa086cfcd, 0x97bf97f4), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xef340a98, 0x172aace5),</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xb23867fb, 0x2a35b28e), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x84c8d4df, 0xd2c63f3b),</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc5dd4427, 0x1ad3cdba), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x936b9fce, 0xbb25c996),</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xdbac6c24, 0x7d62a584), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xa3ab6658, 0x0d5fdaf6),</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xf3e2f893, 0xdec3f126), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xb5b5ada8, 0xaaff80b8),</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x87625f05, 0x6c7c4a8b), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc9bcff60, 0x34c13053),</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x964e858c, 0x91ba2655), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xdff97724, 0x70297ebd),</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xa6dfbd9f, 0xb8e5b88f), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xf8a95fcf, 0x88747d94),</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xb9447093, 0x8fa89bcf), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x8a08f0f8, 0xbf0f156b),</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xcdb02555, 0x653131b6), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x993fe2c6, 0xd07b7fac),</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xe45c10c4, 0x2a2b3b06), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xaa242499, 0x697392d3),</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xfd87b5f2, 0x8300ca0e), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xbce50864, 0x92111aeb),</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x8cbccc09, 0x6f5088cc), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xd1b71758, 0xe219652c),</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9c400000, 0x00000000), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xe8d4a510, 0x00000000),</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xad78ebc5, 0xac620000), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x813f3978, 0xf8940984),</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc097ce7b, 0xc90715b3), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x8f7e32ce, 0x7bea5c70),</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xd5d238a4, 0xabe98068), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9f4f2726, 0x179a2245),</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xed63a231, 0xd4c4fb27), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xb0de6538, 0x8cc8ada8),</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x83c7088e, 0x1aab65db), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc45d1df9, 0x42711d9a),</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x924d692c, 0xa61be758), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xda01ee64, 0x1a708dea),</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xa26da399, 0x9aef774a), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xf209787b, 0xb47d6b85),</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xb454e4a1, 0x79dd1877), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x865b8692, 0x5b9bc5c2),</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc83553c5, 0xc8965d3d), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x952ab45c, 0xfa97a0b3),</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xde469fbd, 0x99a05fe3), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xa59bc234, 0xdb398c25),</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xf6c69a72, 0xa3989f5c), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xb7dcbf53, 0x54e9bece),</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x88fcf317, 0xf22241e2), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xcc20ce9b, 0xd35c78a5),</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x98165af3, 0x7b2153df), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xe2a0b5dc, 0x971f303a),</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xa8d9d153, 0x5ce3b396), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xfb9b7cd9, 0xa4a7443c),</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xbb764c4c, 0xa7a44410), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x8bab8eef, 0xb6409c1a),</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xd01fef10, 0xa657842c), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9b10a4e5, 0xe9913129),</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xe7109bfb, 0xa19c0c9d), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xac2820d9, 0x623bf429),</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x80444b5e, 0x7aa7cf85), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xbf21e440, 0x03acdd2d),</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x8e679c2f, 0x5e44ff8f), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xd433179d, 0x9c8cb841),</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9e19db92, 0xb4e31ba9), <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xeb96bf6e, 0xbadf77d9),</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xaf87023b, 0x9bf0ee6b)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; };</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> int16_t kCachedPowers_E[] = {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007, -980,</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; -954, -927, -901, -874, -847, -821, -794, -768, -741, -715,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; -688, -661, -635, -608, -582, -555, -529, -502, -475, -449,</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; -422, -396, -369, -343, -316, -289, -263, -236, -210, -183,</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; -157, -130, -103, -77, -50, -24, 3, 30, 56, 83,</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; 109, 136, 162, 189, 216, 242, 269, 295, 322, 348,</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; 375, 402, 428, 455, 481, 508, 534, 561, 588, 614,</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; 641, 667, 694, 720, 747, 774, 800, 827, 853, 880,</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; 907, 933, 960, 986, 1013, 1039, 1066</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; };</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> DiyFp(kCachedPowers_F[index], kCachedPowers_E[index]);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;}</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="keyword">inline</span> DiyFp GetCachedPower(<span class="keywordtype">int</span> e, <span class="keywordtype">int</span>* K) {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="comment">//int k = static_cast&lt;int&gt;(ceil((-61 - e) * 0.30102999566398114)) + 374;</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordtype">double</span> dk = (-61 - e) * 0.30102999566398114 + 347; <span class="comment">// dk must be positive, so can do ceiling in positive</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordtype">int</span> k = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(dk);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> (dk - k &gt; 0.0)</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; k++;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordtype">unsigned</span> index = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>((k &gt;&gt; 3) + 1);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; *K = -(-348 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(index &lt;&lt; 3)); <span class="comment">// decimal exponent no need lookup table</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> GetCachedPowerByIndex(index);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;}</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="keyword">inline</span> DiyFp GetCachedPower10(<span class="keywordtype">int</span> exp, <span class="keywordtype">int</span> *outExp) {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordtype">unsigned</span> index = (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(exp) + 348u) / 8u;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; *outExp = -348 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(index) * 8;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> GetCachedPowerByIndex(index);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_DIYFP_H_</span></div><div class="ttc" id="rapidjson_8h_html_aaee1245f375a71be1ac9b8a07ba5fb8f"><div class="ttname"><a href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a></div><div class="ttdeci">#define RAPIDJSON_UINT64_C2(high32, low32)</div><div class="ttdoc">Construct a 64-bit literal by a pair of 32-bit integer. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:294</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5167ae66a3a40cb9e5e46c75b7477e81.html">internal</a></li><li class="navelem"><b>diyfp.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_8d7584a8244d286291cd37b99676a43b.html">internal</a></li><li class="navelem"><b>diyfp.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/ftv2doc.png b/zh-cn/doc.png
index 17edabff..17edabff 100644
--- a/zh-cn/ftv2doc.png
+++ b/zh-cn/doc.png
Binary files differ
diff --git a/zh-cn/document_8h.html b/zh-cn/document_8h.html
index c8d78030..dfa8faff 100644
--- a/zh-cn/document_8h.html
+++ b/zh-cn/document_8h.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/document.h 文件参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('document_8h.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -113,10 +114,10 @@ $(document).ready(function(){initNavTree('document_8h.html','');});
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">rapidjson::GenericStringRef&lt; CharType &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reference to a constant string (not taking a copy) <a href="structrapidjson_1_1_generic_string_ref.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper class for accessing Value of array type. <a href="classrapidjson_1_1_generic_array.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper class for accessing Value of object type. <a href="classrapidjson_1_1_generic_object.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a></td></tr>
@@ -129,10 +130,10 @@ $(document).ready(function(){initNavTree('document_8h.html','');});
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A document for parsing JSON text as DOM. <a href="classrapidjson_1_1_generic_document.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; bool, typename &gt;</a></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper class for accessing Value of array type. <a href="classrapidjson_1_1_generic_array.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; bool, typename &gt;</a></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper class for accessing Value of object type. <a href="classrapidjson_1_1_generic_object.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
@@ -144,28 +145,28 @@ $(document).ready(function(){initNavTree('document_8h.html','');});
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
类型定义</h2></td></tr>
-<tr class="memitem:aa65fc9fb381b2cbc54f98673eadd6505"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa65fc9fb381b2cbc54f98673eadd6505"></a>
+<tr class="memitem:aa65fc9fb381b2cbc54f98673eadd6505"><td class="memItemLeft" align="right" valign="top"><a id="aa65fc9fb381b2cbc54f98673eadd6505"></a>
typedef GenericValue&lt; UTF8&lt;&gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">rapidjson::Value</a></td></tr>
-<tr class="memdesc:aa65fc9fb381b2cbc54f98673eadd6505"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> with <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding. <br /></td></tr>
+<tr class="memdesc:aa65fc9fb381b2cbc54f98673eadd6505"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> with <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding <br /></td></tr>
<tr class="separator:aa65fc9fb381b2cbc54f98673eadd6505"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ace11b5b575baf1cccd5ba5f8586dcdc8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace11b5b575baf1cccd5ba5f8586dcdc8"></a>
+<tr class="memitem:ace11b5b575baf1cccd5ba5f8586dcdc8"><td class="memItemLeft" align="right" valign="top"><a id="ace11b5b575baf1cccd5ba5f8586dcdc8"></a>
typedef GenericDocument&lt; UTF8&lt;&gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">rapidjson::Document</a></td></tr>
-<tr class="memdesc:ace11b5b575baf1cccd5ba5f8586dcdc8"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_generic_document.html" title="A document for parsing JSON text as DOM. ">GenericDocument</a> with <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding. <br /></td></tr>
+<tr class="memdesc:ace11b5b575baf1cccd5ba5f8586dcdc8"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_generic_document.html" title="A document for parsing JSON text as DOM. ">GenericDocument</a> with <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding <br /></td></tr>
<tr class="separator:ace11b5b575baf1cccd5ba5f8586dcdc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
函数</h2></td></tr>
<tr class="memitem:aa6b9fd9f6aa49405a574c362ba9af6b5"><td class="memTemplParams" colspan="2">template&lt;typename CharType &gt; </td></tr>
<tr class="memitem:aa6b9fd9f6aa49405a574c362ba9af6b5"><td class="memTemplItemLeft" align="right" valign="top">GenericStringRef&lt; CharType &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#aa6b9fd9f6aa49405a574c362ba9af6b5">rapidjson::StringRef</a> (const CharType *str)</td></tr>
-<tr class="memdesc:aa6b9fd9f6aa49405a574c362ba9af6b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a character pointer as constant string. <a href="#aa6b9fd9f6aa49405a574c362ba9af6b5">更多...</a><br /></td></tr>
+<tr class="memdesc:aa6b9fd9f6aa49405a574c362ba9af6b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a character pointer as constant string <a href="namespacerapidjson.html#aa6b9fd9f6aa49405a574c362ba9af6b5">更多...</a><br /></td></tr>
<tr class="separator:aa6b9fd9f6aa49405a574c362ba9af6b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a578c51ab574a50a9c760b9da7c7562f2"><td class="memTemplParams" colspan="2">template&lt;typename CharType &gt; </td></tr>
<tr class="memitem:a578c51ab574a50a9c760b9da7c7562f2"><td class="memTemplItemLeft" align="right" valign="top">GenericStringRef&lt; CharType &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a578c51ab574a50a9c760b9da7c7562f2">rapidjson::StringRef</a> (const CharType *str, size_t length)</td></tr>
-<tr class="memdesc:a578c51ab574a50a9c760b9da7c7562f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a character pointer as constant string. <a href="#a578c51ab574a50a9c760b9da7c7562f2">更多...</a><br /></td></tr>
+<tr class="memdesc:a578c51ab574a50a9c760b9da7c7562f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a character pointer as constant string <a href="namespacerapidjson.html#a578c51ab574a50a9c760b9da7c7562f2">更多...</a><br /></td></tr>
<tr class="separator:a578c51ab574a50a9c760b9da7c7562f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af94951529a5d51e8c4e6e770bb707c1f"><td class="memTemplParams" colspan="2">template&lt;typename CharType &gt; </td></tr>
<tr class="memitem:af94951529a5d51e8c4e6e770bb707c1f"><td class="memTemplItemLeft" align="right" valign="top">GenericStringRef&lt; CharType &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">rapidjson::StringRef</a> (const std::basic_string&lt; CharType &gt; &amp;str)</td></tr>
-<tr class="memdesc:af94951529a5d51e8c4e6e770bb707c1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a string object as constant string. <a href="#af94951529a5d51e8c4e6e770bb707c1f">更多...</a><br /></td></tr>
+<tr class="memdesc:af94951529a5d51e8c4e6e770bb707c1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a string object as constant string <a href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">更多...</a><br /></td></tr>
<tr class="separator:af94951529a5d51e8c4e6e770bb707c1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
@@ -174,7 +175,7 @@ typedef GenericDocument&lt; UTF8&lt;&gt; &gt;&#160;</td><td class="memItemRight"
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="document_8h.html">document.h</a></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="document_8h.html">document.h</a></li>
</ul>
</div>
</body>
diff --git a/zh-cn/document_8h_source.html b/zh-cn/document_8h_source.html
index 720e4d68..7f250878 100644
--- a/zh-cn/document_8h_source.html
+++ b/zh-cn/document_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/document.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('document_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,2625 +81,7 @@ $(document).ready(function(){initNavTree('document_8h_source.html','');});
<div class="title">document.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="document_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_DOCUMENT_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_DOCUMENT_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">/*! \file document.h */</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="reader_8h.html">reader.h</a>&quot;</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;internal/meta.h&quot;</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;internal/strfunc.h&quot;</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;memorystream.h&quot;</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;encodedstream.h&quot;</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;new&gt;</span> <span class="comment">// placement new</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;RAPIDJSON_DIAG_OFF(4127) <span class="comment">// conditional expression is constant</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;RAPIDJSON_DIAG_OFF(4244) <span class="comment">// conversion from kXxxFlags to &#39;uint16_t&#39;, possible loss of data</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#ifdef _MINWINDEF_ // see: http://stackoverflow.com/questions/22744262/cant-call-stdmax-because-minwindef-h-defines-max</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#ifndef NOMINMAX</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#pragma push_macro(&quot;min&quot;)</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#pragma push_macro(&quot;max&quot;)</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#undef min</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#undef max</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;RAPIDJSON_DIAG_OFF(switch-enum)</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;RAPIDJSON_DIAG_OFF(c++98-compat)</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#if __GNUC__ &gt;= 6</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;RAPIDJSON_DIAG_OFF(terminate) <span class="comment">// ignore throwing RAPIDJSON_ASSERT in RAPIDJSON_NOEXCEPT functions</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#endif // __GNUC__</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NOMEMBERITERATORCLASS</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span> <span class="comment">// std::iterator, std::random_access_iterator_tag</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// std::move</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment">// Forward declaration.</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html"> 67</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>;</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator, <span class="keyword">typename</span> StackAllocator&gt;</div>
-<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html"> 70</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>;</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment">//! Name-value pair in a JSON object value.</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> This class was internal to GenericValue. It used to be a inner struct.</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> But a compiler (IBM XL C/C++ for AIX) have reported to have problem with that so it moved as a namespace scope struct.</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> https://code.google.com/p/rapidjson/issues/detail?id=64</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt; </div>
-<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_member.html"> 79</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_member.html">GenericMember</a> { </div>
-<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_member.html#ae820eaa74b415a9073f3f3855f6c6607"> 80</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, Allocator&gt;</a> <a class="code" href="structrapidjson_1_1_generic_member.html#ae820eaa74b415a9073f3f3855f6c6607">name</a>; <span class="comment">//!&lt; name of member (must be a string)</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_member.html#a8ffff2076e62d988a070a136da6ffca6"> 81</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, Allocator&gt;</a> <a class="code" href="structrapidjson_1_1_generic_member.html#a8ffff2076e62d988a070a136da6ffca6">value</a>; <span class="comment">//!&lt; value of member.</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"></span>};</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"></span><span class="comment">// GenericMemberIterator</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NOMEMBERITERATORCLASS</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">//! (Constant) member iterator for a JSON object value</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> \tparam Const Is this a constant iterator?</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> \tparam Encoding Encoding of the value. (Even non-string values need to have the same encoding in a document)</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> \tparam Allocator Allocator type for allocating memory of object, array and string.</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> This class implements a Random Access Iterator for GenericMember elements</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> of a GenericValue, see ISO/IEC 14882:2003(E) C++ standard, 24.1 [lib.iterator.requirements].</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> \note This iterator implementation is mainly intended to avoid implicit</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> conversions from iterator values to \c NULL,</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> e.g. from GenericValue::FindMember.</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> \note Define \c RAPIDJSON_NOMEMBERITERATORCLASS to fall back to a</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> pointer-based implementation, if your platform doesn&#39;t provide</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> the C++ &lt;iterator&gt; header.</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> \see GenericMember, GenericValue::MemberIterator, GenericValue::ConstMemberIterator</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Const, <span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html"> 109</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a></div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; : <span class="keyword">public</span> std::iterator&lt;std::random_access_iterator_tag</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; , typename internal::MaybeAddConst&lt;Const,GenericMember&lt;Encoding,Allocator&gt; &gt;::Type&gt; {</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt;Encoding,Allocator&gt;;</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">bool</span>, <span class="keyword">typename</span>, <span class="keyword">typename</span>&gt; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>;</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_member.html">GenericMember&lt;Encoding,Allocator&gt;</a> <a class="code" href="structrapidjson_1_1_generic_member.html">PlainType</a>;</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">internal::MaybeAddConst&lt;Const,PlainType&gt;::Type</a> ValueType;</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">typedef</span> std::iterator&lt;std::random_access_iterator_tag,ValueType&gt; BaseType;</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="keyword">public</span>:<span class="comment"></span></div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> //! Iterator type itself</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653"> 122</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">Iterator</a>;<span class="comment"></span></div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> //! Constant iterator type</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc"> 124</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator&lt;true,Encoding,Allocator&gt;</a> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a>;<span class="comment"></span></div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> //! Non-constant iterator type</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#a1a91868fa388664bb301061e3e24badb"> 126</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator&lt;false,Encoding,Allocator&gt;</a> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#a1a91868fa388664bb301061e3e24badb">NonConstIterator</a>;</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> //! Pointer to (const) GenericMember</span></div>
-<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#a17955e32a06f667c672b270e6a4d2195"> 129</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> BaseType::pointer <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#a17955e32a06f667c672b270e6a4d2195">Pointer</a>;<span class="comment"></span></div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> //! Reference to (const) GenericMember</span></div>
-<div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#a915a1b6f0a0bbe6a1df69571a789e348"> 131</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> BaseType::reference <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#a915a1b6f0a0bbe6a1df69571a789e348">Reference</a>;<span class="comment"></span></div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> //! Signed integer type (e.g. \c ptrdiff_t)</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833"> 133</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> BaseType::difference_type <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">DifferenceType</a>;</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> //! Default constructor (singular value)</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"></span><span class="comment"> /*! Creates an iterator pointing to no element.</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"> \note All operations, except for comparisons, are undefined on such values.</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#ac920af483c9e31a6746c22acf0dffc50"> 139</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#ac920af483c9e31a6746c22acf0dffc50">GenericMemberIterator</a>() : ptr_() {}</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> //! Iterator conversions to more const</span></div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> \param it (Non-const) iterator to copy from</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"> Allows the creation of an iterator from another GenericMemberIterator</span></div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> that is &quot;less const&quot;. Especially, creating a non-constant iterator</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"> from a constant iterator are disabled:</span></div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"> \li const -&gt; non-const (not ok)</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment"> \li const -&gt; const (ok)</span></div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment"> \li non-const -&gt; const (ok)</span></div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment"> \li non-const -&gt; non-const (ok)</span></div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment"> \note If the \c Const template parameter is already \c false, this</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"> constructor effectively defines a regular copy-constructor.</span></div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"> Otherwise, the copy constructor is implicitly defined.</span></div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#aa30ffef74b3f4978b403024d81b484e4"> 157</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#aa30ffef74b3f4978b403024d81b484e4">GenericMemberIterator</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">NonConstIterator</a> &amp; it) : ptr_(it.ptr_) {}</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; Iterator&amp; operator=(<span class="keyword">const</span> NonConstIterator &amp; it) { ptr_ = it.ptr_; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"> //! @name stepping</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"></span> Iterator&amp; operator++(){ ++ptr_; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; Iterator&amp; operator--(){ --ptr_; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; Iterator operator++(<span class="keywordtype">int</span>){ Iterator old(*<span class="keyword">this</span>); ++ptr_; <span class="keywordflow">return</span> old; }</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; Iterator operator--(<span class="keywordtype">int</span>){ Iterator old(*<span class="keyword">this</span>); --ptr_; <span class="keywordflow">return</span> old; }<span class="comment"></span></div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"> //! @name increment/decrement</span></div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"></span> Iterator operator+(DifferenceType n)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Iterator(ptr_+n); }</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; Iterator operator-(DifferenceType n)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Iterator(ptr_-n); }</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; Iterator&amp; operator+=(DifferenceType n) { ptr_+=n; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; Iterator&amp; operator-=(DifferenceType n) { ptr_-=n; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }<span class="comment"></span></div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"> //! @name relations</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> operator==(ConstIterator that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_ == that.ptr_; }</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordtype">bool</span> operator!=(ConstIterator that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_ != that.ptr_; }</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordtype">bool</span> operator&lt;=(ConstIterator that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_ &lt;= that.ptr_; }</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordtype">bool</span> operator&gt;=(ConstIterator that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_ &gt;= that.ptr_; }</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordtype">bool</span> operator&lt; (ConstIterator that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_ &lt; that.ptr_; }</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordtype">bool</span> operator&gt; (ConstIterator that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_ &gt; that.ptr_; }<span class="comment"></span></div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment"> //! @name dereference</span></div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"></span> Reference operator*()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *ptr_; }</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a> operator-&gt;()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_; }</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; Reference operator[](DifferenceType n)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_[n]; }<span class="comment"></span></div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> //! Distance</span></div>
-<div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#a6d7cfaef258b0774da1b642907d81060"> 195</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">DifferenceType</a> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#a6d7cfaef258b0774da1b642907d81060">operator-</a>(<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstIterator</a> that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_-that.ptr_; }</div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keyword">private</span>:<span class="comment"></span></div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment"> //! Internal constructor from plain pointer</span></div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>(<a class="code" href="classrapidjson_1_1_generic_pointer.html">Pointer</a> p) : ptr_(p) {}</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; Pointer ptr_; <span class="comment">//!&lt; raw pointer</span></div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"></span>};</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="preprocessor">#else // RAPIDJSON_NOMEMBERITERATORCLASS</span></div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment">// class-based member iterator implementation disabled, use plain pointers</span></div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Const, <span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="keyword">struct </span>GenericMemberIterator;</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment">//! non-const GenericMemberIterator</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="keyword">struct </span>GenericMemberIterator&lt;false,Encoding,Allocator&gt; {<span class="comment"></span></div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="comment"> //! use plain pointer as iterator type</span></div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> GenericMember&lt;Encoding,Allocator&gt;* Iterator;</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;};<span class="comment"></span></div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment">//! const GenericMemberIterator</span></div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="keyword">struct </span>GenericMemberIterator&lt;true,Encoding,Allocator&gt; {<span class="comment"></span></div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment"> //! use plain const pointer as iterator type</span></div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">const</span> GenericMember&lt;Encoding,Allocator&gt;* Iterator;</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;};</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_NOMEMBERITERATORCLASS</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment"></span><span class="comment">// GenericStringRef</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment">//! Reference to a constant string (not taking a copy)</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment"> \tparam CharType character type of the string</span></div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment"> This helper class is used to automatically infer constant string</span></div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment"> references for string literals, especially from \c const \b (!)</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment"> character arrays.</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"> The main use is for creating JSON string values without copying the</span></div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment"> source string via an \ref Allocator. This requires that the referenced</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"> string pointers have a sufficient lifetime, which exceeds the lifetime</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment"> of the associated GenericValue.</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment"> \b Example</span></div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment"> \code</span></div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment"> Value v(&quot;foo&quot;); // ok, no need to copy &amp; calculate length</span></div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment"> const char foo[] = &quot;foo&quot;;</span></div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="comment"> v.SetString(foo); // ok</span></div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment"> const char* bar = foo;</span></div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="comment"> // Value x(bar); // not ok, can&#39;t rely on bar&#39;s lifetime</span></div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment"> Value x(StringRef(bar)); // lifetime explicitly guaranteed by user</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="comment"> Value y(StringRef(bar, 3)); // ok, explicitly pass length</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment"> \endcode</span></div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> \see StringRef, GenericValue::SetString</span></div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div>
-<div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html"> 257</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a> {</div>
-<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html#aa2a8eccae3d7eb14c30bc21afb7d6fba"> 258</a></span>&#160; <span class="keyword">typedef</span> CharType <a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa2a8eccae3d7eb14c30bc21afb7d6fba">Ch</a>; <span class="comment">//!&lt; character type of the string</span></div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment"> //! Create string reference from \c const character array</span></div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment"></span><span class="preprocessor">#ifndef __clang__ // -Wdocumentation</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment"> /*!</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> This constructor implicitly creates a constant string reference from</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"> a \c const character array. It has better performance than</span></div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"> \ref StringRef(const CharType*) by inferring the string \ref length</span></div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"> from the array length, and also supports strings containing null</span></div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"> characters.</span></div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment"> \tparam N length of the string, automatically inferred</span></div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment"> \param str Constant character array, lifetime assumed to be longer</span></div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment"> than the use of the string in e.g. a GenericValue</span></div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="comment"> \post \ref s == str</span></div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="comment"> \note Constant complexity.</span></div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="comment"> \note There is a hidden, private overload to disallow references to</span></div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"> non-const character arrays to be created via this constructor.</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment"> By this, e.g. function-scope arrays used to be filled via</span></div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment"> \c snprintf are excluded from consideration.</span></div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="comment"> In such cases, the referenced string should be \b copied to the</span></div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment"> GenericValue instead.</span></div>
-<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keyword">template</span>&lt;SizeType N&gt;</div>
-<div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html#acd4d5ebac2b610ce647356aa52998002"> 286</a></span>&#160; <a class="code" href="structrapidjson_1_1_generic_string_ref.html#acd4d5ebac2b610ce647356aa52998002">GenericStringRef</a>(<span class="keyword">const</span> CharType (&amp;str)[N]) RAPIDJSON_NOEXCEPT</div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; : s(str), length(N-1) {}</div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="comment"> //! Explicitly create string reference from \c const character pointer</span></div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="comment"></span><span class="preprocessor">#ifndef __clang__ // -Wdocumentation</span></div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="comment"> /*!</span></div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="comment"> This constructor can be used to \b explicitly create a reference to</span></div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="comment"> a constant string pointer.</span></div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="comment"> \see StringRef(const CharType*)</span></div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="comment"> \param str Constant character pointer, lifetime assumed to be longer</span></div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="comment"> than the use of the string in e.g. a GenericValue</span></div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment"> \post \ref s == str</span></div>
-<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="comment"> \note There is a hidden, private overload to disallow references to</span></div>
-<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="comment"> non-const character arrays to be created via this constructor.</span></div>
-<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="comment"> By this, e.g. function-scope arrays used to be filled via</span></div>
-<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment"> \c snprintf are excluded from consideration.</span></div>
-<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="comment"> In such cases, the referenced string should be \b copied to the</span></div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="comment"> GenericValue instead.</span></div>
-<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html#a29cf407c6aa2313f13dff78d6ce02687"> 310</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html#a29cf407c6aa2313f13dff78d6ce02687">GenericStringRef</a>(<span class="keyword">const</span> CharType* str)</div>
-<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; : s(str), length(((<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(str != 0)), internal::StrLen(str))) {}</div>
-<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="comment"> //! Create constant string reference from pointer and length</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="comment"></span><span class="preprocessor">#ifndef __clang__ // -Wdocumentation</span></div>
-<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="comment"> /*! \param str constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue</span></div>
-<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="comment"> \param len length of the string, excluding the trailing NULL terminator</span></div>
-<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="comment"> \post \ref s == str &amp;&amp; \ref length == len</span></div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="comment"> \note Constant complexity.</span></div>
-<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html#ad9eb120a58cee500ff3bd5706779c4e4"> 322</a></span>&#160; <a class="code" href="structrapidjson_1_1_generic_string_ref.html#ad9eb120a58cee500ff3bd5706779c4e4">GenericStringRef</a>(<span class="keyword">const</span> CharType* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len)</div>
-<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; : s(<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(str) ? str : emptyString), length(len) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(str != 0 || len == 0u); }</div>
-<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div>
-<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>(<span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>&amp; rhs) : s(rhs.s), length(rhs.length) {}</div>
-<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment"> //! implicit conversion to plain CharType pointer</span></div>
-<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html#af535787e3593802222f7b3f3096beff0"> 328</a></span>&#160;<span class="comment"></span> <span class="keyword">operator</span> <span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa2a8eccae3d7eb14c30bc21afb7d6fba">Ch</a> *() <span class="keyword">const</span> { <span class="keywordflow">return</span> s; }</div>
-<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div>
-<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html#a001276ee57cbcbd3c14449045c71e994"> 330</a></span>&#160; <span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa2a8eccae3d7eb14c30bc21afb7d6fba">Ch</a>* <span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html#a001276ee57cbcbd3c14449045c71e994">s</a>; <span class="comment">//!&lt; plain CharType pointer</span></div>
-<div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111"> 331</a></span>&#160;<span class="comment"></span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> <a class="code" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">length</a>; <span class="comment">//!&lt; length of the string (excluding the trailing NULL terminator)</span></div>
-<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="keyword">private</span>:<span class="comment"></span></div>
-<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment"> /// Empty string - used when passing in a NULL pointer</span></div>
-<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa2a8eccae3d7eb14c30bc21afb7d6fba">Ch</a> emptyString[];</div>
-<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="comment"> //! Disallow construction from non-const array</span></div>
-<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="comment"></span> <span class="keyword">template</span>&lt;SizeType N&gt;</div>
-<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>(CharType (&amp;str)[N]) <span class="comment">/* = delete */</span>;<span class="comment"></span></div>
-<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment"> //! Copy assignment operator not permitted - immutable type</span></div>
-<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment"></span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>&amp; rhs) <span class="comment">/* = delete */</span>;</div>
-<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;};</div>
-<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div>
-<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div>
-<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="keyword">const</span> CharType <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;CharType&gt;::emptyString</a>[] = { CharType() };</div>
-<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="comment">//! Mark a character pointer as constant string</span></div>
-<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="comment"></span><span class="comment">/*! Mark a plain character pointer as a &quot;string literal&quot;. This function</span></div>
-<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="comment"> can be used to avoid copying a character string to be referenced as a</span></div>
-<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="comment"> value in a JSON GenericValue object, if the string&#39;s lifetime is known</span></div>
-<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="comment"> to be valid long enough.</span></div>
-<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="comment"> \tparam CharType Character type of the string</span></div>
-<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="comment"> \param str Constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue</span></div>
-<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="comment"> \return GenericStringRef string reference object</span></div>
-<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="comment"> \relatesalso GenericStringRef</span></div>
-<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="comment"> \see GenericValue::GenericValue(StringRefType), GenericValue::operator=(StringRefType), GenericValue::SetString(StringRefType), GenericValue::PushBack(StringRefType, Allocator&amp;), GenericValue::AddMember</span></div>
-<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div>
-<div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#aa6b9fd9f6aa49405a574c362ba9af6b5"> 360</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;CharType&gt;</a> <a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(<span class="keyword">const</span> CharType* str) {</div>
-<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;CharType&gt;</a>(str);</div>
-<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;}</div>
-<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="comment">//! Mark a character pointer as constant string</span></div>
-<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment"></span><span class="comment">/*! Mark a plain character pointer as a &quot;string literal&quot;. This function</span></div>
-<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="comment"> can be used to avoid copying a character string to be referenced as a</span></div>
-<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="comment"> value in a JSON GenericValue object, if the string&#39;s lifetime is known</span></div>
-<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="comment"> to be valid long enough.</span></div>
-<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="comment"> This version has better performance with supplied length, and also</span></div>
-<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="comment"> supports string containing null characters.</span></div>
-<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="comment"> \tparam CharType character type of the string</span></div>
-<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="comment"> \param str Constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue</span></div>
-<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="comment"> \param length The length of source string.</span></div>
-<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="comment"> \return GenericStringRef string reference object</span></div>
-<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="comment"> \relatesalso GenericStringRef</span></div>
-<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div>
-<div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a578c51ab574a50a9c760b9da7c7562f2"> 380</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;CharType&gt;</a> <a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(<span class="keyword">const</span> CharType* str, <span class="keywordtype">size_t</span> length) {</div>
-<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;CharType&gt;</a>(str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(length));</div>
-<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;}</div>
-<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div>
-<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="comment">//! Mark a string object as constant string</span></div>
-<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="comment"></span><span class="comment">/*! Mark a string object (e.g. \c std::string) as a &quot;string literal&quot;.</span></div>
-<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="comment"> This function can be used to avoid copying a string to be referenced as a</span></div>
-<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="comment"> value in a JSON GenericValue object, if the string&#39;s lifetime is known</span></div>
-<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="comment"> to be valid long enough.</span></div>
-<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="comment"> \tparam CharType character type of the string</span></div>
-<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="comment"> \param str Constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue</span></div>
-<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="comment"> \return GenericStringRef string reference object</span></div>
-<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment"> \relatesalso GenericStringRef</span></div>
-<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="comment"> \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING.</span></div>
-<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div>
-<div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f"> 398</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;CharType&gt;</a> <a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(<span class="keyword">const</span> std::basic_string&lt;CharType&gt;&amp; str) {</div>
-<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;CharType&gt;</a>(str.data(), <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(str.size()));</div>
-<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;}</div>
-<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="comment"></span><span class="comment">// GenericValue type traits</span></div>
-<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;</div>
-<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> Encoding = <span class="keywordtype">void</span>, <span class="keyword">typename</span> Allocator = <span class="keywordtype">void</span>&gt;</div>
-<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="keyword">struct </span>IsGenericValueImpl : FalseType {};</div>
-<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div>
-<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="comment">// select candidates according to nested encoding and allocator types</span></div>
-<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IsGenericValueImpl&lt;T, typename Void&lt;typename T::EncodingType&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a>, typename Void&lt;typename T::AllocatorType&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a>&gt;</div>
-<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; : IsBaseOf&lt;GenericValue&lt;typename T::EncodingType, typename T::AllocatorType&gt;, T&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div>
-<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;</div>
-<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="comment">// helper to match arbitrary GenericValue instantiations, including derived classes</span></div>
-<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IsGenericValue : IsGenericValueImpl&lt;T&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div>
-<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div>
-<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="comment"></span><span class="comment">// TypeHelper</span></div>
-<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;</div>
-<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div>
-<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueType, <span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="keyword">struct </span>TypeHelper {};</div>
-<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;</div>
-<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div>
-<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, bool&gt; {</div>
-<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsBool(); }</div>
-<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetBool(); }</div>
-<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">bool</span> data) { <span class="keywordflow">return</span> v.SetBool(data); }</div>
-<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">bool</span> data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v.SetBool(data); }</div>
-<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;};</div>
-<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div>
-<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div>
-<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, int&gt; {</div>
-<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsInt(); }</div>
-<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetInt(); }</div>
-<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">int</span> data) { <span class="keywordflow">return</span> v.SetInt(data); }</div>
-<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">int</span> data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v.SetInt(data); }</div>
-<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;};</div>
-<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div>
-<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div>
-<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, unsigned&gt; {</div>
-<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsUint(); }</div>
-<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keyword">static</span> <span class="keywordtype">unsigned</span> Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetUint(); }</div>
-<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">unsigned</span> data) { <span class="keywordflow">return</span> v.SetUint(data); }</div>
-<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">unsigned</span> data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v.SetUint(data); }</div>
-<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;};</div>
-<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div>
-<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div>
-<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, int64_t&gt; {</div>
-<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsInt64(); }</div>
-<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keyword">static</span> int64_t Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetInt64(); }</div>
-<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, int64_t data) { <span class="keywordflow">return</span> v.SetInt64(data); }</div>
-<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, int64_t data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v.SetInt64(data); }</div>
-<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;};</div>
-<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;</div>
-<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div>
-<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, uint64_t&gt; {</div>
-<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsUint64(); }</div>
-<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keyword">static</span> uint64_t Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetUint64(); }</div>
-<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, uint64_t data) { <span class="keywordflow">return</span> v.SetUint64(data); }</div>
-<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, uint64_t data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v.SetUint64(data); }</div>
-<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;};</div>
-<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div>
-<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div>
-<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, double&gt; {</div>
-<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsDouble(); }</div>
-<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetDouble(); }</div>
-<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">double</span> data) { <span class="keywordflow">return</span> v.SetDouble(data); }</div>
-<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">double</span> data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v.SetDouble(data); }</div>
-<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;};</div>
-<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div>
-<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div>
-<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, float&gt; {</div>
-<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsFloat(); }</div>
-<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keyword">static</span> <span class="keywordtype">float</span> Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetFloat(); }</div>
-<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">float</span> data) { <span class="keywordflow">return</span> v.SetFloat(data); }</div>
-<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">float</span> data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v.SetFloat(data); }</div>
-<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;};</div>
-<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div>
-<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div>
-<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, const typename ValueType::Ch*&gt; {</div>
-<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keyword">typename</span> ValueType::Ch* StringType;</div>
-<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsString(); }</div>
-<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keyword">static</span> StringType Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetString(); }</div>
-<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keyword">const</span> StringType data) { <span class="keywordflow">return</span> v.SetString(<span class="keyword">typename</span> ValueType::StringRefType(data)); }</div>
-<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keyword">const</span> StringType data, <span class="keyword">typename</span> ValueType::AllocatorType&amp; a) { <span class="keywordflow">return</span> v.SetString(data, a); }</div>
-<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;};</div>
-<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;</div>
-<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div>
-<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, std::basic_string&lt;typename ValueType::Ch&gt; &gt; {</div>
-<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keyword">typedef</span> std::basic_string&lt;typename ValueType::Ch&gt; StringType;</div>
-<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsString(); }</div>
-<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keyword">static</span> StringType Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> StringType(v.GetString(), v.GetStringLength()); }</div>
-<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keyword">const</span> StringType&amp; data, <span class="keyword">typename</span> ValueType::AllocatorType&amp; a) { <span class="keywordflow">return</span> v.SetString(data, a); }</div>
-<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;};</div>
-<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div>
-<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div>
-<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, typename ValueType::Array&gt; {</div>
-<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::Array ArrayType;</div>
-<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsArray(); }</div>
-<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keyword">static</span> ArrayType Get(ValueType&amp; v) { <span class="keywordflow">return</span> v.GetArray(); }</div>
-<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, ArrayType data) { <span class="keywordflow">return</span> v = data; }</div>
-<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, ArrayType data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v = data; }</div>
-<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;};</div>
-<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;</div>
-<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div>
-<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, typename ValueType::ConstArray&gt; {</div>
-<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::ConstArray ArrayType;</div>
-<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsArray(); }</div>
-<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keyword">static</span> ArrayType Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetArray(); }</div>
-<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;};</div>
-<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;</div>
-<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div>
-<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, typename ValueType::Object&gt; {</div>
-<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::Object ObjectType;</div>
-<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsObject(); }</div>
-<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keyword">static</span> ObjectType Get(ValueType&amp; v) { <span class="keywordflow">return</span> v.GetObject(); }</div>
-<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, ObjectType data) { <span class="keywordflow">return</span> v = data; }</div>
-<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, ObjectType data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v = data; }</div>
-<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;};</div>
-<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div>
-<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div>
-<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, typename ValueType::ConstObject&gt; {</div>
-<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::ConstObject ObjectType;</div>
-<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsObject(); }</div>
-<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keyword">static</span> ObjectType Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetObject(); }</div>
-<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;};</div>
-<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;</div>
-<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;</div>
-<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="comment">// Forward declarations</span></div>
-<div class="line"><a name="l00537"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_array.html"> 537</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span>, <span class="keyword">typename</span>&gt; <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>;</div>
-<div class="line"><a name="l00538"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_object.html"> 538</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span>, <span class="keyword">typename</span>&gt; <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a>;</div>
-<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="comment"></span><span class="comment">// GenericValue</span></div>
-<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="comment">//! Represents a JSON value. Use Value for UTF8 encoding and default allocator.</span></div>
-<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="comment"> A JSON value can be one of 7 types. This class is a variant type supporting</span></div>
-<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="comment"> these types.</span></div>
-<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="comment"> Use the Value if UTF8 and default allocator</span></div>
-<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="comment"> \tparam Encoding Encoding of the value. (Even non-string values need to have the same encoding in a document)</span></div>
-<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<span class="comment"> \tparam Allocator Allocator type for allocating memory of object, array and string.</span></div>
-<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator = MemoryPoolAllocator&lt;&gt; &gt; </div>
-<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> {</div>
-<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;<span class="keyword">public</span>:<span class="comment"></span></div>
-<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="comment"> //! Name-value pair in an object.</span></div>
-<div class="line"><a name="l00557"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a0220ddebe2f023fa75b643a50e90e559"> 557</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_member.html">GenericMember&lt;Encoding, Allocator&gt;</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a0220ddebe2f023fa75b643a50e90e559">Member</a>;</div>
-<div class="line"><a name="l00558"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a05906384808645a2e798d29a9b2d441d"> 558</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_encoding.html">Encoding</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a05906384808645a2e798d29a9b2d441d">EncodingType</a>; <span class="comment">//!&lt; Encoding type from template parameter.</span></div>
-<div class="line"><a name="l00559"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a5d47340c96346c5028fee4c9068d783d"> 559</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a5d47340c96346c5028fee4c9068d783d">AllocatorType</a>; <span class="comment">//!&lt; Allocator type from template parameter.</span></div>
-<div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4"> 560</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>; <span class="comment">//!&lt; Character type derived from Encoding.</span></div>
-<div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379"> 561</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;Ch&gt;</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a>; <span class="comment">//!&lt; Reference to a constant string</span></div>
-<div class="line"><a name="l00562"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b"> 562</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator&lt;false,Encoding,Allocator&gt;::Iterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a>; <span class="comment">//!&lt; Member iterator for iterating in object.</span></div>
-<div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f"> 563</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator&lt;true,Encoding,Allocator&gt;::Iterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>; <span class="comment">//!&lt; Constant member iterator for iterating in object.</span></div>
-<div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a06ce0e14ec83b53c83e1b1699b53a25e"> 564</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* <a class="code" href="classrapidjson_1_1_generic_value.html#a06ce0e14ec83b53c83e1b1699b53a25e">ValueIterator</a>; <span class="comment">//!&lt; Value iterator for iterating in array.</span></div>
-<div class="line"><a name="l00565"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f"> 565</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* <a class="code" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a>; <span class="comment">//!&lt; Constant value iterator for iterating in array.</span></div>
-<div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202"> 566</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, Allocator&gt;</a> <a class="code" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a>; <span class="comment">//!&lt; Value type of itself.</span></div>
-<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray&lt;false, ValueType&gt;</a> <a class="code" href="classrapidjson_1_1_generic_array.html">Array</a>;</div>
-<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray&lt;true, ValueType&gt;</a> <a class="code" href="classrapidjson_1_1_generic_array.html">ConstArray</a>;</div>
-<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject&lt;false, ValueType&gt;</a> <a class="code" href="classrapidjson_1_1_generic_object.html">Object</a>;</div>
-<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject&lt;true, ValueType&gt;</a> <a class="code" href="classrapidjson_1_1_generic_object.html">ConstObject</a>;</div>
-<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="comment"> //!@name Constructors and destructor.</span></div>
-<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;<span class="comment"> //! Default constructor creates a null value.</span></div>
-<div class="line"><a name="l00576"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad1f8199e65662e0d52a13a1577d4e4a5"> 576</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html#ad1f8199e65662e0d52a13a1577d4e4a5">GenericValue</a>() RAPIDJSON_NOEXCEPT : data_() { data_.f.flags = kNullFlag; }</div>
-<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;</div>
-<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;<span class="comment"> //! Move constructor in C++11</span></div>
-<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;&amp; rhs) RAPIDJSON_NOEXCEPT : data_(rhs.data_) {</div>
-<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; rhs.data_.f.flags = kNullFlag; <span class="comment">// give up contents</span></div>
-<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; }</div>
-<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;</div>
-<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;<span class="keyword">private</span>:<span class="comment"></span></div>
-<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="comment"> //! Copy constructor is not permitted.</span></div>
-<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="comment"></span> GenericValue(<span class="keyword">const</span> GenericValue&amp; rhs);</div>
-<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;</div>
-<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="comment"> //! Moving from a GenericDocument is not permitted.</span></div>
-<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> StackAllocator&gt;</div>
-<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; GenericValue(GenericDocument&lt;Encoding,Allocator,StackAllocator&gt;&amp;&amp; rhs);</div>
-<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="comment"> //! Move assignment from a GenericDocument is not permitted.</span></div>
-<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> StackAllocator&gt;</div>
-<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; GenericValue&amp; operator=(GenericDocument&lt;Encoding,Allocator,StackAllocator&gt;&amp;&amp; rhs);</div>
-<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div>
-<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="comment"> //! Constructor with JSON value type.</span></div>
-<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="comment"></span><span class="comment"> /*! This creates a Value of specified type with default content.</span></div>
-<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="comment"> \param type Type of the value.</span></div>
-<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="comment"> \note Default content for number is zero.</span></div>
-<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a646b6d4d3d98799a0926d96ffa127a58"> 606</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a646b6d4d3d98799a0926d96ffa127a58">GenericValue</a>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type) RAPIDJSON_NOEXCEPT : data_() {</div>
-<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint16_t defaultFlags[7] = {</div>
-<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; kNullFlag, kFalseFlag, kTrueFlag, kObjectFlag, kArrayFlag, kShortStringFlag,</div>
-<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; kNumberAnyFlag</div>
-<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; };</div>
-<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(type &lt;= <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>);</div>
-<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; data_.f.flags = defaultFlags[type];</div>
-<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;</div>
-<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="comment">// Use ShortString to store empty string.</span></div>
-<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">if</span> (type == <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>)</div>
-<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; data_.ss.SetLength(0);</div>
-<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; }</div>
-<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="comment"> //! Explicit copy constructor (with allocator)</span></div>
-<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;<span class="comment"></span><span class="comment"> /*! Creates a copy of a Value by using the given Allocator</span></div>
-<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;<span class="comment"> \tparam SourceAllocator allocator of \c rhs</span></div>
-<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;<span class="comment"> \param rhs Value to copy from (read-only)</span></div>
-<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;<span class="comment"> \param allocator Allocator for allocating copied elements and buffers. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="comment"> \param copyConstStrings Force copying of constant strings (e.g. referencing an in-situ buffer)</span></div>
-<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;<span class="comment"> \see CopyFrom()</span></div>
-<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div>
-<div class="line"><a name="l00628"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#adca019775f68f012643781cd2c2515ac"> 628</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html#adca019775f68f012643781cd2c2515ac">GenericValue</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding,SourceAllocator&gt;</a>&amp; rhs, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator, <span class="keywordtype">bool</span> copyConstStrings = <span class="keyword">false</span>) {</div>
-<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">switch</span> (rhs.GetType()) {</div>
-<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>: {</div>
-<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count = rhs.data_.o.size;</div>
-<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>* lm = <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>*<span class="keyword">&gt;</span>(allocator.Malloc(count * <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>)));</div>
-<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="structrapidjson_1_1_generic_member.html">GenericValue&lt;Encoding,SourceAllocator&gt;::Member</a>* rm = rhs.GetMembersPointer();</div>
-<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; count; i++) {</div>
-<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keyword">new</span> (&amp;lm[i].<a class="code" href="structrapidjson_1_1_generic_member.html#ae820eaa74b415a9073f3f3855f6c6607">name</a>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(rm[i].name, allocator, copyConstStrings);</div>
-<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keyword">new</span> (&amp;lm[i].<a class="code" href="structrapidjson_1_1_generic_member.html#a8ffff2076e62d988a070a136da6ffca6">value</a>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(rm[i].value, allocator, copyConstStrings);</div>
-<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; }</div>
-<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; data_.f.flags = kObjectFlag;</div>
-<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; data_.o.size = data_.o.capacity = count;</div>
-<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; SetMembersPointer(lm);</div>
-<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div>
-<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>: {</div>
-<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count = rhs.data_.a.size;</div>
-<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* le = <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>*<span class="keyword">&gt;</span>(allocator.Malloc(count * <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>)));</div>
-<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding,SourceAllocator&gt;</a>* re = rhs.GetElementsPointer();</div>
-<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; count; i++)</div>
-<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keyword">new</span> (&amp;le[i]) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(re[i], allocator, copyConstStrings);</div>
-<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; data_.f.flags = kArrayFlag;</div>
-<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; data_.a.size = data_.a.capacity = count;</div>
-<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; SetElementsPointer(le);</div>
-<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; }</div>
-<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>:</div>
-<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">if</span> (rhs.data_.f.flags == kConstStringFlag &amp;&amp; !copyConstStrings) {</div>
-<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; data_.f.flags = rhs.data_.f.flags;</div>
-<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; data_ = *<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>Data*<span class="keyword">&gt;</span>(&amp;rhs.data_);</div>
-<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div>
-<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; SetStringRaw(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(rhs.GetString(), rhs.<a class="code" href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8">GetStringLength</a>()), allocator);</div>
-<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; data_.f.flags = rhs.data_.f.flags;</div>
-<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; data_ = *<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>Data*<span class="keyword">&gt;</span>(&amp;rhs.data_);</div>
-<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div>
-<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; }</div>
-<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="comment"> //! Constructor for boolean value.</span></div>
-<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="comment"></span><span class="comment"> /*! \param b Boolean value</span></div>
-<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;<span class="comment"> \note This constructor is limited to \em real boolean values and rejects</span></div>
-<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;<span class="comment"> implicitly converted types like arbitrary pointers. Use an explicit cast</span></div>
-<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;<span class="comment"> to \c bool, if you want to construct a boolean JSON value in such cases.</span></div>
-<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_DOXYGEN_RUNNING // hide SFINAE from Doxygen</span></div>
-<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(T b, RAPIDJSON_ENABLEIF((internal::IsSame&lt;bool, T&gt;))) RAPIDJSON_NOEXCEPT <span class="comment">// See #472</span></div>
-<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00679"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ab933ad7ff8c9d08f73cebaecb700dbe9"> 679</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#ab933ad7ff8c9d08f73cebaecb700dbe9">GenericValue</a>(<span class="keywordtype">bool</span> b) RAPIDJSON_NOEXCEPT</div>
-<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; : data_() {</div>
-<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="comment">// safe-guard against failing SFINAE</span></div>
-<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>((<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">internal::IsSame&lt;bool,T&gt;::Value</a>));</div>
-<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; data_.f.flags = b ? kTrueFlag : kFalseFlag;</div>
-<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div>
-<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="comment"> //! Constructor for int value.</span></div>
-<div class="line"><a name="l00688"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#abba0c9ccfd90726f916c36013a2e9e19"> 688</a></span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#abba0c9ccfd90726f916c36013a2e9e19">GenericValue</a>(<span class="keywordtype">int</span> i) RAPIDJSON_NOEXCEPT : data_() {</div>
-<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; data_.n.i64 = i;</div>
-<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; data_.f.flags = (i &gt;= 0) ? (kNumberIntFlag | kUintFlag | kUint64Flag) : kNumberIntFlag;</div>
-<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; }</div>
-<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;<span class="comment"> //! Constructor for unsigned value.</span></div>
-<div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a4a8060a42b7953a2981ad892180ca5a6"> 694</a></span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a4a8060a42b7953a2981ad892180ca5a6">GenericValue</a>(<span class="keywordtype">unsigned</span> u) RAPIDJSON_NOEXCEPT : data_() {</div>
-<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; data_.n.u64 = u; </div>
-<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; data_.f.flags = (u &amp; 0x80000000) ? kNumberUintFlag : (kNumberUintFlag | kIntFlag | kInt64Flag);</div>
-<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div>
-<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="comment"> //! Constructor for int64_t value.</span></div>
-<div class="line"><a name="l00700"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#acd4ae9a8dba4498d1d7cce6667529bb8"> 700</a></span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#acd4ae9a8dba4498d1d7cce6667529bb8">GenericValue</a>(int64_t i64) RAPIDJSON_NOEXCEPT : data_() {</div>
-<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; data_.n.i64 = i64;</div>
-<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; data_.f.flags = kNumberInt64Flag;</div>
-<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">if</span> (i64 &gt;= 0) {</div>
-<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; data_.f.flags |= kNumberUint64Flag;</div>
-<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">if</span> (!(static_cast&lt;uint64_t&gt;(i64) &amp; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xFFFFFFFF, 0x00000000)))</div>
-<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; data_.f.flags |= kUintFlag;</div>
-<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">if</span> (!(static_cast&lt;uint64_t&gt;(i64) &amp; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xFFFFFFFF, 0x80000000)))</div>
-<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; data_.f.flags |= kIntFlag;</div>
-<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; }</div>
-<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (i64 &gt;= static_cast&lt;int64_t&gt;(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xFFFFFFFF, 0x80000000)))</div>
-<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; data_.f.flags |= kIntFlag;</div>
-<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; }</div>
-<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;<span class="comment"> //! Constructor for uint64_t value.</span></div>
-<div class="line"><a name="l00715"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a1f125e735577aae64c0306345de45563"> 715</a></span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a1f125e735577aae64c0306345de45563">GenericValue</a>(uint64_t u64) RAPIDJSON_NOEXCEPT : data_() {</div>
-<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; data_.n.u64 = u64;</div>
-<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; data_.f.flags = kNumberUint64Flag;</div>
-<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">if</span> (!(u64 &amp; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x80000000, 0x00000000)))</div>
-<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; data_.f.flags |= kInt64Flag;</div>
-<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">if</span> (!(u64 &amp; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xFFFFFFFF, 0x00000000)))</div>
-<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; data_.f.flags |= kUintFlag;</div>
-<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">if</span> (!(u64 &amp; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xFFFFFFFF, 0x80000000)))</div>
-<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; data_.f.flags |= kIntFlag;</div>
-<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div>
-<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;<span class="comment"> //! Constructor for double value.</span></div>
-<div class="line"><a name="l00727"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a71b9e2ec1f7bf9e2f034126ca7b4945a"> 727</a></span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a71b9e2ec1f7bf9e2f034126ca7b4945a">GenericValue</a>(<span class="keywordtype">double</span> d) RAPIDJSON_NOEXCEPT : data_() { data_.n.d = d; data_.f.flags = kNumberDoubleFlag; }</div>
-<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;<span class="comment"> //! Constructor for float value.</span></div>
-<div class="line"><a name="l00730"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#afe94e5e86a5b1a3fb605a9f8422f048b"> 730</a></span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#afe94e5e86a5b1a3fb605a9f8422f048b">GenericValue</a>(<span class="keywordtype">float</span> f) RAPIDJSON_NOEXCEPT : data_() { data_.n.d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(f); data_.f.flags = kNumberDoubleFlag; }</div>
-<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;<span class="comment"> //! Constructor for constant string (i.e. do not make a copy of string)</span></div>
-<div class="line"><a name="l00733"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a51e93a4fb57f77a39767acb076bf43c1"> 733</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html#a51e93a4fb57f77a39767acb076bf43c1">GenericValue</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>* s, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length) RAPIDJSON_NOEXCEPT : data_() { SetStringRaw(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s, length)); }</div>
-<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;<span class="comment"> //! Constructor for constant string (i.e. do not make a copy of string)</span></div>
-<div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a65bfc3073fa80ee5eba8e985abe2f941"> 736</a></span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a65bfc3073fa80ee5eba8e985abe2f941">GenericValue</a>(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> s) RAPIDJSON_NOEXCEPT : data_() { SetStringRaw(s); }</div>
-<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;<span class="comment"> //! Constructor for copy-string (i.e. do make a copy of string)</span></div>
-<div class="line"><a name="l00739"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad9553bb9ccbfd19547c473a95405a8b2"> 739</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html#ad9553bb9ccbfd19547c473a95405a8b2">GenericValue</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>* s, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) : data_() { SetStringRaw(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s, length), allocator); }</div>
-<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;<span class="comment"> //! Constructor for copy-string (i.e. do make a copy of string)</span></div>
-<div class="line"><a name="l00742"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a83ba61e8a5170c2e172fd60ebc11016f"> 742</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html#a83ba61e8a5170c2e172fd60ebc11016f">GenericValue</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>*s, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) : data_() { SetStringRaw(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s), allocator); }</div>
-<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;</div>
-<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;<span class="comment"> //! Constructor for copy-string from a string object (i.e. do make a copy of string)</span></div>
-<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;<span class="comment"></span><span class="comment"> /*! \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING.</span></div>
-<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00748"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a852788b35257762cd8d6c4bf5c5d77bc"> 748</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html#a852788b35257762cd8d6c4bf5c5d77bc">GenericValue</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; s, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) : data_() { SetStringRaw(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s), allocator); }</div>
-<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;<span class="comment"> //! Constructor for Array.</span></div>
-<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;<span class="comment"> \param a An array obtained by \c GetArray().</span></div>
-<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;<span class="comment"> \note \c Array is always pass-by-value.</span></div>
-<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;<span class="comment"> \note the source array is moved into this value and the sourec array becomes empty.</span></div>
-<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00757"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a77b0f41557b3c34b57a180698312c4a8"> 757</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html#a77b0f41557b3c34b57a180698312c4a8">GenericValue</a>(<a class="code" href="classrapidjson_1_1_generic_array.html">Array</a> a) RAPIDJSON_NOEXCEPT : data_(a.value_.data_) {</div>
-<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; a.value_.data_ = Data();</div>
-<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; a.value_.data_.f.flags = kArrayFlag;</div>
-<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div>
-<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;<span class="comment"> //! Constructor for Object.</span></div>
-<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;<span class="comment"> \param o An object obtained by \c GetObject().</span></div>
-<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;<span class="comment"> \note \c Object is always pass-by-value.</span></div>
-<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;<span class="comment"> \note the source object is moved into this value and the sourec object becomes empty.</span></div>
-<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00768"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a893da1069660536fd3943a0149206a6e"> 768</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html#a893da1069660536fd3943a0149206a6e">GenericValue</a>(<a class="code" href="classrapidjson_1_1_generic_object.html">Object</a> o) RAPIDJSON_NOEXCEPT : data_(o.value_.data_) {</div>
-<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; o.value_.data_ = Data();</div>
-<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; o.value_.data_.f.flags = kObjectFlag;</div>
-<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; }</div>
-<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;<span class="comment"> //! Destructor.</span></div>
-<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;<span class="comment"></span><span class="comment"> /*! Need to destruct elements of array, members of object, or copy-string.</span></div>
-<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00776"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a433a64b466c80cadf7d1acaa6f065437"> 776</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html#a433a64b466c80cadf7d1acaa6f065437">~GenericValue</a>() {</div>
-<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">if</span> (Allocator::kNeedFree) { <span class="comment">// Shortcut by Allocator&#39;s trait</span></div>
-<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">switch</span>(data_.f.flags) {</div>
-<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">case</span> kArrayFlag:</div>
-<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; {</div>
-<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* e = GetElementsPointer();</div>
-<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* v = e; v != e + data_.a.size; ++v)</div>
-<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; v-&gt;~GenericValue();</div>
-<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; Allocator::Free(e);</div>
-<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; }</div>
-<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;</div>
-<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">case</span> kObjectFlag:</div>
-<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> m = MemberBegin(); m != MemberEnd(); ++m)</div>
-<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; m-&gt;~Member();</div>
-<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; Allocator::Free(GetMembersPointer());</div>
-<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;</div>
-<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">case</span> kCopyStringFlag:</div>
-<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; Allocator::Free(const_cast&lt;Ch*&gt;(GetStringPointer()));</div>
-<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;</div>
-<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">break</span>; <span class="comment">// Do nothing for other types.</span></div>
-<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div>
-<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; }</div>
-<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; }</div>
-<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;<span class="comment"> //!@name Assignment operators</span></div>
-<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160;<span class="comment"> //! Assignment with move semantics.</span></div>
-<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;<span class="comment"></span><span class="comment"> /*! \param rhs Source of the assignment. It will become a null value after assignment.</span></div>
-<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00812"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ae8bcedd951f50b69786aaaa1828e9fac"> 812</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#ae8bcedd951f50b69786aaaa1828e9fac">operator=</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; rhs) RAPIDJSON_NOEXCEPT {</div>
-<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">this</span> != &amp;rhs);</div>
-<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>();</div>
-<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; RawAssign(rhs);</div>
-<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; }</div>
-<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;</div>
-<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;<span class="comment"> //! Move assignment in C++11</span></div>
-<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; operator=(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;&amp; rhs) RAPIDJSON_NOEXCEPT {</div>
-<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span> = rhs.<a class="code" href="classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b">Move</a>();</div>
-<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; }</div>
-<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;<span class="comment"> //! Assignment of constant string reference (no copy)</span></div>
-<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;<span class="comment"></span><span class="comment"> /*! \param str Constant string reference to be assigned</span></div>
-<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;<span class="comment"> \note This overload is needed to avoid clashes with the generic primitive type assignment overload below.</span></div>
-<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;<span class="comment"> \see GenericStringRef, operator=(T)</span></div>
-<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00831"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aecc9d0a6aafe31f4fdf9f6e75e5f089c"> 831</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#aecc9d0a6aafe31f4fdf9f6e75e5f089c">operator=</a>(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> str) RAPIDJSON_NOEXCEPT {</div>
-<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> s(str);</div>
-<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span> = s;</div>
-<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; }</div>
-<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160;<span class="comment"> //! Assignment with primitive types.</span></div>
-<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t</span></div>
-<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;<span class="comment"> \param value The value to be assigned.</span></div>
-<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160;<span class="comment"> \note The source type \c T explicitly disallows all pointer types,</span></div>
-<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;<span class="comment"> especially (\c const) \ref Ch*. This helps avoiding implicitly</span></div>
-<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;<span class="comment"> referencing character strings with insufficient lifetime, use</span></div>
-<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;<span class="comment"> \ref SetString(const Ch*, Allocator&amp;) (for copying) or</span></div>
-<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160;<span class="comment"> \ref StringRef() (to explicitly mark the pointer as constant) instead.</span></div>
-<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;<span class="comment"> All other pointer types would implicitly convert to \c bool,</span></div>
-<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;<span class="comment"> use \ref SetBool() instead.</span></div>
-<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::IsPointer&lt;T&gt;), (<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;))</div>
-<div class="line"><a name="l00850"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ab7446da62fdc61d6d987d508cdb6ac13"> 850</a></span>&#160; operator=(T value) {</div>
-<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> v(value);</div>
-<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span> = v;</div>
-<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div>
-<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;<span class="comment"> //! Deep-copy assignment from Value</span></div>
-<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160;<span class="comment"></span><span class="comment"> /*! Assigns a \b copy of the Value to the current Value object</span></div>
-<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;<span class="comment"> \tparam SourceAllocator Allocator type of \c rhs</span></div>
-<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;<span class="comment"> \param rhs Value to copy from (read-only)</span></div>
-<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;<span class="comment"> \param allocator Allocator to use for copying</span></div>
-<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;<span class="comment"> \param copyConstStrings Force copying of constant strings (e.g. referencing an in-situ buffer)</span></div>
-<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div>
-<div class="line"><a name="l00863"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae"> 863</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae">CopyFrom</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; rhs, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator, <span class="keywordtype">bool</span> copyConstStrings = <span class="keyword">false</span>) {</div>
-<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(static_cast&lt;void*&gt;(<span class="keyword">this</span>) != static_cast&lt;void const*&gt;(&amp;rhs));</div>
-<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>();</div>
-<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(rhs, allocator, copyConstStrings);</div>
-<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; }</div>
-<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;<span class="comment"> //! Exchange the contents of this value with those of other.</span></div>
-<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;<span class="comment"> \param other Another value.</span></div>
-<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160;<span class="comment"> \note Constant complexity.</span></div>
-<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00875"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db"> 875</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db">Swap</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; other) RAPIDJSON_NOEXCEPT {</div>
-<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> temp;</div>
-<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; temp.RawAssign(*<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; RawAssign(other);</div>
-<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; other.RawAssign(temp);</div>
-<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; }</div>
-<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;<span class="comment"> //! free-standing swap function helper</span></div>
-<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160;<span class="comment"> Helper function to enable support for common swap implementation pattern based on \c std::swap:</span></div>
-<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160;<span class="comment"> \code</span></div>
-<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160;<span class="comment"> void swap(MyClass&amp; a, MyClass&amp; b) {</span></div>
-<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;<span class="comment"> using std::swap;</span></div>
-<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;<span class="comment"> swap(a.value, b.value);</span></div>
-<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160;<span class="comment"> // ...</span></div>
-<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;<span class="comment"> }</span></div>
-<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;<span class="comment"> \endcode</span></div>
-<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160;<span class="comment"> \see Swap()</span></div>
-<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00895"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a58ecce8a34fc029039b8079de246bdaa"> 895</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a58ecce8a34fc029039b8079de246bdaa">swap</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; a, <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; b) RAPIDJSON_NOEXCEPT { a.Swap(b); }</div>
-<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160;<span class="comment"> //! Prepare Value for move semantics</span></div>
-<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;<span class="comment"></span><span class="comment"> /*! \return *this */</span></div>
-<div class="line"><a name="l00899"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b"> 899</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b">Move</a>() RAPIDJSON_NOEXCEPT { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }<span class="comment"></span></div>
-<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;<span class="comment"> //!@name Equal-to and not-equal-to operators</span></div>
-<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;<span class="comment"></span><span class="comment"> //! Equal-to operator</span></div>
-<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160;<span class="comment"> \note If an object contains duplicated named member, comparing equality with any object is always \c false.</span></div>
-<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;<span class="comment"> \note Linear time complexity (number of all values in the subtree and total lengths of all strings).</span></div>
-<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div>
-<div class="line"><a name="l00910"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#afbdbc9cbc3b59feb5a28d5bfee97dbb3"> 910</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#afbdbc9cbc3b59feb5a28d5bfee97dbb3">operator==</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; rhs)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a> RhsType;</div>
-<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">if</span> (GetType() != rhs.GetType())</div>
-<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160;</div>
-<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">switch</span> (GetType()) {</div>
-<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>: <span class="comment">// Warning: O(n^2) inner-loop</span></div>
-<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordflow">if</span> (data_.o.size != rhs.data_.o.size)</div>
-<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; </div>
-<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> lhsMemberItr = MemberBegin(); lhsMemberItr != MemberEnd(); ++lhsMemberItr) {</div>
-<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keyword">typename</span> RhsType::ConstMemberIterator rhsMemberItr = rhs.<a class="code" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811">FindMember</a>(lhsMemberItr-&gt;name);</div>
-<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">if</span> (rhsMemberItr == rhs.<a class="code" href="classrapidjson_1_1_generic_value.html#a88d2c5b861cd8a6a14976456dfbc1f64">MemberEnd</a>() || lhsMemberItr-&gt;value != rhsMemberItr-&gt;value)</div>
-<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; }</div>
-<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; </div>
-<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>:</div>
-<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keywordflow">if</span> (data_.a.size != rhs.data_.a.size)</div>
-<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; data_.a.size; i++)</div>
-<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keywordflow">if</span> ((*<span class="keyword">this</span>)[i] != rhs[i])</div>
-<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160;</div>
-<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>:</div>
-<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keywordflow">return</span> StringEqual(rhs);</div>
-<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;</div>
-<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>:</div>
-<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keywordflow">if</span> (IsDouble() || rhs.IsDouble()) {</div>
-<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordtype">double</span> a = GetDouble(); <span class="comment">// May convert from integer to double.</span></div>
-<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keywordtype">double</span> b = rhs.<a class="code" href="classrapidjson_1_1_generic_value.html#aa059dee923cc0446752e321ff70936a6">GetDouble</a>(); <span class="comment">// Ditto</span></div>
-<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="keywordflow">return</span> a &gt;= b &amp;&amp; a &lt;= b; <span class="comment">// Prevent -Wfloat-equal</span></div>
-<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; }</div>
-<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keywordflow">return</span> data_.n.u64 == rhs.data_.n.u64;</div>
-<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;</div>
-<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; }</div>
-<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; }</div>
-<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160;<span class="comment"> //! Equal-to operator with const C-string pointer</span></div>
-<div class="line"><a name="l00952"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a7bed9035dd1beeabe6f47e870874e793"> 952</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a7bed9035dd1beeabe6f47e870874e793">operator==</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>* rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span> == <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(rhs)); }</div>
-<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160;</div>
-<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160;<span class="comment"> //! Equal-to operator with string object</span></div>
-<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160;<span class="comment"></span><span class="comment"> /*! \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING.</span></div>
-<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00958"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a6f7f7c66d8f8c08e496ae831ba114126"> 958</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a6f7f7c66d8f8c08e496ae831ba114126">operator==</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span> == <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(rhs)); }</div>
-<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;<span class="comment"> //! Equal-to operator with primitive types</span></div>
-<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c double, \c true, \c false</span></div>
-<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00964"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ae6c196979931e8283bcbd499133169ed"> 964</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;,internal::IsGenericValue&lt;T&gt; &gt;), (<span class="keywordtype">bool</span>)) operator==(const T&amp; rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span> == <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(rhs); }</div>
-<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160;<span class="comment"> //! Not-equal-to operator</span></div>
-<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160;<span class="comment"></span><span class="comment"> /*! \return !(*this == rhs)</span></div>
-<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div>
-<div class="line"><a name="l00970"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a0cb232adce79932c499c5f04cbc8dc54"> 970</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a0cb232adce79932c499c5f04cbc8dc54">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs); }</div>
-<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160;<span class="comment"> //! Not-equal-to operator with const C-string pointer</span></div>
-<div class="line"><a name="l00973"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aff1711092a1278d36b8152f5520a686e"> 973</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#aff1711092a1278d36b8152f5520a686e">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>* rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs); }</div>
-<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160;<span class="comment"> //! Not-equal-to operator with arbitrary types</span></div>
-<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160;<span class="comment"></span><span class="comment"> /*! \return !(*this == rhs)</span></div>
-<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00978"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad7e6ef7acbbfef57485b9f2dee620dbf"> 978</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue&lt;T&gt;), (<span class="keywordtype">bool</span>)) operator!=(const T&amp; rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs); }</div>
-<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160;<span class="comment"> //! Equal-to operator with arbitrary types (symmetric version)</span></div>
-<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160;<span class="comment"></span><span class="comment"> /*! \return (rhs == lhs)</span></div>
-<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00983"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aaa465706fda1e1ef4513ce877e0b4b69"> 983</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">friend</span> RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue&lt;T&gt;), (<span class="keywordtype">bool</span>)) operator==(const T&amp; lhs, const <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; rhs) { <span class="keywordflow">return</span> rhs == lhs; }</div>
-<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;<span class="comment"> //! Not-Equal-to operator with arbitrary types (symmetric version)</span></div>
-<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;<span class="comment"></span><span class="comment"> /*! \return !(rhs == lhs)</span></div>
-<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00988"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ae08898bef949f217f0e5d28e19f05992"> 988</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">friend</span> RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue&lt;T&gt;), (<span class="keywordtype">bool</span>)) operator!=(const T&amp; lhs, const <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; rhs) { <span class="keywordflow">return</span> !(rhs == lhs); }<span class="comment"></span></div>
-<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;<span class="comment"> //!@name Type</span></div>
-<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> GetType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a><span class="keyword">&gt;</span>(data_.f.flags &amp; kTypeMask); }</div>
-<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordtype">bool</span> IsNull()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data_.f.flags == kNullFlag; }</div>
-<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <span class="keywordtype">bool</span> IsFalse()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data_.f.flags == kFalseFlag; }</div>
-<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="keywordtype">bool</span> IsTrue()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data_.f.flags == kTrueFlag; }</div>
-<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordtype">bool</span> IsBool()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kBoolFlag) != 0; }</div>
-<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordtype">bool</span> IsObject()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data_.f.flags == kObjectFlag; }</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <span class="keywordtype">bool</span> IsArray()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data_.f.flags == kArrayFlag; }</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="keywordtype">bool</span> IsNumber()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kNumberFlag) != 0; }</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordtype">bool</span> IsInt()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kIntFlag) != 0; }</div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordtype">bool</span> IsUint()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kUintFlag) != 0; }</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keywordtype">bool</span> IsInt64()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kInt64Flag) != 0; }</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordtype">bool</span> IsUint64()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kUint64Flag) != 0; }</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordtype">bool</span> IsDouble()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kDoubleFlag) != 0; }</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keywordtype">bool</span> IsString()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kStringFlag) != 0; }</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="comment">// Checks whether a number can be losslessly converted to a double.</span></div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordtype">bool</span> IsLosslessDouble()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <span class="keywordflow">if</span> (!IsNumber()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <span class="keywordflow">if</span> (IsUint64()) {</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; uint64_t u = GetUint64();</div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keyword">volatile</span> <span class="keywordtype">double</span> d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(u);</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <span class="keywordflow">return</span> (d &gt;= 0.0)</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; &amp;&amp; (d &lt; static_cast&lt;double&gt;(std::numeric_limits&lt;uint64_t&gt;::max()))</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; &amp;&amp; (u == <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(d));</div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; }</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keywordflow">if</span> (IsInt64()) {</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; int64_t i = GetInt64();</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="keyword">volatile</span> <span class="keywordtype">double</span> d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(i);</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordflow">return</span> (d &gt;= static_cast&lt;double&gt;(std::numeric_limits&lt;int64_t&gt;::min()))</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; &amp;&amp; (d &lt; static_cast&lt;double&gt;(std::numeric_limits&lt;int64_t&gt;::max()))</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; &amp;&amp; (i == static_cast&lt;int64_t&gt;(d));</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; }</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// double, int, uint are always lossless</span></div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; }</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; <span class="comment">// Checks whether a number is a float (possible lossy).</span></div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keywordtype">bool</span> IsFloat()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <span class="keywordflow">if</span> ((data_.f.flags &amp; kDoubleFlag) == 0)</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keywordtype">double</span> d = GetDouble();</div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <span class="keywordflow">return</span> d &gt;= -3.4028234e38 &amp;&amp; d &lt;= 3.4028234e38;</div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; }</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="comment">// Checks whether a number can be losslessly converted to a float.</span></div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keywordtype">bool</span> IsLosslessFloat()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="keywordflow">if</span> (!IsNumber()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordtype">double</span> a = GetDouble();</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <span class="keywordflow">if</span> (a &lt; static_cast&lt;double&gt;(-std::numeric_limits&lt;float&gt;::max())</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; || a &gt; static_cast&lt;double&gt;(std::numeric_limits&lt;float&gt;::max()))</div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordtype">double</span> b = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(a));</div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="keywordflow">return</span> a &gt;= b &amp;&amp; a &lt;= b; <span class="comment">// Prevent -Wfloat-equal</span></div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; }</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;<span class="comment"> //!@name Null</span></div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; GenericValue&amp; SetNull() { this-&gt;~GenericValue(); <span class="keyword">new</span> (<span class="keyword">this</span>) GenericValue(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;<span class="comment"> //!@name Bool</span></div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01059"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a69d917b47799f63fc588bf294fa71483"> 1059</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a69d917b47799f63fc588bf294fa71483">GetBool</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsBool()); <span class="keywordflow">return</span> data_.f.flags == kTrueFlag; }<span class="comment"></span></div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;<span class="comment"> //!&lt; Set boolean value</span></div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;<span class="comment"></span><span class="comment"> /*! \post IsBool() == true */</span></div>
-<div class="line"><a name="l01062"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a5623c9039977ca0daf394e5c12f10c2d"> 1062</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a5623c9039977ca0daf394e5c12f10c2d">SetBool</a>(<span class="keywordtype">bool</span> b) { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;<span class="comment"> //!@name Object</span></div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;<span class="comment"> //! Set this value as an empty object.</span></div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;<span class="comment"></span><span class="comment"> /*! \post IsObject() == true */</span></div>
-<div class="line"><a name="l01071"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a7cb3cbaefe4fb99aaf9f155fb4ee039b"> 1071</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a7cb3cbaefe4fb99aaf9f155fb4ee039b">SetObject</a>() { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;<span class="comment"> //! Get the number of members in the object.</span></div>
-<div class="line"><a name="l01074"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#acf5019b9002ebfd66a1191d19e986c7b"> 1074</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> <a class="code" href="classrapidjson_1_1_generic_value.html#acf5019b9002ebfd66a1191d19e986c7b">MemberCount</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> data_.o.size; }</div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;<span class="comment"> //! Check whether the object is empty.</span></div>
-<div class="line"><a name="l01077"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a1f28a345c9b9c93c76abf695669e4378"> 1077</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a1f28a345c9b9c93c76abf695669e4378">ObjectEmpty</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> data_.o.size == 0; }</div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;<span class="comment"> //! Get a value from an object associated with the name.</span></div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsObject() == true</span></div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;<span class="comment"> \tparam T Either \c Ch or \c const \c Ch (template used for disambiguation with \ref operator[](SizeType))</span></div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;<span class="comment"> \note In version 0.1x, if the member is not found, this function returns a null value. This makes issue 7.</span></div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;<span class="comment"> Since 0.2, if the name is not correct, it will assert.</span></div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;<span class="comment"> If user is unsure whether a member exists, user should use HasMember() first.</span></div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;<span class="comment"> A better approach is to use FindMember().</span></div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01089"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a8ec7fc7f221306925c7674dccbe02b07"> 1089</a></span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr&lt;internal::IsSame&lt;<span class="keyword">typename</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">internal::RemoveConst&lt;T&gt;::Type</a>, <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>&gt; &gt;),(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;)) operator[](T* name) {</div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> n(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name));</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordflow">return</span> (*<span class="keyword">this</span>)[n];</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; }</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr&lt;internal::IsSame&lt;<span class="keyword">typename</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">internal::RemoveConst&lt;T&gt;::Type</a>, Ch&gt; &gt;),(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;)) operator[](T* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;<span class="keyword">&gt;</span>(*this)[name]; }</div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;<span class="comment"> //! Get a value from an object associated with the name.</span></div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsObject() == true</span></div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;<span class="comment"> \tparam SourceAllocator Allocator of the \c name value</span></div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;<span class="comment"> \note Compared to \ref operator[](T*), this version is faster because it does not need a StrLen().</span></div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;<span class="comment"> And it can also handle strings with embedded null characters.</span></div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div>
-<div class="line"><a name="l01106"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aa62b57746c96ce3d264b2fe178196062"> 1106</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#aa62b57746c96ce3d264b2fe178196062">operator[]</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; name) {</div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> member = FindMember(name);</div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordflow">if</span> (member != MemberEnd())</div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="keywordflow">return</span> member-&gt;value;</div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="comment">// see above note</span></div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="comment">// This will generate -Wexit-time-destructors in clang</span></div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="comment">// static GenericValue NullValue;</span></div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="comment">// return NullValue;</span></div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;</div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <span class="comment">// Use static buffer and placement-new to prevent destruction</span></div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <span class="keyword">static</span> <span class="keywordtype">char</span> buffer[<span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>)];</div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">new</span> (buffer) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>();</div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; }</div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; }</div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; operator[](<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;<span class="keyword">&gt;</span>(*this)[name]; }</div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;<span class="comment"> //! Get a value from an object associated with name (string object).</span></div>
-<div class="line"><a name="l01127"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a4d337239ee3e2096462f6a36b9ab0811"> 1127</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a4d337239ee3e2096462f6a36b9ab0811">operator[]</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name) { <span class="keywordflow">return</span> (*<span class="keyword">this</span>)[<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name))]; }</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; operator[](<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (*<span class="keyword">this</span>)[<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name))]; }</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;<span class="comment"> //! Const member iterator</span></div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsObject() == true */</span></div>
-<div class="line"><a name="l01133"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a469c0cc3e72f846757fb64fa52fafee5"> 1133</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a469c0cc3e72f846757fb64fa52fafee5">MemberBegin</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a>(GetMembersPointer()); }<span class="comment"></span></div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;<span class="comment"> //! Const \em past-the-end member iterator</span></div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsObject() == true */</span></div>
-<div class="line"><a name="l01136"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a88d2c5b861cd8a6a14976456dfbc1f64"> 1136</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a88d2c5b861cd8a6a14976456dfbc1f64">MemberEnd</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a>(GetMembersPointer() + data_.o.size); }<span class="comment"></span></div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;<span class="comment"> //! Member iterator</span></div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsObject() == true */</span></div>
-<div class="line"><a name="l01139"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a"> 1139</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a">MemberBegin</a>() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>(GetMembersPointer()); }<span class="comment"></span></div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;<span class="comment"> //! \em Past-the-end member iterator</span></div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsObject() == true */</span></div>
-<div class="line"><a name="l01142"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee"> 1142</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee">MemberEnd</a>() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>(GetMembersPointer() + data_.o.size); }</div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;<span class="comment"> //! Check whether a member exists in the object.</span></div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;<span class="comment"> \param name Member name to be searched.</span></div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;<span class="comment"> \pre IsObject() == true</span></div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;<span class="comment"> \return Whether a member with that name exists.</span></div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;<span class="comment"> \note It is better to use FindMember() directly if you need the obtain the value as well.</span></div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01152"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#af17b9b6ba6a9fb4e02d2dced5aa0ee0c"> 1152</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#af17b9b6ba6a9fb4e02d2dced5aa0ee0c">HasMember</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> FindMember(name) != MemberEnd(); }</div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;<span class="comment"> //! Check whether a member exists in the object with string object.</span></div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;<span class="comment"> \param name Member name to be searched.</span></div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;<span class="comment"> \pre IsObject() == true</span></div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;<span class="comment"> \return Whether a member with that name exists.</span></div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;<span class="comment"> \note It is better to use FindMember() directly if you need the obtain the value as well.</span></div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01163"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#afb1942ef13566484e1806689834a053f"> 1163</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#afb1942ef13566484e1806689834a053f">HasMember</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> FindMember(name) != MemberEnd(); }</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;<span class="comment"> //! Check whether a member exists in the object with GenericValue name.</span></div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;<span class="comment"> This version is faster because it does not need a StrLen(). It can also handle string with null character.</span></div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;<span class="comment"> \param name Member name to be searched.</span></div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;<span class="comment"> \pre IsObject() == true</span></div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;<span class="comment"> \return Whether a member with that name exists.</span></div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;<span class="comment"> \note It is better to use FindMember() directly if you need the obtain the value as well.</span></div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div>
-<div class="line"><a name="l01176"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a548e6c8a99c525573d933933610977cb"> 1176</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a548e6c8a99c525573d933933610977cb">HasMember</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> FindMember(name) != MemberEnd(); }</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;<span class="comment"> //! Find member by name.</span></div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;<span class="comment"> \param name Member name to be searched.</span></div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;<span class="comment"> \pre IsObject() == true</span></div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;<span class="comment"> \return Iterator to member, if it exists.</span></div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;<span class="comment"> Otherwise returns \ref MemberEnd().</span></div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;<span class="comment"> \note Earlier versions of Rapidjson returned a \c NULL pointer, in case</span></div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;<span class="comment"> the requested member doesn&#39;t exist. For consistency with e.g.</span></div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;<span class="comment"> \c std::map, this has been changed to MemberEnd() now.</span></div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01190"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811"> 1190</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811">FindMember</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>* name) {</div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> n(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name));</div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keywordflow">return</span> FindMember(n);</div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; }</div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;</div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; ConstMemberIterator FindMember(<span class="keyword">const</span> Ch* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;<span class="keyword">&gt;</span>(*this).<a class="code" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811">FindMember</a>(name); }</div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;<span class="comment"> //! Find member by name.</span></div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;<span class="comment"> This version is faster because it does not need a StrLen(). It can also handle string with null character.</span></div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;<span class="comment"> \param name Member name to be searched.</span></div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;<span class="comment"> \pre IsObject() == true</span></div>
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;<span class="comment"> \return Iterator to member, if it exists.</span></div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;<span class="comment"> Otherwise returns \ref MemberEnd().</span></div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;<span class="comment"> \note Earlier versions of Rapidjson returned a \c NULL pointer, in case</span></div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;<span class="comment"> the requested member doesn&#39;t exist. For consistency with e.g.</span></div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;<span class="comment"> \c std::map, this has been changed to MemberEnd() now.</span></div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div>
-<div class="line"><a name="l01211"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a8d75bf0c6c0fa4f8d340a4236e98539b"> 1211</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a8d75bf0c6c0fa4f8d340a4236e98539b">FindMember</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; name) {</div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject());</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(name.IsString());</div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> member = MemberBegin();</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keywordflow">for</span> ( ; member != MemberEnd(); ++member)</div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <span class="keywordflow">if</span> (name.StringEqual(member-&gt;name))</div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <span class="keywordflow">return</span> member;</div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; }</div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt; ConstMemberIterator FindMember(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;<span class="keyword">&gt;</span>(*this).<a class="code" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811">FindMember</a>(name); }</div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;<span class="comment"> //! Find member by string object name.</span></div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;<span class="comment"> \param name Member name to be searched.</span></div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;<span class="comment"> \pre IsObject() == true</span></div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;<span class="comment"> \return Iterator to member, if it exists.</span></div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;<span class="comment"> Otherwise returns \ref MemberEnd().</span></div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01230"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a278b420ea75b0ec18d88d4c9e9199d62"> 1230</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a278b420ea75b0ec18d88d4c9e9199d62">FindMember</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name) { <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a278b420ea75b0ec18d88d4c9e9199d62">FindMember</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name))); }</div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; ConstMemberIterator FindMember(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> FindMember(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name))); }</div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;<span class="comment"> //! Add a member (name-value pair) to the object.</span></div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;<span class="comment"></span><span class="comment"> /*! \param name A string value as name of member.</span></div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;<span class="comment"> \param value Value of any type.</span></div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;<span class="comment"> \note The ownership of \c name and \c value will be transferred to this object on success.</span></div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;<span class="comment"> \pre IsObject() &amp;&amp; name.IsString()</span></div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;<span class="comment"> \post name.IsNull() &amp;&amp; value.IsNull()</span></div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;<span class="comment"> \note Amortized Constant time complexity.</span></div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01244"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68"> 1244</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68">AddMember</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; name, <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; value, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) {</div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject());</div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(name.IsString());</div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;</div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; ObjectData&amp; o = data_.o;</div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <span class="keywordflow">if</span> (o.size &gt;= o.capacity) {</div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">if</span> (o.capacity == 0) {</div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; o.capacity = kDefaultObjectCapacity;</div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; SetMembersPointer(reinterpret_cast&lt;Member*&gt;(allocator.Malloc(o.capacity * <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>))));</div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; }</div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> oldCapacity = o.capacity;</div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; o.capacity += (oldCapacity + 1) / 2; <span class="comment">// grow by factor 1.5</span></div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; SetMembersPointer(reinterpret_cast&lt;Member*&gt;(allocator.Realloc(GetMembersPointer(), oldCapacity * <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>), o.capacity * <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>))));</div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; }</div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; }</div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; <a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>* members = GetMembersPointer();</div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; members[o.size].<a class="code" href="structrapidjson_1_1_generic_member.html#ae820eaa74b415a9073f3f3855f6c6607">name</a>.RawAssign(name);</div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; members[o.size].<a class="code" href="structrapidjson_1_1_generic_member.html#a8ffff2076e62d988a070a136da6ffca6">value</a>.RawAssign(value);</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; o.size++;</div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; }</div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;<span class="comment"> //! Add a constant string value as member (name-value pair) to the object.</span></div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;<span class="comment"></span><span class="comment"> /*! \param name A string value as name of member.</span></div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;<span class="comment"> \param value constant string reference as value of member.</span></div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;<span class="comment"> \pre IsObject()</span></div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;<span class="comment"> \note This overload is needed to avoid clashes with the generic primitive type AddMember(GenericValue&amp;,T,Allocator&amp;) overload below.</span></div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;<span class="comment"> \note Amortized Constant time complexity.</span></div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01276"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad290f179591025e871bedbbac89ac276"> 1276</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#ad290f179591025e871bedbbac89ac276">AddMember</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; name, <a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> value, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) {</div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> v(value);</div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; <span class="keywordflow">return</span> AddMember(name, v, allocator);</div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; }</div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;</div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;<span class="comment"> //! Add a string object as member (name-value pair) to the object.</span></div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;<span class="comment"></span><span class="comment"> /*! \param name A string value as name of member.</span></div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;<span class="comment"> \param value constant string reference as value of member.</span></div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;<span class="comment"> \pre IsObject()</span></div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;<span class="comment"> \note This overload is needed to avoid clashes with the generic primitive type AddMember(GenericValue&amp;,T,Allocator&amp;) overload below.</span></div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;<span class="comment"> \note Amortized Constant time complexity.</span></div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01291"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a578e35f3350717db2aae534969b2346a"> 1291</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a578e35f3350717db2aae534969b2346a">AddMember</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; name, std::basic_string&lt;Ch&gt;&amp; value, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) {</div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> v(value, allocator);</div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="keywordflow">return</span> AddMember(name, v, allocator);</div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; }</div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;<span class="comment"> //! Add any primitive value as member (name-value pair) to the object.</span></div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t</span></div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;<span class="comment"> \param name A string value as name of member.</span></div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;<span class="comment"> \param value Value of primitive type \c T as value of member</span></div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;<span class="comment"> \pre IsObject()</span></div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;<span class="comment"> \note The source type \c T explicitly disallows all pointer types,</span></div>
-<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;<span class="comment"> especially (\c const) \ref Ch*. This helps avoiding implicitly</span></div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;<span class="comment"> referencing character strings with insufficient lifetime, use</span></div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;<span class="comment"> \ref AddMember(StringRefType, GenericValue&amp;, Allocator&amp;) or \ref</span></div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;<span class="comment"> AddMember(StringRefType, StringRefType, Allocator&amp;).</span></div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;<span class="comment"> All other pointer types would implicitly convert to \c bool,</span></div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;<span class="comment"> use an explicit cast instead, if needed.</span></div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;<span class="comment"> \note Amortized Constant time complexity.</span></div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;))</div>
-<div class="line"><a name="l01316"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ab705cb56bfb380005704cda2d0edf168"> 1316</a></span>&#160; AddMember(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; name, T value, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) {</div>
-<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> v(value);</div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; <span class="keywordflow">return</span> AddMember(name, v, allocator);</div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; }</div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;</div>
-<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; AddMember(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;&amp; name, <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;&amp; value, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) {</div>
-<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; <span class="keywordflow">return</span> AddMember(name, value, allocator);</div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; }</div>
-<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; GenericValue&amp; AddMember(GenericValue&amp;&amp; name, GenericValue&amp; value, Allocator&amp; allocator) {</div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <span class="keywordflow">return</span> AddMember(name, value, allocator);</div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; }</div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; GenericValue&amp; AddMember(GenericValue&amp; name, GenericValue&amp;&amp; value, Allocator&amp; allocator) {</div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <span class="keywordflow">return</span> AddMember(name, value, allocator);</div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; }</div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; GenericValue&amp; AddMember(StringRefType name, GenericValue&amp;&amp; value, Allocator&amp; allocator) {</div>
-<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; GenericValue n(name);</div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; <span class="keywordflow">return</span> AddMember(n, value, allocator);</div>
-<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; }</div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;</div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;<span class="comment"> //! Add a member (name-value pair) to the object.</span></div>
-<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;<span class="comment"></span><span class="comment"> /*! \param name A constant string reference as name of member.</span></div>
-<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;<span class="comment"> \param value Value of any type.</span></div>
-<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;<span class="comment"> \note The ownership of \c value will be transferred to this object on success.</span></div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;<span class="comment"> \pre IsObject()</span></div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;<span class="comment"> \post value.IsNull()</span></div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;<span class="comment"> \note Amortized Constant time complexity.</span></div>
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01348"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a85dc131bdad8077ce970d580d333d15a"> 1348</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a85dc131bdad8077ce970d580d333d15a">AddMember</a>(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> name, <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; value, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) {</div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> n(name);</div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; <span class="keywordflow">return</span> AddMember(n, value, allocator);</div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; }</div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;<span class="comment"> //! Add a constant string value as member (name-value pair) to the object.</span></div>
-<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;<span class="comment"></span><span class="comment"> /*! \param name A constant string reference as name of member.</span></div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;<span class="comment"> \param value constant string reference as value of member.</span></div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;<span class="comment"> \pre IsObject()</span></div>
-<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;<span class="comment"> \note This overload is needed to avoid clashes with the generic primitive type AddMember(StringRefType,T,Allocator&amp;) overload below.</span></div>
-<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;<span class="comment"> \note Amortized Constant time complexity.</span></div>
-<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01362"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a2ccb4736d0f2ec07f06f630d8fe54f8d"> 1362</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a2ccb4736d0f2ec07f06f630d8fe54f8d">AddMember</a>(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> name, <a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> value, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) {</div>
-<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> v(value);</div>
-<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; <span class="keywordflow">return</span> AddMember(name, v, allocator);</div>
-<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; }</div>
-<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;<span class="comment"> //! Add any primitive value as member (name-value pair) to the object.</span></div>
-<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t</span></div>
-<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;<span class="comment"> \param name A constant string reference as name of member.</span></div>
-<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;<span class="comment"> \param value Value of primitive type \c T as value of member</span></div>
-<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;<span class="comment"> \pre IsObject()</span></div>
-<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;<span class="comment"> \note The source type \c T explicitly disallows all pointer types,</span></div>
-<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;<span class="comment"> especially (\c const) \ref Ch*. This helps avoiding implicitly</span></div>
-<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;<span class="comment"> referencing character strings with insufficient lifetime, use</span></div>
-<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;<span class="comment"> \ref AddMember(StringRefType, GenericValue&amp;, Allocator&amp;) or \ref</span></div>
-<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;<span class="comment"> AddMember(StringRefType, StringRefType, Allocator&amp;).</span></div>
-<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;<span class="comment"> All other pointer types would implicitly convert to \c bool,</span></div>
-<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;<span class="comment"> use an explicit cast instead, if needed.</span></div>
-<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;<span class="comment"> \note Amortized Constant time complexity.</span></div>
-<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;))</div>
-<div class="line"><a name="l01386"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aa70ada250f3a0c5aeee0ce138d136b06"> 1386</a></span>&#160; AddMember(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> name, T value, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) {</div>
-<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> n(name);</div>
-<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; <span class="keywordflow">return</span> AddMember(n, value, allocator);</div>
-<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; }</div>
-<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;<span class="comment"> //! Remove all members in the object.</span></div>
-<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;<span class="comment"></span><span class="comment"> /*! This function do not deallocate memory in the object, i.e. the capacity is unchanged.</span></div>
-<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01395"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a68d8d197ae1fb83d4dc202f9812af4cc"> 1395</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a68d8d197ae1fb83d4dc202f9812af4cc">RemoveAllMembers</a>() {</div>
-<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); </div>
-<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> m = MemberBegin(); m != MemberEnd(); ++m)</div>
-<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; m-&gt;~Member();</div>
-<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; data_.o.size = 0;</div>
-<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; }</div>
-<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;<span class="comment"> //! Remove a member in object by its name.</span></div>
-<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;<span class="comment"></span><span class="comment"> /*! \param name Name of member to be removed.</span></div>
-<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;<span class="comment"> \return Whether the member existed.</span></div>
-<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;<span class="comment"> \note This function may reorder the object members. Use \ref</span></div>
-<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;<span class="comment"> EraseMember(ConstMemberIterator) if you need to preserve the</span></div>
-<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;<span class="comment"> relative order of the remaining members.</span></div>
-<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01410"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aa60074f72a6d1651828a104b0c6387b1"> 1410</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#aa60074f72a6d1651828a104b0c6387b1">RemoveMember</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>* name) {</div>
-<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> n(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name));</div>
-<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; <span class="keywordflow">return</span> RemoveMember(n);</div>
-<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; }</div>
-<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;</div>
-<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; <span class="keywordtype">bool</span> RemoveMember(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name) { <span class="keywordflow">return</span> RemoveMember(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name))); }</div>
-<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;</div>
-<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div>
-<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; <span class="keywordtype">bool</span> RemoveMember(<span class="keyword">const</span> GenericValue&lt;Encoding, SourceAllocator&gt;&amp; name) {</div>
-<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; MemberIterator m = FindMember(name);</div>
-<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; <span class="keywordflow">if</span> (m != MemberEnd()) {</div>
-<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; RemoveMember(m);</div>
-<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; }</div>
-<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; }</div>
-<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;<span class="comment"> //! Remove a member in object by iterator.</span></div>
-<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;<span class="comment"></span><span class="comment"> /*! \param m member iterator (obtained by FindMember() or MemberBegin()).</span></div>
-<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;<span class="comment"> \return the new iterator after removal.</span></div>
-<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;<span class="comment"> \note This function may reorder the object members. Use \ref</span></div>
-<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;<span class="comment"> EraseMember(ConstMemberIterator) if you need to preserve the</span></div>
-<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;<span class="comment"> relative order of the remaining members.</span></div>
-<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;<span class="comment"> \note Constant time complexity.</span></div>
-<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01438"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#af91573ce61d798f0bc5dc88b00742697"> 1438</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#af91573ce61d798f0bc5dc88b00742697">RemoveMember</a>(<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> m) {</div>
-<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject());</div>
-<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(data_.o.size &gt; 0);</div>
-<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(GetMembersPointer() != 0);</div>
-<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(m &gt;= MemberBegin() &amp;&amp; m &lt; MemberEnd());</div>
-<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;</div>
-<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> last(GetMembersPointer() + (data_.o.size - 1));</div>
-<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; <span class="keywordflow">if</span> (data_.o.size &gt; 1 &amp;&amp; m != last)</div>
-<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; *m = *last; <span class="comment">// Move the last one to this place</span></div>
-<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; m-&gt;~Member(); <span class="comment">// Only one left, just destroy</span></div>
-<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; --data_.o.size;</div>
-<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; <span class="keywordflow">return</span> m;</div>
-<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; }</div>
-<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;<span class="comment"> //! Remove a member from an object by iterator.</span></div>
-<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;<span class="comment"></span><span class="comment"> /*! \param pos iterator to the member to remove</span></div>
-<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;<span class="comment"> \pre IsObject() == true &amp;&amp; \ref MemberBegin() &lt;= \c pos &lt; \ref MemberEnd()</span></div>
-<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;<span class="comment"> \return Iterator following the removed element.</span></div>
-<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;<span class="comment"> If the iterator \c pos refers to the last element, the \ref MemberEnd() iterator is returned.</span></div>
-<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;<span class="comment"> \note This function preserves the relative order of the remaining object</span></div>
-<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;<span class="comment"> members. If you do not need this, use the more efficient \ref RemoveMember(MemberIterator).</span></div>
-<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01462"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a163e60b101e5ae534597c050a6eba511"> 1462</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a163e60b101e5ae534597c050a6eba511">EraseMember</a>(<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> pos) {</div>
-<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <span class="keywordflow">return</span> EraseMember(pos, pos +1);</div>
-<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; }</div>
-<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;<span class="comment"> //! Remove members in the range [first, last) from an object.</span></div>
-<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;<span class="comment"></span><span class="comment"> /*! \param first iterator to the first member to remove</span></div>
-<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;<span class="comment"> \param last iterator following the last member to remove</span></div>
-<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;<span class="comment"> \pre IsObject() == true &amp;&amp; \ref MemberBegin() &lt;= \c first &lt;= \c last &lt;= \ref MemberEnd()</span></div>
-<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;<span class="comment"> \return Iterator following the last removed element.</span></div>
-<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;<span class="comment"> \note This function preserves the relative order of the remaining object</span></div>
-<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;<span class="comment"> members.</span></div>
-<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01475"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a121e40b5944be337189eb63b98b7e6ce"> 1475</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a121e40b5944be337189eb63b98b7e6ce">EraseMember</a>(<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> first, <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> last) {</div>
-<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject());</div>
-<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(data_.o.size &gt; 0);</div>
-<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(GetMembersPointer() != 0);</div>
-<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(first &gt;= MemberBegin());</div>
-<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(first &lt;= last);</div>
-<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(last &lt;= MemberEnd());</div>
-<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;</div>
-<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> pos = MemberBegin() + (first - MemberBegin());</div>
-<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> itr = pos; itr != last; ++itr)</div>
-<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; itr-&gt;~Member();</div>
-<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; std::memmove(&amp;*pos, &amp;*last, static_cast&lt;size_t&gt;(MemberEnd() - last) * <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>));</div>
-<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; data_.o.size -= <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(last - first);</div>
-<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="keywordflow">return</span> pos;</div>
-<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; }</div>
-<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;<span class="comment"> //! Erase a member in object by its name.</span></div>
-<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;<span class="comment"></span><span class="comment"> /*! \param name Name of member to be removed.</span></div>
-<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;<span class="comment"> \return Whether the member existed.</span></div>
-<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01496"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ac51a3b3046aaa12aa1d88ac876a28cec"> 1496</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#ac51a3b3046aaa12aa1d88ac876a28cec">EraseMember</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>* name) {</div>
-<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> n(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name));</div>
-<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; <span class="keywordflow">return</span> EraseMember(n);</div>
-<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; }</div>
-<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;</div>
-<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; <span class="keywordtype">bool</span> EraseMember(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name) { <span class="keywordflow">return</span> EraseMember(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name))); }</div>
-<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;</div>
-<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div>
-<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; <span class="keywordtype">bool</span> EraseMember(<span class="keyword">const</span> GenericValue&lt;Encoding, SourceAllocator&gt;&amp; name) {</div>
-<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; MemberIterator m = FindMember(name);</div>
-<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; <span class="keywordflow">if</span> (m != MemberEnd()) {</div>
-<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; EraseMember(m);</div>
-<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; }</div>
-<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; }</div>
-<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;</div>
-<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; Object GetObject() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> Object(*<span class="keyword">this</span>); }</div>
-<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; ConstObject GetObject()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> ConstObject(*<span class="keyword">this</span>); }</div>
-<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;<span class="comment"> //!@name Array</span></div>
-<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;<span class="comment"> //! Set this value as an empty array.</span></div>
-<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;<span class="comment"></span><span class="comment"> /*! \post IsArray == true */</span></div>
-<div class="line"><a name="l01526"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a25069c76d045b058e54835d8c467c789"> 1526</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a25069c76d045b058e54835d8c467c789">SetArray</a>() { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;<span class="comment"> //! Get the number of elements in array.</span></div>
-<div class="line"><a name="l01529"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a2e6e849cfb368a3fa708f8bcf1d56ec9"> 1529</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a2e6e849cfb368a3fa708f8bcf1d56ec9">Size</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); <span class="keywordflow">return</span> data_.a.size; }</div>
-<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;<span class="comment"> //! Get the capacity of array.</span></div>
-<div class="line"><a name="l01532"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a6cbb8a305fdc40beb83bee2b99ac5b59"> 1532</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a6cbb8a305fdc40beb83bee2b99ac5b59">Capacity</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); <span class="keywordflow">return</span> data_.a.capacity; }</div>
-<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;<span class="comment"> //! Check whether the array is empty.</span></div>
-<div class="line"><a name="l01535"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a08bf77a430b865404c57a93d8f0f6d3d"> 1535</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a08bf77a430b865404c57a93d8f0f6d3d">Empty</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); <span class="keywordflow">return</span> data_.a.size == 0; }</div>
-<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;<span class="comment"> //! Remove all elements in the array.</span></div>
-<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;<span class="comment"></span><span class="comment"> /*! This function do not deallocate memory in the array, i.e. the capacity is unchanged.</span></div>
-<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01541"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aa56b69bac5423622eff6998ce4802106"> 1541</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_value.html#aa56b69bac5423622eff6998ce4802106">Clear</a>() {</div>
-<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); </div>
-<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* e = GetElementsPointer();</div>
-<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* v = e; v != e + data_.a.size; ++v)</div>
-<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; v-&gt;~GenericValue();</div>
-<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; data_.a.size = 0;</div>
-<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; }</div>
-<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;<span class="comment"> //! Get an element from array by index.</span></div>
-<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsArray() == true</span></div>
-<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;<span class="comment"> \param index Zero-based index of element.</span></div>
-<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;<span class="comment"> \see operator[](T*)</span></div>
-<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01554"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#adc312de070d03a63e6c692c9c61db156"> 1554</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#adc312de070d03a63e6c692c9c61db156">operator[]</a>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) {</div>
-<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray());</div>
-<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(index &lt; data_.a.size);</div>
-<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; <span class="keywordflow">return</span> GetElementsPointer()[index];</div>
-<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; }</div>
-<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; operator[](<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;<span class="keyword">&gt;</span>(*this)[index]; }</div>
-<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;<span class="comment"> //! Element iterator</span></div>
-<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsArray() == true */</span></div>
-<div class="line"><a name="l01563"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603"> 1563</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ValueIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603">Begin</a>() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); <span class="keywordflow">return</span> GetElementsPointer(); }<span class="comment"></span></div>
-<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;<span class="comment"> //! \em Past-the-end element iterator</span></div>
-<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsArray() == true */</span></div>
-<div class="line"><a name="l01566"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109"> 1566</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ValueIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109">End</a>() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); <span class="keywordflow">return</span> GetElementsPointer() + data_.a.size; }<span class="comment"></span></div>
-<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;<span class="comment"> //! Constant element iterator</span></div>
-<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsArray() == true */</span></div>
-<div class="line"><a name="l01569"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#abc8945d3411c6ce583d322753ce028e1"> 1569</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ConstValueIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#abc8945d3411c6ce583d322753ce028e1">Begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;<span class="keyword">&gt;</span>(*this).<a class="code" href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603">Begin</a>(); }<span class="comment"></span></div>
-<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;<span class="comment"> //! Constant \em past-the-end element iterator</span></div>
-<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsArray() == true */</span></div>
-<div class="line"><a name="l01572"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad2d9786831d721cf8f1bf0dbdf86404a"> 1572</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ConstValueIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#ad2d9786831d721cf8f1bf0dbdf86404a">End</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;<span class="keyword">&gt;</span>(*this).<a class="code" href="classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109">End</a>(); }</div>
-<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;<span class="comment"> //! Request the array to have enough capacity to store elements.</span></div>
-<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;<span class="comment"></span><span class="comment"> /*! \param newCapacity The capacity that the array at least need to have.</span></div>
-<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01580"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a17971ba2bcd4eb1716098fdfe9182386"> 1580</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a17971ba2bcd4eb1716098fdfe9182386">Reserve</a>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> newCapacity, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a> &amp;allocator) {</div>
-<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray());</div>
-<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; <span class="keywordflow">if</span> (newCapacity &gt; data_.a.capacity) {</div>
-<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; SetElementsPointer(reinterpret_cast&lt;GenericValue*&gt;(allocator.Realloc(GetElementsPointer(), data_.a.capacity * <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>), newCapacity * <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>))));</div>
-<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; data_.a.capacity = newCapacity;</div>
-<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; }</div>
-<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; }</div>
-<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;<span class="comment"> //! Append a GenericValue at the end of the array.</span></div>
-<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;<span class="comment"></span><span class="comment"> /*! \param value Value to be appended.</span></div>
-<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;<span class="comment"> \pre IsArray() == true</span></div>
-<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;<span class="comment"> \post value.IsNull() == true</span></div>
-<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160;<span class="comment"> \note The ownership of \c value will be transferred to this array on success.</span></div>
-<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;<span class="comment"> \note If the number of elements to be appended is known, calls Reserve() once first may be more efficient.</span></div>
-<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;<span class="comment"> \note Amortized constant time complexity.</span></div>
-<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01599"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a0ec9f34bef5890241d4bc882b73b1db4"> 1599</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a0ec9f34bef5890241d4bc882b73b1db4">PushBack</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; value, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) {</div>
-<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray());</div>
-<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; <span class="keywordflow">if</span> (data_.a.size &gt;= data_.a.capacity)</div>
-<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; Reserve(data_.a.capacity == 0 ? kDefaultArrayCapacity : (data_.a.capacity + (data_.a.capacity + 1) / 2), allocator);</div>
-<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; GetElementsPointer()[data_.a.size++].RawAssign(value);</div>
-<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; }</div>
-<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;</div>
-<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; PushBack(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;&amp; value, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) {</div>
-<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; <span class="keywordflow">return</span> PushBack(value, allocator);</div>
-<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; }</div>
-<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;<span class="comment"> //! Append a constant string reference at the end of the array.</span></div>
-<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;<span class="comment"></span><span class="comment"> /*! \param value Constant string reference to be appended.</span></div>
-<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one used previously. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;<span class="comment"> \pre IsArray() == true</span></div>
-<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;<span class="comment"> \note If the number of elements to be appended is known, calls Reserve() once first may be more efficient.</span></div>
-<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;<span class="comment"> \note Amortized constant time complexity.</span></div>
-<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;<span class="comment"> \see GenericStringRef</span></div>
-<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01622"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a41946915cb219a684f6ffc9341efee22"> 1622</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a41946915cb219a684f6ffc9341efee22">PushBack</a>(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> value, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) {</div>
-<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; <span class="keywordflow">return</span> (*this).template PushBack&lt;StringRefType&gt;(value, allocator);</div>
-<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; }</div>
-<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;<span class="comment"> //! Append a primitive value at the end of the array.</span></div>
-<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t</span></div>
-<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;<span class="comment"> \param value Value of primitive type T to be appended.</span></div>
-<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;<span class="comment"> \pre IsArray() == true</span></div>
-<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;<span class="comment"> \note If the number of elements to be appended is known, calls Reserve() once first may be more efficient.</span></div>
-<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;<span class="comment"> \note The source type \c T explicitly disallows all pointer types,</span></div>
-<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;<span class="comment"> especially (\c const) \ref Ch*. This helps avoiding implicitly</span></div>
-<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;<span class="comment"> referencing character strings with insufficient lifetime, use</span></div>
-<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;<span class="comment"> \ref PushBack(GenericValue&amp;, Allocator&amp;) or \ref</span></div>
-<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;<span class="comment"> PushBack(StringRefType, Allocator&amp;).</span></div>
-<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;<span class="comment"> All other pointer types would implicitly convert to \c bool,</span></div>
-<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;<span class="comment"> use an explicit cast instead, if needed.</span></div>
-<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;<span class="comment"> \note Amortized constant time complexity.</span></div>
-<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;))</div>
-<div class="line"><a name="l01645"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aa59273e0adfe2a9d0e6ac29d2537d9ed"> 1645</a></span>&#160; PushBack(T value, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) {</div>
-<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> v(value);</div>
-<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; <span class="keywordflow">return</span> PushBack(v, allocator);</div>
-<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; }</div>
-<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;<span class="comment"> //! Remove the last element in the array.</span></div>
-<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;<span class="comment"> \note Constant time complexity.</span></div>
-<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01654"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ae475f31fb851138ced40e2ff6cb43ca6"> 1654</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#ae475f31fb851138ced40e2ff6cb43ca6">PopBack</a>() {</div>
-<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray());</div>
-<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!Empty());</div>
-<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; GetElementsPointer()[--data_.a.size].~GenericValue();</div>
-<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; }</div>
-<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;<span class="comment"> //! Remove an element of array by iterator.</span></div>
-<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;<span class="comment"> \param pos iterator to the element to remove</span></div>
-<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;<span class="comment"> \pre IsArray() == true &amp;&amp; \ref Begin() &lt;= \c pos &lt; \ref End()</span></div>
-<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;<span class="comment"> \return Iterator following the removed element. If the iterator pos refers to the last element, the End() iterator is returned.</span></div>
-<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01668"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99"> 1668</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ValueIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99">Erase</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">ConstValueIterator</a> pos) {</div>
-<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; <span class="keywordflow">return</span> Erase(pos, pos + 1);</div>
-<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; }</div>
-<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;<span class="comment"> //! Remove elements in the range [first, last) of the array.</span></div>
-<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;<span class="comment"> \param first iterator to the first element to remove</span></div>
-<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;<span class="comment"> \param last iterator following the last element to remove</span></div>
-<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;<span class="comment"> \pre IsArray() == true &amp;&amp; \ref Begin() &lt;= \c first &lt;= \c last &lt;= \ref End()</span></div>
-<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;<span class="comment"> \return Iterator following the last removed element.</span></div>
-<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;<span class="comment"> \note Linear time complexity.</span></div>
-<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01680"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a916f443e02f9379d8fbde49a4d440f61"> 1680</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ValueIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a916f443e02f9379d8fbde49a4d440f61">Erase</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">ConstValueIterator</a> first, <a class="code" href="classrapidjson_1_1_generic_value.html">ConstValueIterator</a> last) {</div>
-<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray());</div>
-<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(data_.a.size &gt; 0);</div>
-<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(GetElementsPointer() != 0);</div>
-<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(first &gt;= Begin());</div>
-<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(first &lt;= last);</div>
-<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(last &lt;= End());</div>
-<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ValueIterator</a> pos = Begin() + (first - Begin());</div>
-<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classrapidjson_1_1_generic_value.html">ValueIterator</a> itr = pos; itr != last; ++itr)</div>
-<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; itr-&gt;<a class="code" href="classrapidjson_1_1_generic_value.html#a433a64b466c80cadf7d1acaa6f065437">~GenericValue</a>(); </div>
-<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; std::memmove(pos, last, static_cast&lt;size_t&gt;(End() - last) * <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>));</div>
-<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; data_.a.size -= <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(last - first);</div>
-<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; <span class="keywordflow">return</span> pos;</div>
-<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; }</div>
-<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;</div>
-<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; Array GetArray() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); <span class="keywordflow">return</span> Array(*<span class="keyword">this</span>); }</div>
-<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; ConstArray GetArray()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); <span class="keywordflow">return</span> ConstArray(*<span class="keyword">this</span>); }</div>
-<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;<span class="comment"> //!@name Number</span></div>
-<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; <span class="keywordtype">int</span> GetInt()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(data_.f.flags &amp; kIntFlag); <span class="keywordflow">return</span> data_.n.i.i; }</div>
-<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <span class="keywordtype">unsigned</span> GetUint()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(data_.f.flags &amp; kUintFlag); <span class="keywordflow">return</span> data_.n.u.u; }</div>
-<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; int64_t GetInt64()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(data_.f.flags &amp; kInt64Flag); <span class="keywordflow">return</span> data_.n.i64; }</div>
-<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; uint64_t GetUint64()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(data_.f.flags &amp; kUint64Flag); <span class="keywordflow">return</span> data_.n.u64; }</div>
-<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;<span class="comment"> //! Get the value as double type.</span></div>
-<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;<span class="comment"></span><span class="comment"> /*! \note If the value is 64-bit integer type, it may lose precision. Use \c IsLosslessDouble() to check whether the converison is lossless.</span></div>
-<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01711"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aa059dee923cc0446752e321ff70936a6"> 1711</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classrapidjson_1_1_generic_value.html#aa059dee923cc0446752e321ff70936a6">GetDouble</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsNumber());</div>
-<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; <span class="keywordflow">if</span> ((data_.f.flags &amp; kDoubleFlag) != 0) <span class="keywordflow">return</span> data_.n.d; <span class="comment">// exact type, no conversion.</span></div>
-<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="keywordflow">if</span> ((data_.f.flags &amp; kIntFlag) != 0) <span class="keywordflow">return</span> data_.n.i.i; <span class="comment">// int -&gt; double</span></div>
-<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; <span class="keywordflow">if</span> ((data_.f.flags &amp; kUintFlag) != 0) <span class="keywordflow">return</span> data_.n.u.u; <span class="comment">// unsigned -&gt; double</span></div>
-<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; <span class="keywordflow">if</span> ((data_.f.flags &amp; kInt64Flag) != 0) <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(data_.n.i64); <span class="comment">// int64_t -&gt; double (may lose precision)</span></div>
-<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>((data_.f.flags &amp; kUint64Flag) != 0); <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(data_.n.u64); <span class="comment">// uint64_t -&gt; double (may lose precision)</span></div>
-<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; }</div>
-<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;<span class="comment"> //! Get the value as float type.</span></div>
-<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;<span class="comment"></span><span class="comment"> /*! \note If the value is 64-bit integer type, it may lose precision. Use \c IsLosslessFloat() to check whether the converison is lossless.</span></div>
-<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01723"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a0eda9834f241e5c5b23161a7ee33758b"> 1723</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a0eda9834f241e5c5b23161a7ee33758b">GetFloat</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(GetDouble());</div>
-<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; }</div>
-<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;</div>
-<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; SetInt(<span class="keywordtype">int</span> i) { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(i); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; GenericValue&amp; SetUint(<span class="keywordtype">unsigned</span> u) { this-&gt;~GenericValue(); <span class="keyword">new</span> (<span class="keyword">this</span>) GenericValue(u); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; GenericValue&amp; SetInt64(int64_t i64) { this-&gt;~GenericValue(); <span class="keyword">new</span> (<span class="keyword">this</span>) GenericValue(i64); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; GenericValue&amp; SetUint64(uint64_t u64) { this-&gt;~GenericValue(); <span class="keyword">new</span> (<span class="keyword">this</span>) GenericValue(u64); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; GenericValue&amp; SetDouble(<span class="keywordtype">double</span> d) { this-&gt;~GenericValue(); <span class="keyword">new</span> (<span class="keyword">this</span>) GenericValue(d); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; GenericValue&amp; SetFloat(<span class="keywordtype">float</span> f) { this-&gt;~GenericValue(); <span class="keyword">new</span> (<span class="keyword">this</span>) GenericValue(static_cast&lt;double&gt;(f)); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;<span class="comment"> //!@name String</span></div>
-<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; <span class="keyword">const</span> Ch* GetString()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsString()); <span class="keywordflow">return</span> (data_.f.flags &amp; kInlineStrFlag) ? data_.ss.str : GetStringPointer(); }</div>
-<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;<span class="comment"> //! Get the length of string.</span></div>
-<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;<span class="comment"></span><span class="comment"> /*! Since rapidjson permits &quot;\\u0000&quot; in the json string, strlen(v.GetString()) may not equal to v.GetStringLength().</span></div>
-<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01744"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8"> 1744</a></span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8">GetStringLength</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsString()); <span class="keywordflow">return</span> ((data_.f.flags &amp; kInlineStrFlag) ? (data_.ss.GetLength()) : data_.s.length); }</div>
-<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;<span class="comment"> //! Set this value as a string without copying source string.</span></div>
-<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;<span class="comment"></span><span class="comment"> /*! This version has better performance with supplied length, and also support string containing null character.</span></div>
-<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;<span class="comment"> \param s source string pointer. </span></div>
-<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;<span class="comment"> \param length The length of source string, excluding the trailing null terminator.</span></div>
-<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;<span class="comment"> \post IsString() == true &amp;&amp; GetString() == s &amp;&amp; GetStringLength() == length</span></div>
-<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;<span class="comment"> \see SetString(StringRefType)</span></div>
-<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01754"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f"> 1754</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f">SetString</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>* s, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length) { <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f">SetString</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s, length)); }</div>
-<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;<span class="comment"> //! Set this value as a string without copying source string.</span></div>
-<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;<span class="comment"></span><span class="comment"> /*! \param s source string reference</span></div>
-<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;<span class="comment"> \post IsString() == true &amp;&amp; GetString() == s &amp;&amp; GetStringLength() == s.length</span></div>
-<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01761"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aabb538578a3c1e60c86cda32d062bc1c"> 1761</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#aabb538578a3c1e60c86cda32d062bc1c">SetString</a>(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> s) { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); SetStringRaw(s); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;<span class="comment"> //! Set this value as a string by copying from source string.</span></div>
-<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;<span class="comment"></span><span class="comment"> /*! This version has better performance with supplied length, and also support string containing null character.</span></div>
-<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;<span class="comment"> \param s source string. </span></div>
-<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;<span class="comment"> \param length The length of source string, excluding the trailing null terminator.</span></div>
-<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;<span class="comment"> \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;<span class="comment"> \post IsString() == true &amp;&amp; GetString() != s &amp;&amp; strcmp(GetString(),s) == 0 &amp;&amp; GetStringLength() == length</span></div>
-<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01771"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ae6351043ec30d8a151b0a072cfbc46d5"> 1771</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#ae6351043ec30d8a151b0a072cfbc46d5">SetString</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>* s, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) { <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_value.html#ae6351043ec30d8a151b0a072cfbc46d5">SetString</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s, length), allocator); }</div>
-<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160;<span class="comment"> //! Set this value as a string by copying from source string.</span></div>
-<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;<span class="comment"></span><span class="comment"> /*! \param s source string. </span></div>
-<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;<span class="comment"> \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160;<span class="comment"> \post IsString() == true &amp;&amp; GetString() != s &amp;&amp; strcmp(GetString(),s) == 0 &amp;&amp; GetStringLength() == length</span></div>
-<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01779"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ab4babf200cac2dacb412a3ea279ddf5b"> 1779</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#ab4babf200cac2dacb412a3ea279ddf5b">SetString</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>* s, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) { <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_value.html#ab4babf200cac2dacb412a3ea279ddf5b">SetString</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s), allocator); }</div>
-<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160;<span class="comment"> //! Set this value as a string by copying from source string.</span></div>
-<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;<span class="comment"></span><span class="comment"> /*! \param s source string reference</span></div>
-<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160;<span class="comment"> \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160;<span class="comment"> \post IsString() == true &amp;&amp; GetString() != s.s &amp;&amp; strcmp(GetString(),s) == 0 &amp;&amp; GetStringLength() == length</span></div>
-<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01787"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a9ba3d9d8a106d5b7e92fb49db897c21b"> 1787</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a9ba3d9d8a106d5b7e92fb49db897c21b">SetString</a>(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> s, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); SetStringRaw(s, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;</div>
-<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;<span class="comment"> //! Set this value as a string by copying from source string.</span></div>
-<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;<span class="comment"></span><span class="comment"> /*! \param s source string.</span></div>
-<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;<span class="comment"> \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().</span></div>
-<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div>
-<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;<span class="comment"> \post IsString() == true &amp;&amp; GetString() != s.data() &amp;&amp; strcmp(GetString(),s.data() == 0 &amp;&amp; GetStringLength() == s.size()</span></div>
-<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;<span class="comment"> \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING.</span></div>
-<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01797"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a3e930bffb40a78e570e3deef461f0532"> 1797</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a3e930bffb40a78e570e3deef461f0532">SetString</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; s, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; allocator) { <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a3e930bffb40a78e570e3deef461f0532">SetString</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s), allocator); }</div>
-<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160;<span class="comment"> //!@name Array</span></div>
-<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;<span class="comment"> //! Templated version for checking whether this value is type T.</span></div>
-<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;<span class="comment"> \tparam T Either \c bool, \c int, \c unsigned, \c int64_t, \c uint64_t, \c double, \c float, \c const \c char*, \c std::basic_string&lt;Ch&gt;</span></div>
-<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01810"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ade8d1ca2b8e8afa02cde46e26866440b"> 1810</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#ade8d1ca2b8e8afa02cde46e26866440b">Is</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> internal::TypeHelper&lt;ValueType, T&gt;::Is(*<span class="keyword">this</span>); }</div>
-<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160;</div>
-<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; T Get()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> internal::TypeHelper&lt;ValueType, T&gt;::Get(*<span class="keyword">this</span>); }</div>
-<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;</div>
-<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; T Get() { <span class="keywordflow">return</span> internal::TypeHelper&lt;ValueType, T&gt;::Get(*<span class="keyword">this</span>); }</div>
-<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;</div>
-<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; ValueType&amp; Set(<span class="keyword">const</span> T&amp; data) { <span class="keywordflow">return</span> internal::TypeHelper&lt;ValueType, T&gt;::Set(*<span class="keyword">this</span>, data); }</div>
-<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;</div>
-<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; ValueType&amp; Set(<span class="keyword">const</span> T&amp; data, AllocatorType&amp; allocator) { <span class="keywordflow">return</span> internal::TypeHelper&lt;ValueType, T&gt;::Set(*<span class="keyword">this</span>, data, allocator); }</div>
-<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;<span class="comment"> //! Generate events of this value to a Handler.</span></div>
-<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;<span class="comment"></span><span class="comment"> /*! This function adopts the GoF visitor pattern.</span></div>
-<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160;<span class="comment"> Typical usage is to output this JSON value as JSON text via Writer, which is a Handler.</span></div>
-<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;<span class="comment"> It can also be used to deep clone this value via GenericDocument, which is also a Handler.</span></div>
-<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;<span class="comment"> \tparam Handler type of handler.</span></div>
-<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;<span class="comment"> \param handler An object implementing concept Handler.</span></div>
-<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><a name="l01834"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e"> 1834</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e">Accept</a>(<a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; <span class="keywordflow">switch</span>(GetType()) {</div>
-<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">kNullType</a>: <span class="keywordflow">return</span> handler.Null();</div>
-<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">kFalseType</a>: <span class="keywordflow">return</span> handler.Bool(<span class="keyword">false</span>);</div>
-<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">kTrueType</a>: <span class="keywordflow">return</span> handler.Bool(<span class="keyword">true</span>);</div>
-<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;</div>
-<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>:</div>
-<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.StartObject()))</div>
-<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> m = MemberBegin(); m != MemberEnd(); ++m) {</div>
-<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(m-&gt;name.IsString()); <span class="comment">// User may change the type of name by MemberIterator.</span></div>
-<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.Key(m-&gt;name.GetString(), m-&gt;name.GetStringLength(), (m-&gt;name.data_.f.flags &amp; kCopyFlag) != 0)))</div>
-<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!m-&gt;value.Accept(handler)))</div>
-<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; }</div>
-<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; <span class="keywordflow">return</span> handler.EndObject(data_.o.size);</div>
-<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160;</div>
-<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>:</div>
-<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.StartArray()))</div>
-<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* v = Begin(); v != End(); ++v)</div>
-<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!v-&gt;Accept(handler)))</div>
-<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; <span class="keywordflow">return</span> handler.EndArray(data_.a.size);</div>
-<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; </div>
-<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>:</div>
-<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; <span class="keywordflow">return</span> handler.String(GetString(), GetStringLength(), (data_.f.flags &amp; kCopyFlag) != 0);</div>
-<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; </div>
-<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(GetType() == <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>);</div>
-<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; <span class="keywordflow">if</span> (IsDouble()) <span class="keywordflow">return</span> handler.Double(data_.n.d);</div>
-<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (IsInt()) <span class="keywordflow">return</span> handler.Int(data_.n.i.i);</div>
-<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (IsUint()) <span class="keywordflow">return</span> handler.Uint(data_.n.u.u);</div>
-<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (IsInt64()) <span class="keywordflow">return</span> handler.Int64(data_.n.i64);</div>
-<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">return</span> handler.Uint64(data_.n.u64);</div>
-<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; }</div>
-<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; }</div>
-<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;</div>
-<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>&gt; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>;</div>
-<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>, <span class="keyword">typename</span>&gt; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>;</div>
-<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;</div>
-<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; <span class="keyword">enum</span> {</div>
-<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; kBoolFlag = 0x0008,</div>
-<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; kNumberFlag = 0x0010,</div>
-<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160; kIntFlag = 0x0020,</div>
-<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; kUintFlag = 0x0040,</div>
-<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; kInt64Flag = 0x0080,</div>
-<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; kUint64Flag = 0x0100,</div>
-<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; kDoubleFlag = 0x0200,</div>
-<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; kStringFlag = 0x0400,</div>
-<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; kCopyFlag = 0x0800,</div>
-<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; kInlineStrFlag = 0x1000,</div>
-<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;</div>
-<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; <span class="comment">// Initial flags of different types.</span></div>
-<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; kNullFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">kNullType</a>,</div>
-<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; kTrueFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">kTrueType</a> | kBoolFlag,</div>
-<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160; kFalseFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">kFalseType</a> | kBoolFlag,</div>
-<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; kNumberIntFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a> | kNumberFlag | kIntFlag | kInt64Flag,</div>
-<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; kNumberUintFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a> | kNumberFlag | kUintFlag | kUint64Flag | kInt64Flag,</div>
-<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; kNumberInt64Flag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a> | kNumberFlag | kInt64Flag,</div>
-<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; kNumberUint64Flag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a> | kNumberFlag | kUint64Flag,</div>
-<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; kNumberDoubleFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a> | kNumberFlag | kDoubleFlag,</div>
-<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; kNumberAnyFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a> | kNumberFlag | kIntFlag | kInt64Flag | kUintFlag | kUint64Flag | kDoubleFlag,</div>
-<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; kConstStringFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a> | kStringFlag,</div>
-<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; kCopyStringFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a> | kStringFlag | kCopyFlag,</div>
-<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; kShortStringFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a> | kStringFlag | kCopyFlag | kInlineStrFlag,</div>
-<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; kObjectFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>,</div>
-<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; kArrayFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>,</div>
-<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160;</div>
-<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; kTypeMask = 0x07</div>
-<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; };</div>
-<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;</div>
-<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> kDefaultArrayCapacity = 16;</div>
-<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> kDefaultObjectCapacity = 16;</div>
-<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160;</div>
-<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; <span class="keyword">struct </span>Flag {</div>
-<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160;<span class="preprocessor">#if RAPIDJSON_48BITPOINTER_OPTIMIZATION</span></div>
-<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; <span class="keywordtype">char</span> payload[<span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) * 2 + 6]; <span class="comment">// 2 x SizeType + lower 48-bit pointer</span></div>
-<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;<span class="preprocessor">#elif RAPIDJSON_64BIT</span></div>
-<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; <span class="keywordtype">char</span> payload[<span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) * 2 + <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*) + 6]; <span class="comment">// 6 padding bytes</span></div>
-<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; <span class="keywordtype">char</span> payload[<span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) * 2 + <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*) + 2]; <span class="comment">// 2 padding bytes</span></div>
-<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; uint16_t flags;</div>
-<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; };</div>
-<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160;</div>
-<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; <span class="keyword">struct </span>String {</div>
-<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length;</div>
-<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> hashcode; <span class="comment">//!&lt; reserved</span></div>
-<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160;<span class="comment"></span> <span class="keyword">const</span> Ch* str;</div>
-<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; }; <span class="comment">// 12 bytes in 32-bit mode, 16 bytes in 64-bit mode</span></div>
-<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160;</div>
-<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; <span class="comment">// implementation detail: ShortString can represent zero-terminated strings up to MaxSize chars</span></div>
-<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; <span class="comment">// (excluding the terminating zero) and store a value to determine the length of the contained</span></div>
-<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; <span class="comment">// string in the last character str[LenPos] by storing &quot;MaxSize - length&quot; there. If the string</span></div>
-<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; <span class="comment">// to store has the maximal length of MaxSize then str[LenPos] will be 0 and therefore act as</span></div>
-<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; <span class="comment">// the string terminator as well. For getting the string length back from that value just use</span></div>
-<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; <span class="comment">// &quot;MaxSize - str[LenPos]&quot;.</span></div>
-<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; <span class="comment">// This allows to store 13-chars strings in 32-bit mode, 21-chars strings in 64-bit mode,</span></div>
-<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; <span class="comment">// 13-chars strings for RAPIDJSON_48BITPOINTER_OPTIMIZATION=1 inline (for `UTF8`-encoded strings).</span></div>
-<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160; <span class="keyword">struct </span>ShortString {</div>
-<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; <span class="keyword">enum</span> { MaxChars = <span class="keyword">sizeof</span>(<span class="keyword">static_cast&lt;</span>Flag*<span class="keyword">&gt;</span>(0)-&gt;payload) / <span class="keyword">sizeof</span>(Ch), MaxSize = MaxChars - 1, LenPos = MaxSize };</div>
-<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; Ch str[MaxChars];</div>
-<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160;</div>
-<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> Usable(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len) { <span class="keywordflow">return</span> (MaxSize &gt;= len); }</div>
-<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> SetLength(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len) { str[LenPos] = <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(MaxSize - len); }</div>
-<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; <span class="keyword">inline</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> GetLength()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(MaxSize - str[LenPos]); }</div>
-<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; }; <span class="comment">// at most as many bytes as &quot;String&quot; above =&gt; 12 bytes in 32-bit mode, 16 bytes in 64-bit mode</span></div>
-<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;</div>
-<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; <span class="comment">// By using proper binary layout, retrieval of different integer types do not need conversions.</span></div>
-<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; <span class="keyword">union </span>Number {</div>
-<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160;<span class="preprocessor">#if RAPIDJSON_ENDIAN == RAPIDJSON_LITTLEENDIAN</span></div>
-<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; <span class="keyword">struct </span>I {</div>
-<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160; <span class="keywordtype">char</span> padding[4];</div>
-<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; }i;</div>
-<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; <span class="keyword">struct </span>U {</div>
-<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; <span class="keywordtype">unsigned</span> u;</div>
-<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; <span class="keywordtype">char</span> padding2[4];</div>
-<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; }u;</div>
-<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l01957"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_value_1_1_number_1_1_i.html"> 1957</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_value_1_1_number_1_1_i.html">I</a> {</div>
-<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; <span class="keywordtype">char</span> padding[4];</div>
-<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; }i;</div>
-<div class="line"><a name="l01961"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_value_1_1_number_1_1_u.html"> 1961</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_value_1_1_number_1_1_u.html">U</a> {</div>
-<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160; <span class="keywordtype">char</span> padding2[4];</div>
-<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; <span class="keywordtype">unsigned</span> u;</div>
-<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; }u;</div>
-<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; int64_t i64;</div>
-<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; uint64_t u64;</div>
-<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; <span class="keywordtype">double</span> d;</div>
-<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; }; <span class="comment">// 8 bytes</span></div>
-<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160;</div>
-<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; <span class="keyword">struct </span>ObjectData {</div>
-<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> size;</div>
-<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> capacity;</div>
-<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; <a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>* members;</div>
-<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; }; <span class="comment">// 12 bytes in 32-bit mode, 16 bytes in 64-bit mode</span></div>
-<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160;</div>
-<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; <span class="keyword">struct </span>ArrayData {</div>
-<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> size;</div>
-<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> capacity;</div>
-<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* elements;</div>
-<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; }; <span class="comment">// 12 bytes in 32-bit mode, 16 bytes in 64-bit mode</span></div>
-<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;</div>
-<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; <span class="keyword">union </span>Data {</div>
-<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; String s;</div>
-<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; ShortString ss;</div>
-<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; Number n;</div>
-<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; ObjectData o;</div>
-<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160; ArrayData a;</div>
-<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160; Flag f;</div>
-<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160; }; <span class="comment">// 16 bytes in 32-bit mode, 24 bytes in 64-bit mode, 16 bytes in 64-bit with RAPIDJSON_48BITPOINTER_OPTIMIZATION</span></div>
-<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160;</div>
-<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; RAPIDJSON_FORCEINLINE <span class="keyword">const</span> Ch* GetStringPointer()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RAPIDJSON_GETPOINTER(Ch, data_.s.str); }</div>
-<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160; RAPIDJSON_FORCEINLINE <span class="keyword">const</span> Ch* SetStringPointer(<span class="keyword">const</span> Ch* str) { <span class="keywordflow">return</span> RAPIDJSON_SETPOINTER(Ch, data_.s.str, str); }</div>
-<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160; RAPIDJSON_FORCEINLINE GenericValue* GetElementsPointer()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RAPIDJSON_GETPOINTER(GenericValue, data_.a.elements); }</div>
-<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; RAPIDJSON_FORCEINLINE GenericValue* SetElementsPointer(GenericValue* elements) { <span class="keywordflow">return</span> RAPIDJSON_SETPOINTER(GenericValue, data_.a.elements, elements); }</div>
-<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; RAPIDJSON_FORCEINLINE Member* GetMembersPointer()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RAPIDJSON_GETPOINTER(Member, data_.o.members); }</div>
-<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; RAPIDJSON_FORCEINLINE Member* SetMembersPointer(Member* members) { <span class="keywordflow">return</span> RAPIDJSON_SETPOINTER(Member, data_.o.members, members); }</div>
-<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160;</div>
-<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160; <span class="comment">// Initialize this value as array with initial data, without calling destructor.</span></div>
-<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; <span class="keywordtype">void</span> SetArrayRaw(GenericValue* values, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count, Allocator&amp; allocator) {</div>
-<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; data_.f.flags = kArrayFlag;</div>
-<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; <span class="keywordflow">if</span> (count) {</div>
-<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; GenericValue* e = <span class="keyword">static_cast&lt;</span>GenericValue*<span class="keyword">&gt;</span>(allocator.Malloc(count * <span class="keyword">sizeof</span>(GenericValue)));</div>
-<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; SetElementsPointer(e);</div>
-<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160; std::memcpy(e, values, count * <span class="keyword">sizeof</span>(GenericValue));</div>
-<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160; }</div>
-<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; SetElementsPointer(0);</div>
-<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160; data_.a.size = data_.a.capacity = count;</div>
-<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; }</div>
-<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;<span class="comment"> //! Initialize this value as object with initial data, without calling destructor.</span></div>
-<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> SetObjectRaw(Member* members, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count, Allocator&amp; allocator) {</div>
-<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; data_.f.flags = kObjectFlag;</div>
-<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160; <span class="keywordflow">if</span> (count) {</div>
-<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160; Member* m = <span class="keyword">static_cast&lt;</span>Member*<span class="keyword">&gt;</span>(allocator.Malloc(count * <span class="keyword">sizeof</span>(Member)));</div>
-<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160; SetMembersPointer(m);</div>
-<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160; std::memcpy(m, members, count * <span class="keyword">sizeof</span>(Member));</div>
-<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; }</div>
-<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160; SetMembersPointer(0);</div>
-<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160; data_.o.size = data_.o.capacity = count;</div>
-<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160; }</div>
-<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160;<span class="comment"> //! Initialize this value as constant string, without calling destructor.</span></div>
-<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> SetStringRaw(StringRefType s) RAPIDJSON_NOEXCEPT {</div>
-<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; data_.f.flags = kConstStringFlag;</div>
-<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160; SetStringPointer(s);</div>
-<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160; data_.s.length = s.length;</div>
-<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160; }</div>
-<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160;<span class="comment"> //! Initialize this value as copy string with initial data, without calling destructor.</span></div>
-<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> SetStringRaw(StringRefType s, Allocator&amp; allocator) {</div>
-<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160; Ch* str = 0;</div>
-<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160; <span class="keywordflow">if</span> (ShortString::Usable(s.length)) {</div>
-<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; data_.f.flags = kShortStringFlag;</div>
-<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160; data_.ss.SetLength(s.length);</div>
-<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; str = data_.ss.str;</div>
-<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160; } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160; data_.f.flags = kCopyStringFlag;</div>
-<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160; data_.s.length = s.length;</div>
-<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160; str = <span class="keyword">static_cast&lt;</span>Ch *<span class="keyword">&gt;</span>(allocator.Malloc((s.length + 1) * <span class="keyword">sizeof</span>(Ch)));</div>
-<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160; SetStringPointer(str);</div>
-<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160; }</div>
-<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; std::memcpy(str, s, s.length * <span class="keyword">sizeof</span>(Ch));</div>
-<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; str[s.length] = <span class="charliteral">&#39;\0&#39;</span>;</div>
-<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; }</div>
-<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160;<span class="comment"> //! Assignment without calling destructor</span></div>
-<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> RawAssign(GenericValue&amp; rhs) RAPIDJSON_NOEXCEPT {</div>
-<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160; data_ = rhs.data_;</div>
-<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160; <span class="comment">// data_.f.flags = rhs.data_.f.flags;</span></div>
-<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160; rhs.data_.f.flags = kNullFlag;</div>
-<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; }</div>
-<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160;</div>
-<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div>
-<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; <span class="keywordtype">bool</span> StringEqual(<span class="keyword">const</span> GenericValue&lt;Encoding, SourceAllocator&gt;&amp; rhs)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsString());</div>
-<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(rhs.IsString());</div>
-<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160;</div>
-<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len1 = GetStringLength();</div>
-<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len2 = rhs.GetStringLength();</div>
-<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; <span class="keywordflow">if</span>(len1 != len2) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div>
-<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160;</div>
-<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; <span class="keyword">const</span> Ch* <span class="keyword">const</span> str1 = GetString();</div>
-<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; <span class="keyword">const</span> Ch* <span class="keyword">const</span> str2 = rhs.GetString();</div>
-<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160; <span class="keywordflow">if</span>(str1 == str2) { <span class="keywordflow">return</span> <span class="keyword">true</span>; } <span class="comment">// fast path for constant string</span></div>
-<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160;</div>
-<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; <span class="keywordflow">return</span> (std::memcmp(str1, str2, <span class="keyword">sizeof</span>(Ch) * len1) == 0);</div>
-<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; }</div>
-<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;</div>
-<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160; Data data_;</div>
-<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;};</div>
-<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;<span class="comment">//! GenericValue with UTF8 encoding</span></div>
-<div class="line"><a name="l02076"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505"> 2076</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;UTF8&lt;&gt;</a> &gt; <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>;</div>
-<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160;<span class="comment"></span><span class="comment">// GenericDocument </span></div>
-<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160;<span class="comment">//! A document for parsing JSON text as DOM.</span></div>
-<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;<span class="comment"> \note implements Handler concept</span></div>
-<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160;<span class="comment"> \tparam Encoding Encoding for both parsing and string storage.</span></div>
-<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160;<span class="comment"> \tparam Allocator Allocator for allocating memory for the DOM</span></div>
-<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;<span class="comment"> \tparam StackAllocator Allocator for allocating memory for stack during parsing.</span></div>
-<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;<span class="comment"> \warning Although GenericDocument inherits from GenericValue, the API does \b not provide any virtual functions, especially no virtual destructor. To avoid memory leaks, do not \c delete a GenericDocument object via a pointer to a GenericValue.</span></div>
-<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator = MemoryPoolAllocator&lt;&gt;, <span class="keyword">typename</span> StackAllocator = CrtAllocator&gt;</div>
-<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> : <span class="keyword">public</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt;Encoding, Allocator&gt; {</div>
-<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l02092"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a8367a827588dd91d02e21ef945bec9f5"> 2092</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch <a class="code" href="classrapidjson_1_1_generic_document.html#a8367a827588dd91d02e21ef945bec9f5">Ch</a>; <span class="comment">//!&lt; Character type derived from Encoding.</span></div>
-<div class="line"><a name="l02093"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a41bbec044c421e870a9d355075d741bc"> 2093</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, Allocator&gt;</a> <a class="code" href="classrapidjson_1_1_generic_document.html#a41bbec044c421e870a9d355075d741bc">ValueType</a>; <span class="comment">//!&lt; Value type of the document.</span></div>
-<div class="line"><a name="l02094"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a4c85243a28c9dcf2d1357da00fcaa773"> 2094</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a> <a class="code" href="classrapidjson_1_1_generic_document.html#a4c85243a28c9dcf2d1357da00fcaa773">AllocatorType</a>; <span class="comment">//!&lt; Allocator type from template parameter.</span></div>
-<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160;<span class="comment"> //! Constructor</span></div>
-<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;<span class="comment"></span><span class="comment"> /*! Creates an empty document of specified type.</span></div>
-<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160;<span class="comment"> \param type Mandatory type of object to create.</span></div>
-<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160;<span class="comment"> \param allocator Optional allocator for allocating memory.</span></div>
-<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160;<span class="comment"> \param stackCapacity Optional initial capacity of stack in bytes.</span></div>
-<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;<span class="comment"> \param stackAllocator Optional allocator for allocating memory for stack.</span></div>
-<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l02103"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#aa52c3016961f25ecd989d82839bce4e5"> 2103</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_document.html#aa52c3016961f25ecd989d82839bce4e5">GenericDocument</a>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0, <span class="keywordtype">size_t</span> stackCapacity = kDefaultStackCapacity, StackAllocator* stackAllocator = 0) :</div>
-<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt;<a class="code" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&gt;(type), allocator_(allocator), ownAllocator_(0), stack_(stackAllocator, stackCapacity), parseResult_()</div>
-<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160; {</div>
-<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; <span class="keywordflow">if</span> (!allocator_)</div>
-<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; ownAllocator_ = allocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(<a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>)();</div>
-<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; }</div>
-<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160;<span class="comment"> //! Constructor</span></div>
-<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160;<span class="comment"></span><span class="comment"> /*! Creates an empty document which type is Null. </span></div>
-<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160;<span class="comment"> \param allocator Optional allocator for allocating memory.</span></div>
-<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160;<span class="comment"> \param stackCapacity Optional initial capacity of stack in bytes.</span></div>
-<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160;<span class="comment"> \param stackAllocator Optional allocator for allocating memory for stack.</span></div>
-<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l02116"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a82b27e7b228eb46a23f99720063ab4fb"> 2116</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html#a82b27e7b228eb46a23f99720063ab4fb">GenericDocument</a>(<a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0, <span class="keywordtype">size_t</span> stackCapacity = kDefaultStackCapacity, StackAllocator* stackAllocator = 0) : </div>
-<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160; allocator_(allocator), ownAllocator_(0), stack_(stackAllocator, stackCapacity), parseResult_()</div>
-<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160; {</div>
-<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; <span class="keywordflow">if</span> (!allocator_)</div>
-<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; ownAllocator_ = allocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(<a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>)();</div>
-<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160; }</div>
-<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160;</div>
-<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160;<span class="comment"> //! Move constructor in C++11</span></div>
-<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp;&amp; rhs) RAPIDJSON_NOEXCEPT</div>
-<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160; : ValueType(std::forward&lt;ValueType&gt;(rhs)), <span class="comment">// explicit cast to avoid prohibited move from Document</span></div>
-<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; allocator_(rhs.allocator_),</div>
-<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160; ownAllocator_(rhs.ownAllocator_),</div>
-<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; stack_(std::move(rhs.stack_)),</div>
-<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160; parseResult_(rhs.parseResult_)</div>
-<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160; {</div>
-<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160; rhs.allocator_ = 0;</div>
-<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; rhs.ownAllocator_ = 0;</div>
-<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160; rhs.parseResult_ = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a>();</div>
-<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160; }</div>
-<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;</div>
-<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; ~GenericDocument() {</div>
-<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160; Destroy();</div>
-<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; }</div>
-<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160;</div>
-<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;<span class="comment"> //! Move assignment in C++11</span></div>
-<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160;<span class="comment"></span> GenericDocument&amp; operator=(GenericDocument&amp;&amp; rhs) RAPIDJSON_NOEXCEPT</div>
-<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; {</div>
-<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160; <span class="comment">// The cast to ValueType is necessary here, because otherwise it would</span></div>
-<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; <span class="comment">// attempt to call GenericValue&#39;s templated assignment operator.</span></div>
-<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160; ValueType::operator=(std::forward&lt;ValueType&gt;(rhs));</div>
-<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160;</div>
-<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; <span class="comment">// Calling the destructor here would prematurely call stack_&#39;s destructor</span></div>
-<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; Destroy();</div>
-<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160;</div>
-<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160; allocator_ = rhs.allocator_;</div>
-<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160; ownAllocator_ = rhs.ownAllocator_;</div>
-<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160; stack_ = std::move(rhs.stack_);</div>
-<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160; parseResult_ = rhs.parseResult_;</div>
-<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160;</div>
-<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; rhs.allocator_ = 0;</div>
-<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; rhs.ownAllocator_ = 0;</div>
-<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; rhs.parseResult_ = ParseResult();</div>
-<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160;</div>
-<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; }</div>
-<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160;<span class="comment"> //! Exchange the contents of this document with those of another.</span></div>
-<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160;<span class="comment"> \param rhs Another document.</span></div>
-<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160;<span class="comment"> \note Constant complexity.</span></div>
-<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160;<span class="comment"> \see GenericValue::Swap</span></div>
-<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l02172"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#abf1cbab989b856f9d260787b2575750b"> 2172</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#abf1cbab989b856f9d260787b2575750b">Swap</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; rhs) RAPIDJSON_NOEXCEPT {</div>
-<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; ValueType::Swap(rhs);</div>
-<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; stack_.Swap(rhs.stack_);</div>
-<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; internal::Swap(allocator_, rhs.allocator_);</div>
-<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160; internal::Swap(ownAllocator_, rhs.ownAllocator_);</div>
-<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; internal::Swap(parseResult_, rhs.parseResult_);</div>
-<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; }</div>
-<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160;<span class="comment"> //! free-standing swap function helper</span></div>
-<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160;<span class="comment"> Helper function to enable support for common swap implementation pattern based on \c std::swap:</span></div>
-<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160;<span class="comment"> \code</span></div>
-<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160;<span class="comment"> void swap(MyClass&amp; a, MyClass&amp; b) {</span></div>
-<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160;<span class="comment"> using std::swap;</span></div>
-<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;<span class="comment"> swap(a.doc, b.doc);</span></div>
-<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160;<span class="comment"> // ...</span></div>
-<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160;<span class="comment"> }</span></div>
-<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160;<span class="comment"> \endcode</span></div>
-<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160;<span class="comment"> \see Swap()</span></div>
-<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l02193"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a0d63efcc43758ac3aed77e868233369d"> 2193</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_document.html#a0d63efcc43758ac3aed77e868233369d">swap</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; a, <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; b) RAPIDJSON_NOEXCEPT { a.Swap(b); }</div>
-<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160;<span class="comment"> //! Populate this document by a generator which produces SAX events.</span></div>
-<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam Generator A functor with &lt;tt&gt;bool f(Handler)&lt;/tt&gt; prototype.</span></div>
-<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160;<span class="comment"> \param g Generator functor which sends SAX events to the parameter.</span></div>
-<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160;<span class="comment"> \return The document itself for fluent API.</span></div>
-<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Generator&gt;</div>
-<div class="line"><a name="l02201"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a63e18887979da500ece6f0bd10d29b64"> 2201</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a63e18887979da500ece6f0bd10d29b64">Populate</a>(Generator&amp; g) {</div>
-<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160; ClearStackOnExit scope(*<span class="keyword">this</span>);</div>
-<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160; <span class="keywordflow">if</span> (g(*<span class="keyword">this</span>)) {</div>
-<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(stack_.GetSize() == <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_value.html">ValueType</a>)); <span class="comment">// Got one and only one root object</span></div>
-<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160; ValueType::operator=(*stack_.template Pop&lt;ValueType&gt;(1));<span class="comment">// Move value from stack to document</span></div>
-<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160; }</div>
-<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160; }</div>
-<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160;<span class="comment"> //!@name Parse from stream</span></div>
-<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160;<span class="comment"> //!@{</span></div>
-<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160;<span class="comment"> //! Parse JSON text from an input stream (with Encoding conversion)</span></div>
-<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam parseFlags Combination of \ref ParseFlag.</span></div>
-<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160;<span class="comment"> \tparam SourceEncoding Encoding of input stream</span></div>
-<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;<span class="comment"> \tparam InputStream Type of input stream, implementing Stream concept</span></div>
-<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160;<span class="comment"> \param is Input stream to be parsed.</span></div>
-<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;<span class="comment"> \return The document itself for fluent API.</span></div>
-<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l02221"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85"> 2221</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">ParseStream</a>(InputStream&amp; is) {</div>
-<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160; <a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader&lt;SourceEncoding, Encoding, StackAllocator&gt;</a> reader(</div>
-<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160; stack_.HasAllocator() ? &amp;stack_.GetAllocator() : 0);</div>
-<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160; ClearStackOnExit scope(*<span class="keyword">this</span>);</div>
-<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160; parseResult_ = reader.template Parse&lt;parseFlags&gt;(is, *<span class="keyword">this</span>);</div>
-<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160; <span class="keywordflow">if</span> (parseResult_) {</div>
-<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(stack_.GetSize() == <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_value.html">ValueType</a>)); <span class="comment">// Got one and only one root object</span></div>
-<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160; ValueType::operator=(*stack_.template Pop&lt;ValueType&gt;(1));<span class="comment">// Move value from stack to document</span></div>
-<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160; }</div>
-<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160; }</div>
-<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160;<span class="comment"> //! Parse JSON text from an input stream</span></div>
-<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam parseFlags Combination of \ref ParseFlag.</span></div>
-<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160;<span class="comment"> \tparam InputStream Type of input stream, implementing Stream concept</span></div>
-<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160;<span class="comment"> \param is Input stream to be parsed.</span></div>
-<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160;<span class="comment"> \return The document itself for fluent API.</span></div>
-<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l02240"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#ae4ee7d86b8c906c83dbe15e57eb6ac6a"> 2240</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#ae4ee7d86b8c906c83dbe15e57eb6ac6a">ParseStream</a>(InputStream&amp; is) {</div>
-<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160; <span class="keywordflow">return</span> ParseStream&lt;parseFlags, Encoding, InputStream&gt;(is);</div>
-<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160; }</div>
-<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160;<span class="comment"> //! Parse JSON text from an input stream (with \ref kParseDefaultFlags)</span></div>
-<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam InputStream Type of input stream, implementing Stream concept</span></div>
-<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160;<span class="comment"> \param is Input stream to be parsed.</span></div>
-<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160;<span class="comment"> \return The document itself for fluent API.</span></div>
-<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l02250"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#acf96a3c7fd61486d049c701b1fe5d414"> 2250</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#acf96a3c7fd61486d049c701b1fe5d414">ParseStream</a>(InputStream&amp; is) {</div>
-<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160; <span class="keywordflow">return</span> ParseStream&lt;kParseDefaultFlags, Encoding, InputStream&gt;(is);</div>
-<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160; }<span class="comment"></span></div>
-<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160;<span class="comment"> //!@}</span></div>
-<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160;<span class="comment"> //!@name Parse in-place from mutable string</span></div>
-<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160;<span class="comment"> //!@{</span></div>
-<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160;<span class="comment"> //! Parse JSON text from a mutable string</span></div>
-<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam parseFlags Combination of \ref ParseFlag.</span></div>
-<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160;<span class="comment"> \param str Mutable zero-terminated string to be parsed.</span></div>
-<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160;<span class="comment"> \return The document itself for fluent API.</span></div>
-<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags&gt;</div>
-<div class="line"><a name="l02264"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a7ba626bf84eb45a9bca0b7723bf47f3f"> 2264</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a7ba626bf84eb45a9bca0b7723bf47f3f">ParseInsitu</a>(<a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>* str) {</div>
-<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160; <a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream&lt;Encoding&gt;</a> s(str);</div>
-<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160; <span class="keywordflow">return</span> ParseStream&lt;parseFlags | kParseInsituFlag&gt;(s);</div>
-<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160; }</div>
-<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160;<span class="comment"> //! Parse JSON text from a mutable string (with \ref kParseDefaultFlags)</span></div>
-<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160;<span class="comment"></span><span class="comment"> /*! \param str Mutable zero-terminated string to be parsed.</span></div>
-<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160;<span class="comment"> \return The document itself for fluent API.</span></div>
-<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l02273"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#af061c039a990c2970dc31e5626149367"> 2273</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#af061c039a990c2970dc31e5626149367">ParseInsitu</a>(<a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>* str) {</div>
-<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160; <span class="keywordflow">return</span> ParseInsitu&lt;kParseDefaultFlags&gt;(str);</div>
-<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160; }<span class="comment"></span></div>
-<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160;<span class="comment"> //!@}</span></div>
-<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160;<span class="comment"> //!@name Parse from read-only string</span></div>
-<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160;<span class="comment"> //!@{</span></div>
-<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160;<span class="comment"> //! Parse JSON text from a read-only string (with Encoding conversion)</span></div>
-<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam parseFlags Combination of \ref ParseFlag (must not contain \ref kParseInsituFlag).</span></div>
-<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160;<span class="comment"> \tparam SourceEncoding Transcoding from input Encoding</span></div>
-<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160;<span class="comment"> \param str Read-only zero-terminated string to be parsed.</span></div>
-<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> SourceEncoding&gt;</div>
-<div class="line"><a name="l02287"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c"> 2287</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">Parse</a>(<span class="keyword">const</span> <span class="keyword">typename</span> SourceEncoding::Ch* str) {</div>
-<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!(parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea">kParseInsituFlag</a>));</div>
-<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160; <a class="code" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream&lt;SourceEncoding&gt;</a> s(str);</div>
-<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160; <span class="keywordflow">return</span> ParseStream&lt;parseFlags, SourceEncoding&gt;(s);</div>
-<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160; }</div>
-<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160;<span class="comment"> //! Parse JSON text from a read-only string</span></div>
-<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam parseFlags Combination of \ref ParseFlag (must not contain \ref kParseInsituFlag).</span></div>
-<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160;<span class="comment"> \param str Read-only zero-terminated string to be parsed.</span></div>
-<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags&gt;</div>
-<div class="line"><a name="l02298"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a42c35e2f64c288f14b74fec2792500c8"> 2298</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a42c35e2f64c288f14b74fec2792500c8">Parse</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>* str) {</div>
-<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160; <span class="keywordflow">return</span> Parse&lt;parseFlags, Encoding&gt;(str);</div>
-<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160; }</div>
-<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160;<span class="comment"> //! Parse JSON text from a read-only string (with \ref kParseDefaultFlags)</span></div>
-<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160;<span class="comment"></span><span class="comment"> /*! \param str Read-only zero-terminated string to be parsed.</span></div>
-<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l02305"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#ab031375318d133f83a114314b75703de"> 2305</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#ab031375318d133f83a114314b75703de">Parse</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>* str) {</div>
-<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160; <span class="keywordflow">return</span> Parse&lt;kParseDefaultFlags&gt;(str);</div>
-<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160; }</div>
-<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160;</div>
-<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> SourceEncoding&gt;</div>
-<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; Parse(<span class="keyword">const</span> <span class="keyword">typename</span> SourceEncoding::Ch* str, <span class="keywordtype">size_t</span> length) {</div>
-<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!(parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea">kParseInsituFlag</a>));</div>
-<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160; <a class="code" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a> ms(reinterpret_cast&lt;const char*&gt;(str), length * <span class="keyword">sizeof</span>(<span class="keyword">typename</span> SourceEncoding::Ch));</div>
-<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream&lt;SourceEncoding, MemoryStream&gt;</a> is(ms);</div>
-<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160; ParseStream&lt;parseFlags, SourceEncoding&gt;(is);</div>
-<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160; }</div>
-<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160;</div>
-<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags&gt;</div>
-<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160; GenericDocument&amp; Parse(<span class="keyword">const</span> Ch* str, <span class="keywordtype">size_t</span> length) {</div>
-<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160; <span class="keywordflow">return</span> Parse&lt;parseFlags, Encoding&gt;(str, length);</div>
-<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160; }</div>
-<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160; </div>
-<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160; GenericDocument&amp; Parse(<span class="keyword">const</span> Ch* str, <span class="keywordtype">size_t</span> length) {</div>
-<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160; <span class="keywordflow">return</span> Parse&lt;kParseDefaultFlags&gt;(str, length);</div>
-<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160; }</div>
-<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160;</div>
-<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> SourceEncoding&gt;</div>
-<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160; GenericDocument&amp; Parse(<span class="keyword">const</span> std::basic_string&lt;typename SourceEncoding::Ch&gt;&amp; str) {</div>
-<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160; <span class="comment">// c_str() is constant complexity according to standard. Should be faster than Parse(const char*, size_t)</span></div>
-<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160; <span class="keywordflow">return</span> Parse&lt;parseFlags, SourceEncoding&gt;(str.c_str());</div>
-<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160; }</div>
-<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160;</div>
-<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags&gt;</div>
-<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160; GenericDocument&amp; Parse(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; str) {</div>
-<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160; <span class="keywordflow">return</span> Parse&lt;parseFlags, Encoding&gt;(str.c_str());</div>
-<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160; }</div>
-<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160;</div>
-<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160; GenericDocument&amp; Parse(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; str) {</div>
-<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160; <span class="keywordflow">return</span> Parse&lt;kParseDefaultFlags&gt;(str);</div>
-<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160; }</div>
-<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_STDSTRING </span></div>
-<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160;<span class="comment"> //!@}</span></div>
-<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160;<span class="comment"> //!@name Handling parse errors</span></div>
-<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160;<span class="comment"> //!@{</span></div>
-<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160;<span class="comment"> //! Whether a parse error has occured in the last parsing.</span></div>
-<div class="line"><a name="l02350"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a2ab17089bd6249bf2a7959d56d35cb68"> 2350</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_document.html#a2ab17089bd6249bf2a7959d56d35cb68">HasParseError</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_.IsError(); }</div>
-<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160;<span class="comment"> //! Get the \ref ParseErrorCode of last parsing.</span></div>
-<div class="line"><a name="l02353"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#ad97e64c123ec1e07ea62ab0a9ce80c00"> 2353</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> <a class="code" href="classrapidjson_1_1_generic_document.html#ad97e64c123ec1e07ea62ab0a9ce80c00">GetParseError</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_.Code(); }</div>
-<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160;<span class="comment"> //! Get the position of last parsing error in input, 0 otherwise.</span></div>
-<div class="line"><a name="l02356"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#ab791c05727d83f6834a1b916783dbc06"> 2356</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_generic_document.html#ab791c05727d83f6834a1b916783dbc06">GetErrorOffset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_.Offset(); }</div>
-<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160;<span class="comment"> //! Implicit conversion to get the last parse result</span></div>
-<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160;<span class="comment"></span><span class="preprocessor">#ifndef __clang // -Wdocumentation</span></div>
-<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160;<span class="comment"> /*! \return \ref ParseResult of the last parse operation</span></div>
-<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160;<span class="comment"> \code</span></div>
-<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160;<span class="comment"> Document doc;</span></div>
-<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160;<span class="comment"> ParseResult ok = doc.Parse(json);</span></div>
-<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160;<span class="comment"> if (!ok)</span></div>
-<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160;<span class="comment"> printf( &quot;JSON parse error: %s (%u)\n&quot;, GetParseError_En(ok.Code()), ok.Offset());</span></div>
-<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160;<span class="comment"> \endcode</span></div>
-<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02370"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a0de48f0c884423b6fcfabc2e93942968"> 2370</a></span>&#160; <span class="keyword">operator</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_; }<span class="comment"></span></div>
-<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160;<span class="comment"> //!@}</span></div>
-<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160;<span class="comment"> //! Get the allocator of this document.</span></div>
-<div class="line"><a name="l02374"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f"> 2374</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>() {</div>
-<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(allocator_);</div>
-<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160; <span class="keywordflow">return</span> *allocator_;</div>
-<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160; }</div>
-<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160;<span class="comment"> //! Get the capacity of stack in bytes.</span></div>
-<div class="line"><a name="l02380"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#ac785c064649dea6cfa67207b6bda748e"> 2380</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_generic_document.html#ac785c064649dea6cfa67207b6bda748e">GetStackCapacity</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stack_.GetCapacity(); }</div>
-<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160;</div>
-<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160; <span class="comment">// clear stack on any exit from ParseStream, e.g. due to exception</span></div>
-<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160; <span class="keyword">struct </span>ClearStackOnExit {</div>
-<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160; <span class="keyword">explicit</span> ClearStackOnExit(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; d) : d_(d) {}</div>
-<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160; ~ClearStackOnExit() { d_.ClearStack(); }</div>
-<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160; ClearStackOnExit(<span class="keyword">const</span> ClearStackOnExit&amp;);</div>
-<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160; ClearStackOnExit&amp; operator=(<span class="keyword">const</span> ClearStackOnExit&amp;);</div>
-<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160; GenericDocument&amp; d_;</div>
-<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160; };</div>
-<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160;</div>
-<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160; <span class="comment">// callers of the following private Handler functions</span></div>
-<div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160; <span class="comment">// template &lt;typename,typename,typename&gt; friend class GenericReader; // for parsing</span></div>
-<div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>&gt; <span class="keyword">friend</span> <span class="keyword">class </span>GenericValue; <span class="comment">// for deep copying</span></div>
-<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160;</div>
-<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160; <span class="comment">// Implementation of Handler</span></div>
-<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160; <span class="keywordtype">bool</span> Null() { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160; <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b) { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(b); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160; <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i) { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(i); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160; <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> i) { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(i); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160; <span class="keywordtype">bool</span> Int64(int64_t i) { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(i); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160; <span class="keywordtype">bool</span> Uint64(uint64_t i) { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(i); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160; <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span> d) { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(d); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160;</div>
-<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160; <span class="keywordtype">bool</span> RawNumber(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy) { </div>
-<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160; <span class="keywordflow">if</span> (copy) </div>
-<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160; <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(str, length, GetAllocator());</div>
-<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160; <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(str, length);</div>
-<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160; }</div>
-<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160;</div>
-<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy) { </div>
-<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160; <span class="keywordflow">if</span> (copy) </div>
-<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160; <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(str, length, GetAllocator());</div>
-<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160; <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(str, length);</div>
-<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160; }</div>
-<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160;</div>
-<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160; <span class="keywordtype">bool</span> StartObject() { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160; </div>
-<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy) { <span class="keywordflow">return</span> String(str, length, copy); }</div>
-<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160;</div>
-<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160; <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount) {</div>
-<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160; <span class="keyword">typename</span> ValueType::Member* members = stack_.template Pop&lt;typename ValueType::Member&gt;(memberCount);</div>
-<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160; stack_.template Top&lt;ValueType&gt;()-&gt;SetObjectRaw(members, memberCount, GetAllocator());</div>
-<div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160; }</div>
-<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160;</div>
-<div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160; <span class="keywordtype">bool</span> StartArray() { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160; </div>
-<div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160; <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount) {</div>
-<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160; ValueType* elements = stack_.template Pop&lt;ValueType&gt;(elementCount);</div>
-<div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160; stack_.template Top&lt;ValueType&gt;()-&gt;SetArrayRaw(elements, elementCount, GetAllocator());</div>
-<div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160; }</div>
-<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160;</div>
-<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160;<span class="keyword">private</span>:<span class="comment"></span></div>
-<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160;<span class="comment"> //! Prohibit copying</span></div>
-<div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160;<span class="comment"></span> GenericDocument(<span class="keyword">const</span> GenericDocument&amp;);<span class="comment"></span></div>
-<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160;<span class="comment"> //! Prohibit assignment</span></div>
-<div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160;<span class="comment"></span> GenericDocument&amp; operator=(<span class="keyword">const</span> GenericDocument&amp;);</div>
-<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160;</div>
-<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160; <span class="keywordtype">void</span> ClearStack() {</div>
-<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160; <span class="keywordflow">if</span> (Allocator::kNeedFree)</div>
-<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160; <span class="keywordflow">while</span> (stack_.GetSize() &gt; 0) <span class="comment">// Here assumes all elements in stack array are GenericValue (Member is actually 2 GenericValue objects)</span></div>
-<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160; (stack_.template Pop&lt;ValueType&gt;(1))-&gt;~ValueType();</div>
-<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160; stack_.Clear();</div>
-<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160; stack_.ShrinkToFit();</div>
-<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160; }</div>
-<div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160;</div>
-<div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160; <span class="keywordtype">void</span> Destroy() {</div>
-<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160; <a class="code" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a>(ownAllocator_);</div>
-<div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160; }</div>
-<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160;</div>
-<div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultStackCapacity = 1024;</div>
-<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160; Allocator* allocator_;</div>
-<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160; Allocator* ownAllocator_;</div>
-<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160; internal::Stack&lt;StackAllocator&gt; stack_;</div>
-<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160; ParseResult parseResult_;</div>
-<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160;};</div>
-<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160;<span class="comment">//! GenericDocument with UTF8 encoding</span></div>
-<div class="line"><a name="l02468"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8"> 2468</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;UTF8&lt;&gt;</a> &gt; <a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a>;</div>
-<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160;<span class="comment">//! Helper class for accessing Value of array type.</span></div>
-<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160;<span class="comment"> Instance of this helper class is obtained by \c GenericValue::GetArray().</span></div>
-<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160;<span class="comment"> In addition to all APIs for array type, it provides range-based for loop if \c RAPIDJSON_HAS_CXX11_RANGE_FOR=1.</span></div>
-<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Const, <span class="keyword">typename</span> ValueT&gt;</div>
-<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a> {</div>
-<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray&lt;true, ValueT&gt;</a> ConstArray;</div>
-<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray&lt;false, ValueT&gt;</a> Array;</div>
-<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160; <span class="keyword">typedef</span> ValueT PlainType;</div>
-<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">internal::MaybeAddConst&lt;Const,PlainType&gt;::Type</a> ValueType;</div>
-<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160; <span class="keyword">typedef</span> ValueType* ValueIterator; <span class="comment">// This may be const or non-const iterator</span></div>
-<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160; <span class="keyword">typedef</span> <span class="keyword">const</span> ValueT* ConstValueIterator;</div>
-<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::AllocatorType AllocatorType;</div>
-<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::StringRefType StringRefType;</div>
-<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160;</div>
-<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>&gt;</div>
-<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>;</div>
-<div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160;</div>
-<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&amp; rhs) : value_(rhs.value_) {}</div>
-<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&amp; rhs) { value_ = rhs.value_; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160; ~<a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>() {}</div>
-<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160;</div>
-<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> Size()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.Size(); }</div>
-<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> Capacity()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.Capacity(); }</div>
-<div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160; <span class="keywordtype">bool</span> Empty()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.Empty(); }</div>
-<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160; <span class="keywordtype">void</span> Clear()<span class="keyword"> const </span>{ value_.Clear(); }</div>
-<div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160; ValueType&amp; operator[](<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_[index]; }</div>
-<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160; ValueIterator Begin()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.Begin(); }</div>
-<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160; ValueIterator End()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.End(); }</div>
-<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a> Reserve(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> newCapacity, AllocatorType &amp;allocator)<span class="keyword"> const </span>{ value_.Reserve(newCapacity, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a> PushBack(ValueType&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.PushBack(value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a> PushBack(ValueType&amp;&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.PushBack(value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a> PushBack(StringRefType value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.PushBack(value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&amp;)) PushBack(T value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.PushBack(value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a> PopBack()<span class="keyword"> const </span>{ value_.PopBack(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160; ValueIterator Erase(ConstValueIterator pos)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.Erase(pos); }</div>
-<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160; ValueIterator Erase(ConstValueIterator first, ConstValueIterator last)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.Erase(first, last); }</div>
-<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160;</div>
-<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RANGE_FOR</span></div>
-<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160; ValueIterator begin()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.Begin(); }</div>
-<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160; ValueIterator end()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.End(); }</div>
-<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160;</div>
-<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>();</div>
-<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>(ValueType&amp; value) : value_(value) {}</div>
-<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160; ValueType&amp; value_;</div>
-<div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160;};</div>
-<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160;<span class="comment">//! Helper class for accessing Value of object type.</span></div>
-<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160;<span class="comment"> Instance of this helper class is obtained by \c GenericValue::GetObject().</span></div>
-<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160;<span class="comment"> In addition to all APIs for array type, it provides range-based for loop if \c RAPIDJSON_HAS_CXX11_RANGE_FOR=1.</span></div>
-<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Const, <span class="keyword">typename</span> ValueT&gt;</div>
-<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160;<span class="keyword">class </span>GenericObject {</div>
-<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160; <span class="keyword">typedef</span> GenericObject&lt;true, ValueT&gt; ConstObject;</div>
-<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160; <span class="keyword">typedef</span> GenericObject&lt;false, ValueT&gt; Object;</div>
-<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160; <span class="keyword">typedef</span> ValueT PlainType;</div>
-<div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">internal::MaybeAddConst&lt;Const,PlainType&gt;::Type</a> ValueType;</div>
-<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160; <span class="keyword">typedef</span> GenericMemberIterator&lt;Const, typename ValueT::EncodingType, typename ValueT::AllocatorType&gt; MemberIterator; <span class="comment">// This may be const or non-const iterator</span></div>
-<div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160; <span class="keyword">typedef</span> GenericMemberIterator&lt;true, typename ValueT::EncodingType, typename ValueT::AllocatorType&gt; ConstMemberIterator;</div>
-<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::AllocatorType AllocatorType;</div>
-<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::StringRefType StringRefType;</div>
-<div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::EncodingType EncodingType;</div>
-<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::Ch Ch;</div>
-<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160;</div>
-<div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>&gt;</div>
-<div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span>GenericValue;</div>
-<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160;</div>
-<div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160; GenericObject(<span class="keyword">const</span> GenericObject&amp; rhs) : value_(rhs.value_) {}</div>
-<div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160; GenericObject&amp; operator=(<span class="keyword">const</span> GenericObject&amp; rhs) { value_ = rhs.value_; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160; ~GenericObject() {}</div>
-<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160;</div>
-<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> MemberCount()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.MemberCount(); }</div>
-<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160; <span class="keywordtype">bool</span> ObjectEmpty()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.ObjectEmpty(); }</div>
-<div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; ValueType&amp; operator[](T* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_[name]; }</div>
-<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt; ValueType&amp; operator[](<span class="keyword">const</span> GenericValue&lt;EncodingType, SourceAllocator&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_[name]; }</div>
-<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160; ValueType&amp; operator[](<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_[name]; }</div>
-<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160; MemberIterator MemberBegin()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.MemberBegin(); }</div>
-<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160; MemberIterator MemberEnd()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.MemberEnd(); }</div>
-<div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160; <span class="keywordtype">bool</span> HasMember(<span class="keyword">const</span> Ch* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.HasMember(name); }</div>
-<div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160; <span class="keywordtype">bool</span> HasMember(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.HasMember(name); }</div>
-<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt; <span class="keywordtype">bool</span> HasMember(<span class="keyword">const</span> GenericValue&lt;EncodingType, SourceAllocator&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.HasMember(name); }</div>
-<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160; MemberIterator FindMember(<span class="keyword">const</span> Ch* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.FindMember(name); }</div>
-<div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt; MemberIterator FindMember(<span class="keyword">const</span> GenericValue&lt;EncodingType, SourceAllocator&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.FindMember(name); }</div>
-<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160; MemberIterator FindMember(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.FindMember(name); }</div>
-<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160; GenericObject AddMember(ValueType&amp; name, ValueType&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160; GenericObject AddMember(ValueType&amp; name, StringRefType value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160; GenericObject AddMember(ValueType&amp; name, std::basic_string&lt;Ch&gt;&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (ValueType&amp;)) AddMember(ValueType&amp; name, T value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160; GenericObject AddMember(ValueType&amp;&amp; name, ValueType&amp;&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160; GenericObject AddMember(ValueType&amp;&amp; name, ValueType&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160; GenericObject AddMember(ValueType&amp; name, ValueType&amp;&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160; GenericObject AddMember(StringRefType name, ValueType&amp;&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160; GenericObject AddMember(StringRefType name, ValueType&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160; GenericObject AddMember(StringRefType name, StringRefType value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (GenericObject)) AddMember(StringRefType name, T value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
-<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160; <span class="keywordtype">void</span> RemoveAllMembers() { value_.RemoveAllMembers(); }</div>
-<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160; <span class="keywordtype">bool</span> RemoveMember(<span class="keyword">const</span> Ch* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.RemoveMember(name); }</div>
-<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160; <span class="keywordtype">bool</span> RemoveMember(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.RemoveMember(name); }</div>
-<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt; <span class="keywordtype">bool</span> RemoveMember(<span class="keyword">const</span> GenericValue&lt;EncodingType, SourceAllocator&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.RemoveMember(name); }</div>
-<div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160; MemberIterator RemoveMember(MemberIterator m)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.RemoveMember(m); }</div>
-<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160; MemberIterator EraseMember(ConstMemberIterator pos)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.EraseMember(pos); }</div>
-<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160; MemberIterator EraseMember(ConstMemberIterator first, ConstMemberIterator last)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.EraseMember(first, last); }</div>
-<div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160; <span class="keywordtype">bool</span> EraseMember(<span class="keyword">const</span> Ch* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.EraseMember(name); }</div>
-<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160; <span class="keywordtype">bool</span> EraseMember(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> EraseMember(ValueType(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name))); }</div>
-<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt; <span class="keywordtype">bool</span> EraseMember(<span class="keyword">const</span> GenericValue&lt;EncodingType, SourceAllocator&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.EraseMember(name); }</div>
-<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160;</div>
-<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RANGE_FOR</span></div>
-<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160; MemberIterator begin()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.MemberBegin(); }</div>
-<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160; MemberIterator end()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.MemberEnd(); }</div>
-<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160;</div>
-<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160; GenericObject();</div>
-<div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160; GenericObject(ValueType&amp; value) : value_(value) {}</div>
-<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160; ValueType&amp; value_;</div>
-<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160;};</div>
-<div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160;</div>
-<div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160;<span class="preprocessor">#ifdef _MINWINDEF_ // see: http://stackoverflow.com/questions/22744262/cant-call-stdmax-because-minwindef-h-defines-max</span></div>
-<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160;<span class="preprocessor">#ifndef NOMINMAX</span></div>
-<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160;<span class="preprocessor">#pragma pop_macro(&quot;min&quot;)</span></div>
-<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160;<span class="preprocessor">#pragma pop_macro(&quot;max&quot;)</span></div>
-<div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160;</div>
-<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_DOCUMENT_H_</span></div>
-<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_a41b953d6523fdc09f4f21c7b345e5833"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">rapidjson::GenericMemberIterator::DifferenceType</a></div><div class="ttdeci">BaseType::difference_type DifferenceType</div><div class="ttdoc">Signed integer type (e.g. ptrdiff_t) </div><div class="ttdef"><b>Definition:</b> document.h:133</div></div>
+<a href="document_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_DOCUMENT_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_DOCUMENT_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">/*! \file document.h */</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="reader_8h.html">reader.h</a>&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;internal/meta.h&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;internal/strfunc.h&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;memorystream.h&quot;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;encodedstream.h&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;new&gt;</span> <span class="comment">// placement new</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;RAPIDJSON_DIAG_OFF(4127) <span class="comment">// conditional expression is constant</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;RAPIDJSON_DIAG_OFF(4244) <span class="comment">// conversion from kXxxFlags to &#39;uint16_t&#39;, possible loss of data</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#ifdef _MINWINDEF_ // see: http://stackoverflow.com/questions/22744262/cant-call-stdmax-because-minwindef-h-defines-max</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#ifndef NOMINMAX</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#pragma push_macro(&quot;min&quot;)</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#pragma push_macro(&quot;max&quot;)</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#undef min</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#undef max</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;RAPIDJSON_DIAG_OFF(<span class="keywordflow">switch</span>-<span class="keyword">enum</span>)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;RAPIDJSON_DIAG_OFF(c++98-compat)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#if __GNUC__ &gt;= 6</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;RAPIDJSON_DIAG_OFF(terminate) <span class="comment">// ignore throwing RAPIDJSON_ASSERT in RAPIDJSON_NOEXCEPT functions</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#endif // __GNUC__</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NOMEMBERITERATORCLASS</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span> <span class="comment">// std::iterator, std::random_access_iterator_tag</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// std::move</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html"> 67</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator, <span class="keyword">typename</span> StackAllocator&gt;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html"> 70</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment">//! Name-value pair in a JSON object value.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> This class was internal to GenericValue. It used to be a inner struct.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> But a compiler (IBM XL C/C++ for AIX) have reported to have problem with that so it moved as a namespace scope struct.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> https://code.google.com/p/rapidjson/issues/detail?id=64</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt; </div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_member.html"> 79</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_member.html">GenericMember</a> { </div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_member.html#ae820eaa74b415a9073f3f3855f6c6607"> 80</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, Allocator&gt;</a> <a class="code" href="structrapidjson_1_1_generic_member.html#ae820eaa74b415a9073f3f3855f6c6607">name</a>; <span class="comment">//!&lt; name of member (must be a string)</span></div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_member.html#a8ffff2076e62d988a070a136da6ffca6"> 81</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, Allocator&gt;</a> <a class="code" href="structrapidjson_1_1_generic_member.html#a8ffff2076e62d988a070a136da6ffca6">value</a>; <span class="comment">//!&lt; value of member.</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"></span>};</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"></span><span class="comment">// GenericMemberIterator</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NOMEMBERITERATORCLASS</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">//! (Constant) member iterator for a JSON object value</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> \tparam Const Is this a constant iterator?</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> \tparam Encoding Encoding of the value. (Even non-string values need to have the same encoding in a document)</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> \tparam Allocator Allocator type for allocating memory of object, array and string.</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> This class implements a Random Access Iterator for GenericMember elements</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> of a GenericValue, see ISO/IEC 14882:2003(E) C++ standard, 24.1 [lib.iterator.requirements].</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> \note This iterator implementation is mainly intended to avoid implicit</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> conversions from iterator values to \c NULL,</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> e.g. from GenericValue::FindMember.</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> \note Define \c RAPIDJSON_NOMEMBERITERATORCLASS to fall back to a</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> pointer-based implementation, if your platform doesn&#39;t provide</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> the C++ &lt;iterator&gt; header.</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> \see GenericMember, GenericValue::MemberIterator, GenericValue::ConstMemberIterator</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Const, <span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html"> 109</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; : <span class="keyword">public</span> std::iterator&lt;std::random_access_iterator_tag</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; , typename internal::MaybeAddConst&lt;Const,GenericMember&lt;Encoding,Allocator&gt; &gt;::Type&gt; {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt;Encoding,Allocator&gt;;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">bool</span>, <span class="keyword">typename</span>, <span class="keyword">typename</span>&gt; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_member.html">GenericMember&lt;Encoding,Allocator&gt;</a> <a class="code" href="structrapidjson_1_1_generic_member.html">PlainType</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">internal::MaybeAddConst&lt;Const,PlainType&gt;::Type</a> ValueType;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">typedef</span> std::iterator&lt;std::random_access_iterator_tag,ValueType&gt; BaseType;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> //! Iterator type itself</span></div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653"> 122</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">Iterator</a>;<span class="comment"></span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> //! Constant iterator type</span></div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc"> 124</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator&lt;true,Encoding,Allocator&gt;</a> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">ConstIterator</a>;<span class="comment"></span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> //! Non-constant iterator type</span></div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#a1a91868fa388664bb301061e3e24badb"> 126</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator&lt;false,Encoding,Allocator&gt;</a> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#a1a91868fa388664bb301061e3e24badb">NonConstIterator</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"> //! Pointer to (const) GenericMember</span></div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#a17955e32a06f667c672b270e6a4d2195"> 129</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> BaseType::pointer <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#a17955e32a06f667c672b270e6a4d2195">Pointer</a>;<span class="comment"></span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> //! Reference to (const) GenericMember</span></div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#a915a1b6f0a0bbe6a1df69571a789e348"> 131</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> BaseType::reference <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#a915a1b6f0a0bbe6a1df69571a789e348">Reference</a>;<span class="comment"></span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> //! Signed integer type (e.g. \c ptrdiff_t)</span></div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833"> 133</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> BaseType::difference_type <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">DifferenceType</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> //! Default constructor (singular value)</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"></span><span class="comment"> /*! Creates an iterator pointing to no element.</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"> \note All operations, except for comparisons, are undefined on such values.</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#ac920af483c9e31a6746c22acf0dffc50"> 139</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#ac920af483c9e31a6746c22acf0dffc50">GenericMemberIterator</a>() : ptr_() {}</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> //! Iterator conversions to more const</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> \param it (Non-const) iterator to copy from</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"> Allows the creation of an iterator from another GenericMemberIterator</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> that is &quot;less const&quot;. Especially, creating a non-constant iterator</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"> from a constant iterator are disabled:</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"> \li const -&gt; non-const (not ok)</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment"> \li const -&gt; const (ok)</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment"> \li non-const -&gt; const (ok)</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment"> \li non-const -&gt; non-const (ok)</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment"> \note If the \c Const template parameter is already \c false, this</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"> constructor effectively defines a regular copy-constructor.</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"> Otherwise, the copy constructor is implicitly defined.</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#aa30ffef74b3f4978b403024d81b484e4"> 157</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#aa30ffef74b3f4978b403024d81b484e4">GenericMemberIterator</a>(<span class="keyword">const</span> NonConstIterator &amp; it) : ptr_(it.ptr_) {}</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; Iterator&amp; operator=(<span class="keyword">const</span> NonConstIterator &amp; it) { ptr_ = it.ptr_; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"> //! @name stepping</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"></span> Iterator&amp; operator++(){ ++ptr_; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; Iterator&amp; operator--(){ --ptr_; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; Iterator operator++(<span class="keywordtype">int</span>){ Iterator old(*<span class="keyword">this</span>); ++ptr_; <span class="keywordflow">return</span> old; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; Iterator operator--(<span class="keywordtype">int</span>){ Iterator old(*<span class="keyword">this</span>); --ptr_; <span class="keywordflow">return</span> old; }<span class="comment"></span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"> //! @name increment/decrement</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"></span> Iterator operator+(DifferenceType n)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Iterator(ptr_+n); }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; Iterator operator-(DifferenceType n)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Iterator(ptr_-n); }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; Iterator&amp; operator+=(DifferenceType n) { ptr_+=n; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; Iterator&amp; operator-=(DifferenceType n) { ptr_-=n; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }<span class="comment"></span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"> //! @name relations</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> operator==(ConstIterator that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_ == that.ptr_; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordtype">bool</span> operator!=(ConstIterator that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_ != that.ptr_; }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordtype">bool</span> operator&lt;=(ConstIterator that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_ &lt;= that.ptr_; }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordtype">bool</span> operator&gt;=(ConstIterator that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_ &gt;= that.ptr_; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordtype">bool</span> operator&lt; (ConstIterator that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_ &lt; that.ptr_; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordtype">bool</span> operator&gt; (ConstIterator that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_ &gt; that.ptr_; }<span class="comment"></span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment"> //! @name dereference</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"></span> Reference operator*()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *ptr_; }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; Pointer operator-&gt;()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; Reference operator[](DifferenceType n)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_[n]; }<span class="comment"></span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> //! Distance</span></div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_member_iterator.html#abfad2c34a97f82178cbf9464e958e2c2"> 195</a></span>&#160;<span class="comment"></span> DifferenceType <a class="code" href="classrapidjson_1_1_generic_member_iterator.html#abfad2c34a97f82178cbf9464e958e2c2">operator-</a>(ConstIterator that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ptr_-that.ptr_; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keyword">private</span>:<span class="comment"></span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment"> //! Internal constructor from plain pointer</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>(Pointer p) : ptr_(p) {}</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; Pointer ptr_; <span class="comment">//!&lt; raw pointer</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"></span>};</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="preprocessor">#else // RAPIDJSON_NOMEMBERITERATORCLASS</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment">// class-based member iterator implementation disabled, use plain pointers</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Const, <span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="keyword">struct </span><a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment">//! non-const GenericMemberIterator</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="keyword">struct </span><a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>&lt;false,Encoding,Allocator&gt; {<span class="comment"></span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="comment"> //! use plain pointer as iterator type</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_member.html">GenericMember&lt;Encoding,Allocator&gt;</a>* <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">Iterator</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;};<span class="comment"></span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment">//! const GenericMemberIterator</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="comment"></span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="keyword">struct </span><a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>&lt;true,Encoding,Allocator&gt; {<span class="comment"></span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment"> //! use plain const pointer as iterator type</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_member.html">GenericMember&lt;Encoding,Allocator&gt;</a>* <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">Iterator</a>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;};</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_NOMEMBERITERATORCLASS</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment"></span><span class="comment">// GenericStringRef</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment">//! Reference to a constant string (not taking a copy)</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment"> \tparam CharType character type of the string</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment"> This helper class is used to automatically infer constant string</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment"> references for string literals, especially from \c const \b (!)</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment"> character arrays.</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"> The main use is for creating JSON string values without copying the</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment"> source string via an \ref Allocator. This requires that the referenced</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"> string pointers have a sufficient lifetime, which exceeds the lifetime</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment"> of the associated GenericValue.</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment"> \b Example</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment"> \code</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment"> Value v(&quot;foo&quot;); // ok, no need to copy &amp; calculate length</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment"> const char foo[] = &quot;foo&quot;;</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="comment"> v.SetString(foo); // ok</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment"> const char* bar = foo;</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="comment"> // Value x(bar); // not ok, can&#39;t rely on bar&#39;s lifetime</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment"> Value x(StringRef(bar)); // lifetime explicitly guaranteed by user</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="comment"> Value y(StringRef(bar, 3)); // ok, explicitly pass length</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment"> \endcode</span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> \see StringRef, GenericValue::SetString</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div><div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html"> 257</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a> {</div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html#aa2a8eccae3d7eb14c30bc21afb7d6fba"> 258</a></span>&#160; <span class="keyword">typedef</span> CharType <a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa2a8eccae3d7eb14c30bc21afb7d6fba">Ch</a>; <span class="comment">//!&lt; character type of the string</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment"> //! Create string reference from \c const character array</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment"></span><span class="preprocessor">#ifndef __clang__ // -Wdocumentation</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment"> /*!</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> This constructor implicitly creates a constant string reference from</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"> a \c const character array. It has better performance than</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"> \ref StringRef(const CharType*) by inferring the string \ref length</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"> from the array length, and also supports strings containing null</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"> characters.</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment"> \tparam N length of the string, automatically inferred</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment"> \param str Constant character array, lifetime assumed to be longer</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment"> than the use of the string in e.g. a GenericValue</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="comment"> \post \ref s == str</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="comment"> \note Constant complexity.</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="comment"> \note There is a hidden, private overload to disallow references to</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"> non-const character arrays to be created via this constructor.</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment"> By this, e.g. function-scope arrays used to be filled via</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment"> \c snprintf are excluded from consideration.</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="comment"> In such cases, the referenced string should be \b copied to the</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment"> GenericValue instead.</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keyword">template</span>&lt;SizeType N&gt;</div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html#acd4d5ebac2b610ce647356aa52998002"> 286</a></span>&#160; <a class="code" href="structrapidjson_1_1_generic_string_ref.html#acd4d5ebac2b610ce647356aa52998002">GenericStringRef</a>(<span class="keyword">const</span> CharType (&amp;str)[N]) RAPIDJSON_NOEXCEPT</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; : s(str), length(N-1) {}</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="comment"> //! Explicitly create string reference from \c const character pointer</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="comment"></span><span class="preprocessor">#ifndef __clang__ // -Wdocumentation</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="comment"> /*!</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="comment"> This constructor can be used to \b explicitly create a reference to</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="comment"> a constant string pointer.</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="comment"> \see StringRef(const CharType*)</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="comment"> \param str Constant character pointer, lifetime assumed to be longer</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="comment"> than the use of the string in e.g. a GenericValue</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment"> \post \ref s == str</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="comment"> \note There is a hidden, private overload to disallow references to</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="comment"> non-const character arrays to be created via this constructor.</span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="comment"> By this, e.g. function-scope arrays used to be filled via</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment"> \c snprintf are excluded from consideration.</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="comment"> In such cases, the referenced string should be \b copied to the</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="comment"> GenericValue instead.</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html#a29cf407c6aa2313f13dff78d6ce02687"> 310</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html#a29cf407c6aa2313f13dff78d6ce02687">GenericStringRef</a>(<span class="keyword">const</span> CharType* str)</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; : s(str), length(((<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(str != 0)), internal::StrLen(str))) {}</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="comment"> //! Create constant string reference from pointer and length</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="comment"></span><span class="preprocessor">#ifndef __clang__ // -Wdocumentation</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="comment"> /*! \param str constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue</span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="comment"> \param len length of the string, excluding the trailing NULL terminator</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="comment"> \post \ref s == str &amp;&amp; \ref length == len</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="comment"> \note Constant complexity.</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html#ad9eb120a58cee500ff3bd5706779c4e4"> 322</a></span>&#160; <a class="code" href="structrapidjson_1_1_generic_string_ref.html#ad9eb120a58cee500ff3bd5706779c4e4">GenericStringRef</a>(<span class="keyword">const</span> CharType* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len)</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; : s(<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(str) ? str : emptyString), length(len) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(str != 0 || len == 0u); }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>(<span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>&amp; rhs) : s(rhs.<a class="code" href="structrapidjson_1_1_generic_string_ref.html#a001276ee57cbcbd3c14449045c71e994">s</a>), length(rhs.<a class="code" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">length</a>) {}</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment"> //! implicit conversion to plain CharType pointer</span></div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html#a86d30bb594a41619a7a5ba6c8dcce2bd"> 328</a></span>&#160;<span class="comment"></span> <span class="keyword">operator</span> <span class="keyword">const</span> Ch *() <span class="keyword">const</span> { <span class="keywordflow">return</span> s; }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html#a001276ee57cbcbd3c14449045c71e994"> 330</a></span>&#160; <span class="keyword">const</span> Ch* <span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html#a001276ee57cbcbd3c14449045c71e994">s</a>; <span class="comment">//!&lt; plain CharType pointer</span></div><div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111"> 331</a></span>&#160;<span class="comment"></span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> <a class="code" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">length</a>; <span class="comment">//!&lt; length of the string (excluding the trailing NULL terminator)</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="keyword">private</span>:<span class="comment"></span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment"> /// Empty string - used when passing in a NULL pointer</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> Ch emptyString[];</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="comment"> //! Disallow construction from non-const array</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="comment"></span> <span class="keyword">template</span>&lt;SizeType N&gt;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>(CharType (&amp;str)[N]) <span class="comment">/* = delete */</span>;<span class="comment"></span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment"> //! Copy assignment operator not permitted - immutable type</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment"></span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>&amp; rhs) <span class="comment">/* = delete */</span>;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;};</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="keyword">const</span> CharType <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;CharType&gt;::emptyString</a>[] = { CharType() };</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="comment">//! Mark a character pointer as constant string</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="comment"></span><span class="comment">/*! Mark a plain character pointer as a &quot;string literal&quot;. This function</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="comment"> can be used to avoid copying a character string to be referenced as a</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="comment"> value in a JSON GenericValue object, if the string&#39;s lifetime is known</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="comment"> to be valid long enough.</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="comment"> \tparam CharType Character type of the string</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="comment"> \param str Constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="comment"> \return GenericStringRef string reference object</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="comment"> \relatesalso GenericStringRef</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="comment"> \see GenericValue::GenericValue(StringRefType), GenericValue::operator=(StringRefType), GenericValue::SetString(StringRefType), GenericValue::PushBack(StringRefType, Allocator&amp;), GenericValue::AddMember</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div><div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#aa6b9fd9f6aa49405a574c362ba9af6b5"> 360</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;CharType&gt;</a> <a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(<span class="keyword">const</span> CharType* str) {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;CharType&gt;</a>(str);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;}</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="comment">//! Mark a character pointer as constant string</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment"></span><span class="comment">/*! Mark a plain character pointer as a &quot;string literal&quot;. This function</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="comment"> can be used to avoid copying a character string to be referenced as a</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="comment"> value in a JSON GenericValue object, if the string&#39;s lifetime is known</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="comment"> to be valid long enough.</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="comment"> This version has better performance with supplied length, and also</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="comment"> supports string containing null characters.</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="comment"> \tparam CharType character type of the string</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="comment"> \param str Constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="comment"> \param length The length of source string.</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="comment"> \return GenericStringRef string reference object</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="comment"> \relatesalso GenericStringRef</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div><div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a578c51ab574a50a9c760b9da7c7562f2"> 380</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;CharType&gt;</a> <a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(<span class="keyword">const</span> CharType* str, <span class="keywordtype">size_t</span> length) {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;CharType&gt;</a>(str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(length));</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;}</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="comment">//! Mark a string object as constant string</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="comment"></span><span class="comment">/*! Mark a string object (e.g. \c std::string) as a &quot;string literal&quot;.</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="comment"> This function can be used to avoid copying a string to be referenced as a</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="comment"> value in a JSON GenericValue object, if the string&#39;s lifetime is known</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="comment"> to be valid long enough.</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="comment"> \tparam CharType character type of the string</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="comment"> \param str Constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="comment"> \return GenericStringRef string reference object</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment"> \relatesalso GenericStringRef</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="comment"> \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING.</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div><div class="line"><a name="l00398"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f"> 398</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;CharType&gt;</a> <a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(<span class="keyword">const</span> std::basic_string&lt;CharType&gt;&amp; str) {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">return</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;CharType&gt;</a>(str.data(), <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(str.size()));</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;}</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="comment"></span><span class="comment">// GenericValue type traits</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> Encoding = <span class="keywordtype">void</span>, <span class="keyword">typename</span> Allocator = <span class="keywordtype">void</span>&gt;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="keyword">struct </span>IsGenericValueImpl : FalseType {};</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="comment">// select candidates according to nested encoding and allocator types</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IsGenericValueImpl&lt;T, typename Void&lt;typename T::EncodingType&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a>, typename Void&lt;typename T::AllocatorType&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a>&gt;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; : IsBaseOf&lt;GenericValue&lt;typename T::EncodingType, typename T::AllocatorType&gt;, T&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="comment">// helper to match arbitrary GenericValue instantiations, including derived classes</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IsGenericValue : IsGenericValueImpl&lt;T&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="comment"></span><span class="comment">// TypeHelper</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueType, <span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="keyword">struct </span>TypeHelper {};</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, bool&gt; {</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsBool(); }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetBool(); }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">bool</span> data) { <span class="keywordflow">return</span> v.SetBool(data); }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">bool</span> data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v.SetBool(data); }</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;};</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, int&gt; {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsInt(); }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetInt(); }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">int</span> data) { <span class="keywordflow">return</span> v.SetInt(data); }</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">int</span> data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v.SetInt(data); }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;};</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, unsigned&gt; {</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsUint(); }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keyword">static</span> <span class="keywordtype">unsigned</span> Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetUint(); }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">unsigned</span> data) { <span class="keywordflow">return</span> v.SetUint(data); }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">unsigned</span> data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v.SetUint(data); }</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;};</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, int64_t&gt; {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsInt64(); }</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keyword">static</span> int64_t Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetInt64(); }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, int64_t data) { <span class="keywordflow">return</span> v.SetInt64(data); }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, int64_t data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v.SetInt64(data); }</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;};</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, uint64_t&gt; {</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsUint64(); }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keyword">static</span> uint64_t Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetUint64(); }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, uint64_t data) { <span class="keywordflow">return</span> v.SetUint64(data); }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, uint64_t data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v.SetUint64(data); }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;};</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, double&gt; {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsDouble(); }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetDouble(); }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">double</span> data) { <span class="keywordflow">return</span> v.SetDouble(data); }</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">double</span> data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v.SetDouble(data); }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;};</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, float&gt; {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsFloat(); }</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keyword">static</span> <span class="keywordtype">float</span> Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetFloat(); }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">float</span> data) { <span class="keywordflow">return</span> v.SetFloat(data); }</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keywordtype">float</span> data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v.SetFloat(data); }</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;};</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, const typename ValueType::Ch*&gt; {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keyword">typename</span> ValueType::Ch* StringType;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsString(); }</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keyword">static</span> StringType Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetString(); }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keyword">const</span> StringType data) { <span class="keywordflow">return</span> v.SetString(<span class="keyword">typename</span> ValueType::StringRefType(data)); }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keyword">const</span> StringType data, <span class="keyword">typename</span> ValueType::AllocatorType&amp; a) { <span class="keywordflow">return</span> v.SetString(data, a); }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;};</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, std::basic_string&lt;typename ValueType::Ch&gt; &gt; {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keyword">typedef</span> std::basic_string&lt;typename ValueType::Ch&gt; StringType;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsString(); }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keyword">static</span> StringType Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> StringType(v.GetString(), v.GetStringLength()); }</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, <span class="keyword">const</span> StringType&amp; data, <span class="keyword">typename</span> ValueType::AllocatorType&amp; a) { <span class="keywordflow">return</span> v.SetString(data, a); }</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;};</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, typename ValueType::Array&gt; {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::Array ArrayType;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsArray(); }</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keyword">static</span> ArrayType Get(ValueType&amp; v) { <span class="keywordflow">return</span> v.GetArray(); }</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, ArrayType data) { <span class="keywordflow">return</span> v = data; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, ArrayType data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v = data; }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;};</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, typename ValueType::ConstArray&gt; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::ConstArray ArrayType;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsArray(); }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keyword">static</span> ArrayType Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetArray(); }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;};</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, typename ValueType::Object&gt; {</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::Object ObjectType;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsObject(); }</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keyword">static</span> ObjectType Get(ValueType&amp; v) { <span class="keywordflow">return</span> v.GetObject(); }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, ObjectType data) { <span class="keywordflow">return</span> v = data; }</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keyword">static</span> ValueType&amp; Set(ValueType&amp; v, ObjectType data, <span class="keyword">typename</span> ValueType::AllocatorType&amp;) { <span class="keywordflow">return</span> v = data; }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;};</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> ValueType&gt; </div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="keyword">struct </span>TypeHelper&lt;ValueType, typename ValueType::ConstObject&gt; {</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::ConstObject ObjectType;</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Is(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.IsObject(); }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keyword">static</span> ObjectType Get(<span class="keyword">const</span> ValueType&amp; v) { <span class="keywordflow">return</span> v.GetObject(); }</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;};</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="comment">// Forward declarations</span></div><div class="line"><a name="l00537"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_array.html"> 537</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span>, <span class="keyword">typename</span>&gt; <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>;</div><div class="line"><a name="l00538"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_object.html"> 538</a></span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span>, <span class="keyword">typename</span>&gt; <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="comment"></span><span class="comment">// GenericValue</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="comment">//! Represents a JSON value. Use Value for UTF8 encoding and default allocator.</span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="comment"> A JSON value can be one of 7 types. This class is a variant type supporting</span></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="comment"> these types.</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="comment"> Use the Value if UTF8 and default allocator</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="comment"> \tparam Encoding Encoding of the value. (Even non-string values need to have the same encoding in a document)</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<span class="comment"> \tparam Allocator Allocator type for allocating memory of object, array and string.</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator = MemoryPoolAllocator&lt;&gt; &gt; </div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;<span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="comment"> //! Name-value pair in an object.</span></div><div class="line"><a name="l00557"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a0220ddebe2f023fa75b643a50e90e559"> 557</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_member.html">GenericMember&lt;Encoding, Allocator&gt;</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a0220ddebe2f023fa75b643a50e90e559">Member</a>;</div><div class="line"><a name="l00558"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a05906384808645a2e798d29a9b2d441d"> 558</a></span>&#160; <span class="keyword">typedef</span> Encoding <a class="code" href="classrapidjson_1_1_generic_value.html#a05906384808645a2e798d29a9b2d441d">EncodingType</a>; <span class="comment">//!&lt; Encoding type from template parameter.</span></div><div class="line"><a name="l00559"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a5d47340c96346c5028fee4c9068d783d"> 559</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> Allocator <a class="code" href="classrapidjson_1_1_generic_value.html#a5d47340c96346c5028fee4c9068d783d">AllocatorType</a>; <span class="comment">//!&lt; Allocator type from template parameter.</span></div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4"> 560</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch <a class="code" href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">Ch</a>; <span class="comment">//!&lt; Character type derived from Encoding.</span></div><div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379"> 561</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;Ch&gt;</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">StringRefType</a>; <span class="comment">//!&lt; Reference to a constant string</span></div><div class="line"><a name="l00562"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b"> 562</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator&lt;false,Encoding,Allocator&gt;::Iterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">MemberIterator</a>; <span class="comment">//!&lt; Member iterator for iterating in object.</span></div><div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f"> 563</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator&lt;true,Encoding,Allocator&gt;::Iterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">ConstMemberIterator</a>; <span class="comment">//!&lt; Constant member iterator for iterating in object.</span></div><div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a06ce0e14ec83b53c83e1b1699b53a25e"> 564</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* <a class="code" href="classrapidjson_1_1_generic_value.html#a06ce0e14ec83b53c83e1b1699b53a25e">ValueIterator</a>; <span class="comment">//!&lt; Value iterator for iterating in array.</span></div><div class="line"><a name="l00565"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f"> 565</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* <a class="code" href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">ConstValueIterator</a>; <span class="comment">//!&lt; Constant value iterator for iterating in array.</span></div><div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202"> 566</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, Allocator&gt;</a> <a class="code" href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">ValueType</a>; <span class="comment">//!&lt; Value type of itself.</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray&lt;false, ValueType&gt;</a> <a class="code" href="classrapidjson_1_1_generic_array.html">Array</a>;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray&lt;true, ValueType&gt;</a> <a class="code" href="classrapidjson_1_1_generic_array.html">ConstArray</a>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject&lt;false, ValueType&gt;</a> <a class="code" href="classrapidjson_1_1_generic_object.html">Object</a>;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject&lt;true, ValueType&gt;</a> <a class="code" href="classrapidjson_1_1_generic_object.html">ConstObject</a>;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="comment"> //!@name Constructors and destructor.</span></div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;<span class="comment"> //! Default constructor creates a null value.</span></div><div class="line"><a name="l00576"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad1f8199e65662e0d52a13a1577d4e4a5"> 576</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html#ad1f8199e65662e0d52a13a1577d4e4a5">GenericValue</a>() RAPIDJSON_NOEXCEPT : data_() { data_.f.flags = kNullFlag; }</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;<span class="comment"> //! Move constructor in C++11</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;&amp; rhs) RAPIDJSON_NOEXCEPT : data_(rhs.data_) {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; rhs.data_.f.flags = kNullFlag; <span class="comment">// give up contents</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;<span class="keyword">private</span>:<span class="comment"></span></div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="comment"> //! Copy constructor is not permitted.</span></div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; rhs);</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="comment"> //! Moving from a GenericDocument is not permitted.</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> StackAllocator&gt;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;Encoding,Allocator,StackAllocator&gt;</a>&amp;&amp; rhs);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="comment"> //! Move assignment from a GenericDocument is not permitted.</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> StackAllocator&gt;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; operator=(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;Encoding,Allocator,StackAllocator&gt;</a>&amp;&amp; rhs);</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="comment"> //! Constructor with JSON value type.</span></div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="comment"></span><span class="comment"> /*! This creates a Value of specified type with default content.</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="comment"> \param type Type of the value.</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="comment"> \note Default content for number is zero.</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a646b6d4d3d98799a0926d96ffa127a58"> 606</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a646b6d4d3d98799a0926d96ffa127a58">GenericValue</a>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type) RAPIDJSON_NOEXCEPT : data_() {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint16_t defaultFlags[7] = {</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; kNullFlag, kFalseFlag, kTrueFlag, kObjectFlag, kArrayFlag, kShortStringFlag,</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; kNumberAnyFlag</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; };</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(type &lt;= <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; data_.f.flags = defaultFlags[type];</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="comment">// Use ShortString to store empty string.</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">if</span> (type == <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>)</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; data_.ss.SetLength(0);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; }</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="comment"> //! Explicit copy constructor (with allocator)</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;<span class="comment"></span><span class="comment"> /*! Creates a copy of a Value by using the given Allocator</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;<span class="comment"> \tparam SourceAllocator allocator of \c rhs</span></div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;<span class="comment"> \param rhs Value to copy from (read-only)</span></div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;<span class="comment"> \param allocator Allocator for allocating copied elements and buffers. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="comment"> \param copyConstStrings Force copying of constant strings (e.g. referencing an in-situ buffer)</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;<span class="comment"> \see CopyFrom()</span></div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div><div class="line"><a name="l00628"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#adca019775f68f012643781cd2c2515ac"> 628</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html#adca019775f68f012643781cd2c2515ac">GenericValue</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding,SourceAllocator&gt;</a>&amp; rhs, Allocator&amp; allocator, <span class="keywordtype">bool</span> copyConstStrings = <span class="keyword">false</span>) {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">switch</span> (rhs.GetType()) {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>: {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count = rhs.data_.o.size;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; Member* lm = <span class="keyword">reinterpret_cast&lt;</span>Member*<span class="keyword">&gt;</span>(allocator.Malloc(count * <span class="keyword">sizeof</span>(Member)));</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="structrapidjson_1_1_generic_member.html">GenericValue&lt;Encoding,SourceAllocator&gt;::Member</a>* rm = rhs.GetMembersPointer();</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; count; i++) {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keyword">new</span> (&amp;lm[i].<a class="code" href="structrapidjson_1_1_generic_member.html#ae820eaa74b415a9073f3f3855f6c6607">name</a>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(rm[i].name, allocator, copyConstStrings);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keyword">new</span> (&amp;lm[i].<a class="code" href="structrapidjson_1_1_generic_member.html#a8ffff2076e62d988a070a136da6ffca6">value</a>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(rm[i].value, allocator, copyConstStrings);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; data_.f.flags = kObjectFlag;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; data_.o.size = data_.o.capacity = count;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; SetMembersPointer(lm);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>: {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count = rhs.data_.a.size;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* le = <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>*<span class="keyword">&gt;</span>(allocator.Malloc(count * <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>)));</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding,SourceAllocator&gt;</a>* re = rhs.GetElementsPointer();</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; count; i++)</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keyword">new</span> (&amp;le[i]) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(re[i], allocator, copyConstStrings);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; data_.f.flags = kArrayFlag;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; data_.a.size = data_.a.capacity = count;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; SetElementsPointer(le);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; }</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>:</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">if</span> (rhs.data_.f.flags == kConstStringFlag &amp;&amp; !copyConstStrings) {</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; data_.f.flags = rhs.data_.f.flags;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; data_ = *<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>Data*<span class="keyword">&gt;</span>(&amp;rhs.data_);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; SetStringRaw(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(rhs.GetString(), rhs.<a class="code" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea">GetStringLength</a>()), allocator);</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; data_.f.flags = rhs.data_.f.flags;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; data_ = *<span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span>Data*<span class="keyword">&gt;</span>(&amp;rhs.data_);</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; }</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="comment"> //! Constructor for boolean value.</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="comment"></span><span class="comment"> /*! \param b Boolean value</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;<span class="comment"> \note This constructor is limited to \em real boolean values and rejects</span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;<span class="comment"> implicitly converted types like arbitrary pointers. Use an explicit cast</span></div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;<span class="comment"> to \c bool, if you want to construct a boolean JSON value in such cases.</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_DOXYGEN_RUNNING // hide SFINAE from Doxygen</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(T b, RAPIDJSON_ENABLEIF((internal::IsSame&lt;bool, T&gt;))) RAPIDJSON_NOEXCEPT <span class="comment">// See #472</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00679"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ab933ad7ff8c9d08f73cebaecb700dbe9"> 679</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#ab933ad7ff8c9d08f73cebaecb700dbe9">GenericValue</a>(<span class="keywordtype">bool</span> b) RAPIDJSON_NOEXCEPT</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; : data_() {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="comment">// safe-guard against failing SFINAE</span></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>((<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">internal::IsSame&lt;bool,T&gt;::Value</a>));</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; data_.f.flags = b ? kTrueFlag : kFalseFlag;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="comment"> //! Constructor for int value.</span></div><div class="line"><a name="l00688"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#abba0c9ccfd90726f916c36013a2e9e19"> 688</a></span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#abba0c9ccfd90726f916c36013a2e9e19">GenericValue</a>(<span class="keywordtype">int</span> i) RAPIDJSON_NOEXCEPT : data_() {</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; data_.n.i64 = i;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; data_.f.flags = (i &gt;= 0) ? (kNumberIntFlag | kUintFlag | kUint64Flag) : kNumberIntFlag;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; }</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;<span class="comment"> //! Constructor for unsigned value.</span></div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a4a8060a42b7953a2981ad892180ca5a6"> 694</a></span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a4a8060a42b7953a2981ad892180ca5a6">GenericValue</a>(<span class="keywordtype">unsigned</span> u) RAPIDJSON_NOEXCEPT : data_() {</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; data_.n.u64 = u; </div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; data_.f.flags = (u &amp; 0x80000000) ? kNumberUintFlag : (kNumberUintFlag | kIntFlag | kInt64Flag);</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="comment"> //! Constructor for int64_t value.</span></div><div class="line"><a name="l00700"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#acd4ae9a8dba4498d1d7cce6667529bb8"> 700</a></span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#acd4ae9a8dba4498d1d7cce6667529bb8">GenericValue</a>(int64_t i64) RAPIDJSON_NOEXCEPT : data_() {</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; data_.n.i64 = i64;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; data_.f.flags = kNumberInt64Flag;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">if</span> (i64 &gt;= 0) {</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; data_.f.flags |= kNumberUint64Flag;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">if</span> (!(static_cast&lt;uint64_t&gt;(i64) &amp; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xFFFFFFFF, 0x00000000)))</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; data_.f.flags |= kUintFlag;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">if</span> (!(static_cast&lt;uint64_t&gt;(i64) &amp; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xFFFFFFFF, 0x80000000)))</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; data_.f.flags |= kIntFlag;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; }</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (i64 &gt;= static_cast&lt;int64_t&gt;(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xFFFFFFFF, 0x80000000)))</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; data_.f.flags |= kIntFlag;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; }</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;<span class="comment"> //! Constructor for uint64_t value.</span></div><div class="line"><a name="l00715"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a1f125e735577aae64c0306345de45563"> 715</a></span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a1f125e735577aae64c0306345de45563">GenericValue</a>(uint64_t u64) RAPIDJSON_NOEXCEPT : data_() {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; data_.n.u64 = u64;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; data_.f.flags = kNumberUint64Flag;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">if</span> (!(u64 &amp; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x80000000, 0x00000000)))</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; data_.f.flags |= kInt64Flag;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">if</span> (!(u64 &amp; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xFFFFFFFF, 0x00000000)))</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; data_.f.flags |= kUintFlag;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">if</span> (!(u64 &amp; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xFFFFFFFF, 0x80000000)))</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; data_.f.flags |= kIntFlag;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;<span class="comment"> //! Constructor for double value.</span></div><div class="line"><a name="l00727"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a71b9e2ec1f7bf9e2f034126ca7b4945a"> 727</a></span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a71b9e2ec1f7bf9e2f034126ca7b4945a">GenericValue</a>(<span class="keywordtype">double</span> d) RAPIDJSON_NOEXCEPT : data_() { data_.n.d = d; data_.f.flags = kNumberDoubleFlag; }</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;<span class="comment"> //! Constructor for float value.</span></div><div class="line"><a name="l00730"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#afe94e5e86a5b1a3fb605a9f8422f048b"> 730</a></span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#afe94e5e86a5b1a3fb605a9f8422f048b">GenericValue</a>(<span class="keywordtype">float</span> f) RAPIDJSON_NOEXCEPT : data_() { data_.n.d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(f); data_.f.flags = kNumberDoubleFlag; }</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;<span class="comment"> //! Constructor for constant string (i.e. do not make a copy of string)</span></div><div class="line"><a name="l00733"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a51e93a4fb57f77a39767acb076bf43c1"> 733</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html#a51e93a4fb57f77a39767acb076bf43c1">GenericValue</a>(<span class="keyword">const</span> Ch* s, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length) RAPIDJSON_NOEXCEPT : data_() { SetStringRaw(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s, length)); }</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;<span class="comment"> //! Constructor for constant string (i.e. do not make a copy of string)</span></div><div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a65bfc3073fa80ee5eba8e985abe2f941"> 736</a></span>&#160;<span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a65bfc3073fa80ee5eba8e985abe2f941">GenericValue</a>(StringRefType s) RAPIDJSON_NOEXCEPT : data_() { SetStringRaw(s); }</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;<span class="comment"> //! Constructor for copy-string (i.e. do make a copy of string)</span></div><div class="line"><a name="l00739"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad9553bb9ccbfd19547c473a95405a8b2"> 739</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html#ad9553bb9ccbfd19547c473a95405a8b2">GenericValue</a>(<span class="keyword">const</span> Ch* s, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, Allocator&amp; allocator) : data_() { SetStringRaw(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s, length), allocator); }</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;<span class="comment"> //! Constructor for copy-string (i.e. do make a copy of string)</span></div><div class="line"><a name="l00742"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a83ba61e8a5170c2e172fd60ebc11016f"> 742</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html#a83ba61e8a5170c2e172fd60ebc11016f">GenericValue</a>(<span class="keyword">const</span> Ch*s, Allocator&amp; allocator) : data_() { SetStringRaw(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s), allocator); }</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;<span class="comment"> //! Constructor for copy-string from a string object (i.e. do make a copy of string)</span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;<span class="comment"></span><span class="comment"> /*! \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING.</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00748"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a852788b35257762cd8d6c4bf5c5d77bc"> 748</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html#a852788b35257762cd8d6c4bf5c5d77bc">GenericValue</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; s, Allocator&amp; allocator) : data_() { SetStringRaw(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s), allocator); }</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;<span class="comment"> //! Constructor for Array.</span></div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;<span class="comment"> \param a An array obtained by \c GetArray().</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;<span class="comment"> \note \c Array is always pass-by-value.</span></div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;<span class="comment"> \note the source array is moved into this value and the sourec array becomes empty.</span></div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00757"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a77b0f41557b3c34b57a180698312c4a8"> 757</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html#a77b0f41557b3c34b57a180698312c4a8">GenericValue</a>(Array a) RAPIDJSON_NOEXCEPT : data_(a.value_.data_) {</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; a.value_.data_ = Data();</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; a.value_.data_.f.flags = kArrayFlag;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;<span class="comment"> //! Constructor for Object.</span></div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;<span class="comment"> \param o An object obtained by \c GetObject().</span></div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;<span class="comment"> \note \c Object is always pass-by-value.</span></div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;<span class="comment"> \note the source object is moved into this value and the sourec object becomes empty.</span></div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00768"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a893da1069660536fd3943a0149206a6e"> 768</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html#a893da1069660536fd3943a0149206a6e">GenericValue</a>(Object o) RAPIDJSON_NOEXCEPT : data_(o.value_.data_) {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; o.value_.data_ = Data();</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; o.value_.data_.f.flags = kObjectFlag;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; }</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;<span class="comment"> //! Destructor.</span></div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;<span class="comment"></span><span class="comment"> /*! Need to destruct elements of array, members of object, or copy-string.</span></div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00776"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a433a64b466c80cadf7d1acaa6f065437"> 776</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html#a433a64b466c80cadf7d1acaa6f065437">~GenericValue</a>() {</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">if</span> (Allocator::kNeedFree) { <span class="comment">// Shortcut by Allocator&#39;s trait</span></div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">switch</span>(data_.f.flags) {</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">case</span> kArrayFlag:</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; {</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* e = GetElementsPointer();</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* v = e; v != e + data_.a.size; ++v)</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; v-&gt;~GenericValue();</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; Allocator::Free(e);</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; }</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">case</span> kObjectFlag:</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">for</span> (MemberIterator m = MemberBegin(); m != MemberEnd(); ++m)</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; m-&gt;~Member();</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; Allocator::Free(GetMembersPointer());</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">case</span> kCopyStringFlag:</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; Allocator::Free(const_cast&lt;Ch*&gt;(GetStringPointer()));</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">break</span>; <span class="comment">// Do nothing for other types.</span></div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; }</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;<span class="comment"> //!@name Assignment operators</span></div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160;<span class="comment"> //! Assignment with move semantics.</span></div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;<span class="comment"></span><span class="comment"> /*! \param rhs Source of the assignment. It will become a null value after assignment.</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00812"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ae8bcedd951f50b69786aaaa1828e9fac"> 812</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#ae8bcedd951f50b69786aaaa1828e9fac">operator=</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; rhs) RAPIDJSON_NOEXCEPT {</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">this</span> != &amp;rhs);</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>();</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; RawAssign(rhs);</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; }</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;<span class="comment"> //! Move assignment in C++11</span></div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; operator=(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;&amp; rhs) RAPIDJSON_NOEXCEPT {</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span> = rhs.<a class="code" href="classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b">Move</a>();</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; }</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;<span class="comment"> //! Assignment of constant string reference (no copy)</span></div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;<span class="comment"></span><span class="comment"> /*! \param str Constant string reference to be assigned</span></div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;<span class="comment"> \note This overload is needed to avoid clashes with the generic primitive type assignment overload below.</span></div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;<span class="comment"> \see GenericStringRef, operator=(T)</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00831"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aecc9d0a6aafe31f4fdf9f6e75e5f089c"> 831</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#aecc9d0a6aafe31f4fdf9f6e75e5f089c">operator=</a>(StringRefType str) RAPIDJSON_NOEXCEPT {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> s(str);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span> = s;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; }</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160;<span class="comment"> //! Assignment with primitive types.</span></div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t</span></div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;<span class="comment"> \param value The value to be assigned.</span></div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160;<span class="comment"> \note The source type \c T explicitly disallows all pointer types,</span></div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;<span class="comment"> especially (\c const) \ref Ch*. This helps avoiding implicitly</span></div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;<span class="comment"> referencing character strings with insufficient lifetime, use</span></div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160;<span class="comment"> \ref SetString(const Ch*, Allocator&amp;) (for copying) or</span></div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160;<span class="comment"> \ref StringRef() (to explicitly mark the pointer as constant) instead.</span></div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;<span class="comment"> All other pointer types would implicitly convert to \c bool,</span></div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;<span class="comment"> use \ref SetBool() instead.</span></div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::IsPointer&lt;T&gt;), (<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;))</div><div class="line"><a name="l00850"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ab7446da62fdc61d6d987d508cdb6ac13"> 850</a></span>&#160; operator=(T value) {</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> v(value);</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span> = v;</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;<span class="comment"> //! Deep-copy assignment from Value</span></div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160;<span class="comment"></span><span class="comment"> /*! Assigns a \b copy of the Value to the current Value object</span></div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;<span class="comment"> \tparam SourceAllocator Allocator type of \c rhs</span></div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;<span class="comment"> \param rhs Value to copy from (read-only)</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;<span class="comment"> \param allocator Allocator to use for copying</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;<span class="comment"> \param copyConstStrings Force copying of constant strings (e.g. referencing an in-situ buffer)</span></div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div><div class="line"><a name="l00863"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae"> 863</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae">CopyFrom</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; rhs, Allocator&amp; allocator, <span class="keywordtype">bool</span> copyConstStrings = <span class="keyword">false</span>) {</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(static_cast&lt;void*&gt;(<span class="keyword">this</span>) != static_cast&lt;void const*&gt;(&amp;rhs));</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>();</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(rhs, allocator, copyConstStrings);</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; }</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160;<span class="comment"> //! Exchange the contents of this value with those of other.</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;<span class="comment"> \param other Another value.</span></div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160;<span class="comment"> \note Constant complexity.</span></div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00875"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db"> 875</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db">Swap</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; other) RAPIDJSON_NOEXCEPT {</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> temp;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; temp.RawAssign(*<span class="keyword">this</span>);</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; RawAssign(other);</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; other.RawAssign(temp);</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; }</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;<span class="comment"> //! free-standing swap function helper</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160;<span class="comment"> Helper function to enable support for common swap implementation pattern based on \c std::swap:</span></div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160;<span class="comment"> \code</span></div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160;<span class="comment"> void swap(MyClass&amp; a, MyClass&amp; b) {</span></div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;<span class="comment"> using std::swap;</span></div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;<span class="comment"> swap(a.value, b.value);</span></div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160;<span class="comment"> // ...</span></div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;<span class="comment"> }</span></div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;<span class="comment"> \endcode</span></div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160;<span class="comment"> \see Swap()</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00895"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a58ecce8a34fc029039b8079de246bdaa"> 895</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a58ecce8a34fc029039b8079de246bdaa">swap</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; a, <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; b) RAPIDJSON_NOEXCEPT { a.Swap(b); }</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160;<span class="comment"> //! Prepare Value for move semantics</span></div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;<span class="comment"></span><span class="comment"> /*! \return *this */</span></div><div class="line"><a name="l00899"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b"> 899</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b">Move</a>() RAPIDJSON_NOEXCEPT { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }<span class="comment"></span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;<span class="comment"> //!@name Equal-to and not-equal-to operators</span></div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160;<span class="comment"></span><span class="comment"> //! Equal-to operator</span></div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160;<span class="comment"> \note If an object contains duplicated named member, comparing equality with any object is always \c false.</span></div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;<span class="comment"> \note Linear time complexity (number of all values in the subtree and total lengths of all strings).</span></div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div><div class="line"><a name="l00910"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ab4e5285102bb686f39bca2855a17a181"> 910</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#ab4e5285102bb686f39bca2855a17a181">operator==</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; rhs)<span class="keyword"> const </span>{</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a> RhsType;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">if</span> (GetType() != rhs.GetType())</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160;</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">switch</span> (GetType()) {</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>: <span class="comment">// Warning: O(n^2) inner-loop</span></div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordflow">if</span> (data_.o.size != rhs.data_.o.size)</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; </div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> lhsMemberItr = MemberBegin(); lhsMemberItr != MemberEnd(); ++lhsMemberItr) {</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keyword">typename</span> RhsType::ConstMemberIterator rhsMemberItr = rhs.<a class="code" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811">FindMember</a>(lhsMemberItr-&gt;name);</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <span class="keywordflow">if</span> (rhsMemberItr == rhs.<a class="code" href="classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c">MemberEnd</a>() || lhsMemberItr-&gt;value != rhsMemberItr-&gt;value)</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; }</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; </div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>:</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keywordflow">if</span> (data_.a.size != rhs.data_.a.size)</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; data_.a.size; i++)</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keywordflow">if</span> ((*<span class="keyword">this</span>)[i] != rhs[i])</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>:</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keywordflow">return</span> StringEqual(rhs);</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>:</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keywordflow">if</span> (IsDouble() || rhs.IsDouble()) {</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordtype">double</span> a = GetDouble(); <span class="comment">// May convert from integer to double.</span></div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keywordtype">double</span> b = rhs.<a class="code" href="classrapidjson_1_1_generic_value.html#aa27d086d265f0ce447b15b15f0a2ed6e">GetDouble</a>(); <span class="comment">// Ditto</span></div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="keywordflow">return</span> a &gt;= b &amp;&amp; a &lt;= b; <span class="comment">// Prevent -Wfloat-equal</span></div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; }</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keywordflow">return</span> data_.n.u64 == rhs.data_.n.u64;</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; }</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; }</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160;<span class="comment"> //! Equal-to operator with const C-string pointer</span></div><div class="line"><a name="l00952"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#af03ef6020e188bbfceb018da5cd8becc"> 952</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#af03ef6020e188bbfceb018da5cd8becc">operator==</a>(<span class="keyword">const</span> Ch* rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span> == <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(rhs)); }</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160;<span class="comment"> //! Equal-to operator with string object</span></div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160;<span class="comment"></span><span class="comment"> /*! \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING.</span></div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00958"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#af089d2bee0386ca7504ff4fab466c87f"> 958</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#af089d2bee0386ca7504ff4fab466c87f">operator==</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span> == <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(rhs)); }</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;<span class="comment"> //! Equal-to operator with primitive types</span></div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c double, \c true, \c false</span></div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00964"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aaddbbbb35cd783f209f889cf8dea9570"> 964</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;,internal::IsGenericValue&lt;T&gt; &gt;), (<span class="keywordtype">bool</span>)) <a class="code" href="classrapidjson_1_1_generic_value.html#aaddbbbb35cd783f209f889cf8dea9570">operator==</a>(<span class="keyword">const</span> T&amp; rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *<span class="keyword">this</span> == <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(rhs); }</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160;<span class="comment"> //! Not-equal-to operator</span></div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160;<span class="comment"></span><span class="comment"> /*! \return !(*this == rhs)</span></div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div><div class="line"><a name="l00970"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad5bf5afd53f21f370f917041b3be4bfc"> 970</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#ad5bf5afd53f21f370f917041b3be4bfc">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs); }</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160;<span class="comment"> //! Not-equal-to operator with const C-string pointer</span></div><div class="line"><a name="l00973"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a6443cf5323fb46c4c51cd15a365da49b"> 973</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a6443cf5323fb46c4c51cd15a365da49b">operator!=</a>(<span class="keyword">const</span> Ch* rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs); }</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160;<span class="comment"> //! Not-equal-to operator with arbitrary types</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160;<span class="comment"></span><span class="comment"> /*! \return !(*this == rhs)</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00978"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ae6fe0576ff0336f6e2b09fe32f3ff809"> 978</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue&lt;T&gt;), (<span class="keywordtype">bool</span>)) <a class="code" href="classrapidjson_1_1_generic_value.html#ae6fe0576ff0336f6e2b09fe32f3ff809">operator!=</a>(<span class="keyword">const</span> T&amp; rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs); }</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160;<span class="comment"> //! Equal-to operator with arbitrary types (symmetric version)</span></div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160;<span class="comment"></span><span class="comment"> /*! \return (rhs == lhs)</span></div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00983"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aaa465706fda1e1ef4513ce877e0b4b69"> 983</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">friend</span> RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue&lt;T&gt;), (<span class="keywordtype">bool</span>)) <a class="code" href="classrapidjson_1_1_generic_value.html#aaa465706fda1e1ef4513ce877e0b4b69">operator==</a>(<span class="keyword">const</span> T&amp; lhs, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; rhs) { <span class="keywordflow">return</span> rhs == lhs; }</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;<span class="comment"> //! Not-Equal-to operator with arbitrary types (symmetric version)</span></div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;<span class="comment"></span><span class="comment"> /*! \return !(rhs == lhs)</span></div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00988"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ae08898bef949f217f0e5d28e19f05992"> 988</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">friend</span> RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue&lt;T&gt;), (<span class="keywordtype">bool</span>)) <a class="code" href="classrapidjson_1_1_generic_value.html#ae08898bef949f217f0e5d28e19f05992">operator!=</a>(<span class="keyword">const</span> T&amp; lhs, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; rhs) { <span class="keywordflow">return</span> !(rhs == lhs); }<span class="comment"></span></div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;<span class="comment"> //!@name Type</span></div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> GetType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a><span class="keyword">&gt;</span>(data_.f.flags &amp; kTypeMask); }</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keywordtype">bool</span> IsNull()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data_.f.flags == kNullFlag; }</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <span class="keywordtype">bool</span> IsFalse()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data_.f.flags == kFalseFlag; }</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="keywordtype">bool</span> IsTrue()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data_.f.flags == kTrueFlag; }</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordtype">bool</span> IsBool()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kBoolFlag) != 0; }</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordtype">bool</span> IsObject()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data_.f.flags == kObjectFlag; }</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; <span class="keywordtype">bool</span> IsArray()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> data_.f.flags == kArrayFlag; }</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="keywordtype">bool</span> IsNumber()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kNumberFlag) != 0; }</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordtype">bool</span> IsInt()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kIntFlag) != 0; }</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordtype">bool</span> IsUint()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kUintFlag) != 0; }</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keywordtype">bool</span> IsInt64()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kInt64Flag) != 0; }</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordtype">bool</span> IsUint64()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kUint64Flag) != 0; }</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordtype">bool</span> IsDouble()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kDoubleFlag) != 0; }</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keywordtype">bool</span> IsString()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (data_.f.flags &amp; kStringFlag) != 0; }</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="comment">// Checks whether a number can be losslessly converted to a double.</span></div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordtype">bool</span> IsLosslessDouble()<span class="keyword"> const </span>{</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <span class="keywordflow">if</span> (!IsNumber()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; <span class="keywordflow">if</span> (IsUint64()) {</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; uint64_t u = GetUint64();</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keyword">volatile</span> <span class="keywordtype">double</span> d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(u);</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; <span class="keywordflow">return</span> (d &gt;= 0.0)</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; &amp;&amp; (d &lt; static_cast&lt;double&gt;(std::numeric_limits&lt;uint64_t&gt;::max()))</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; &amp;&amp; (u == <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(d));</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; }</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keywordflow">if</span> (IsInt64()) {</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; int64_t i = GetInt64();</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="keyword">volatile</span> <span class="keywordtype">double</span> d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(i);</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordflow">return</span> (d &gt;= static_cast&lt;double&gt;(std::numeric_limits&lt;int64_t&gt;::min()))</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; &amp;&amp; (d &lt; static_cast&lt;double&gt;(std::numeric_limits&lt;int64_t&gt;::max()))</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; &amp;&amp; (i == static_cast&lt;int64_t&gt;(d));</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; }</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// double, int, uint are always lossless</span></div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; }</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160;</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; <span class="comment">// Checks whether a number is a float (possible lossy).</span></div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keywordtype">bool</span> IsFloat()<span class="keyword"> const </span>{</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <span class="keywordflow">if</span> ((data_.f.flags &amp; kDoubleFlag) == 0)</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keywordtype">double</span> d = GetDouble();</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <span class="keywordflow">return</span> d &gt;= -3.4028234e38 &amp;&amp; d &lt;= 3.4028234e38;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; }</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="comment">// Checks whether a number can be losslessly converted to a float.</span></div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keywordtype">bool</span> IsLosslessFloat()<span class="keyword"> const </span>{</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="keywordflow">if</span> (!IsNumber()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordtype">double</span> a = GetDouble();</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <span class="keywordflow">if</span> (a &lt; static_cast&lt;double&gt;(-std::numeric_limits&lt;float&gt;::max())</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; || a &gt; static_cast&lt;double&gt;(std::numeric_limits&lt;float&gt;::max()))</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordtype">double</span> b = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(a));</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="keywordflow">return</span> a &gt;= b &amp;&amp; a &lt;= b; <span class="comment">// Prevent -Wfloat-equal</span></div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; }</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;<span class="comment"> //!@name Null</span></div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; SetNull() { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;<span class="comment"> //!@name Bool</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01059"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a78d80b935babeedbfa71914a8fe5baa7"> 1059</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a78d80b935babeedbfa71914a8fe5baa7">GetBool</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsBool()); <span class="keywordflow">return</span> data_.f.flags == kTrueFlag; }<span class="comment"></span></div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;<span class="comment"> //!&lt; Set boolean value</span></div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;<span class="comment"></span><span class="comment"> /*! \post IsBool() == true */</span></div><div class="line"><a name="l01062"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a5623c9039977ca0daf394e5c12f10c2d"> 1062</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a5623c9039977ca0daf394e5c12f10c2d">SetBool</a>(<span class="keywordtype">bool</span> b) { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(b); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;<span class="comment"> //!@name Object</span></div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;<span class="comment"> //! Set this value as an empty object.</span></div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;<span class="comment"></span><span class="comment"> /*! \post IsObject() == true */</span></div><div class="line"><a name="l01071"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a7cb3cbaefe4fb99aaf9f155fb4ee039b"> 1071</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a7cb3cbaefe4fb99aaf9f155fb4ee039b">SetObject</a>() { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;<span class="comment"> //! Get the number of members in the object.</span></div><div class="line"><a name="l01074"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a8b7e47c57a20d0de0cd19eee799ebd88"> 1074</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a8b7e47c57a20d0de0cd19eee799ebd88">MemberCount</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> data_.o.size; }</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;<span class="comment"> //! Check whether the object is empty.</span></div><div class="line"><a name="l01077"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a1f4835373e05abae52b91e1c6b7ec92c"> 1077</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a1f4835373e05abae52b91e1c6b7ec92c">ObjectEmpty</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> data_.o.size == 0; }</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;<span class="comment"> //! Get a value from an object associated with the name.</span></div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsObject() == true</span></div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;<span class="comment"> \tparam T Either \c Ch or \c const \c Ch (template used for disambiguation with \ref operator[](SizeType))</span></div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;<span class="comment"> \note In version 0.1x, if the member is not found, this function returns a null value. This makes issue 7.</span></div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;<span class="comment"> Since 0.2, if the name is not correct, it will assert.</span></div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;<span class="comment"> If user is unsure whether a member exists, user should use HasMember() first.</span></div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;<span class="comment"> A better approach is to use FindMember().</span></div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01089"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a8ec7fc7f221306925c7674dccbe02b07"> 1089</a></span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr&lt;internal::IsSame&lt;<span class="keyword">typename</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">internal::RemoveConst&lt;T&gt;::Type</a>, Ch&gt; &gt;),(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;)) <a class="code" href="classrapidjson_1_1_generic_value.html#a8ec7fc7f221306925c7674dccbe02b07">operator[]</a>(T* name) {</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> n(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name));</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordflow">return</span> (*<span class="keyword">this</span>)[n];</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; }</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr&lt;internal::IsSame&lt;<span class="keyword">typename</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">internal::RemoveConst&lt;T&gt;::Type</a>, Ch&gt; &gt;),(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;)) operator[](T* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;<span class="keyword">&gt;</span>(*this)[name]; }</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;<span class="comment"> //! Get a value from an object associated with the name.</span></div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsObject() == true</span></div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;<span class="comment"> \tparam SourceAllocator Allocator of the \c name value</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;<span class="comment"> \note Compared to \ref operator[](T*), this version is faster because it does not need a StrLen().</span></div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;<span class="comment"> And it can also handle strings with embedded null characters.</span></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div><div class="line"><a name="l01106"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aa62b57746c96ce3d264b2fe178196062"> 1106</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#aa62b57746c96ce3d264b2fe178196062">operator[]</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; name) {</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> member = FindMember(name);</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordflow">if</span> (member != MemberEnd())</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="keywordflow">return</span> member-&gt;value;</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="comment">// see above note</span></div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="comment">// This will generate -Wexit-time-destructors in clang</span></div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="comment">// static GenericValue NullValue;</span></div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="comment">// return NullValue;</span></div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <span class="comment">// Use static buffer and placement-new to prevent destruction</span></div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <span class="keyword">static</span> <span class="keywordtype">char</span> buffer[<span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>)];</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">new</span> (buffer) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>();</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; }</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; }</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; operator[](<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;<span class="keyword">&gt;</span>(*this)[name]; }</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;<span class="comment"> //! Get a value from an object associated with name (string object).</span></div><div class="line"><a name="l01127"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a4d337239ee3e2096462f6a36b9ab0811"> 1127</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a4d337239ee3e2096462f6a36b9ab0811">operator[]</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name) { <span class="keywordflow">return</span> (*<span class="keyword">this</span>)[<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name))]; }</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; operator[](<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (*<span class="keyword">this</span>)[<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name))]; }</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;<span class="comment"> //! Const member iterator</span></div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsObject() == true */</span></div><div class="line"><a name="l01133"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ae89a77887aa3eb1f1f913727cbff6786"> 1133</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#ae89a77887aa3eb1f1f913727cbff6786">MemberBegin</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a>(GetMembersPointer()); }<span class="comment"></span></div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;<span class="comment"> //! Const \em past-the-end member iterator</span></div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsObject() == true */</span></div><div class="line"><a name="l01136"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c"> 1136</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c">MemberEnd</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a>(GetMembersPointer() + data_.o.size); }<span class="comment"></span></div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;<span class="comment"> //! Member iterator</span></div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsObject() == true */</span></div><div class="line"><a name="l01139"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a"> 1139</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a">MemberBegin</a>() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>(GetMembersPointer()); }<span class="comment"></span></div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;<span class="comment"> //! \em Past-the-end member iterator</span></div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsObject() == true */</span></div><div class="line"><a name="l01142"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee"> 1142</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee">MemberEnd</a>() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a>(GetMembersPointer() + data_.o.size); }</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;<span class="comment"> //! Check whether a member exists in the object.</span></div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;<span class="comment"> \param name Member name to be searched.</span></div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;<span class="comment"> \pre IsObject() == true</span></div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;<span class="comment"> \return Whether a member with that name exists.</span></div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;<span class="comment"> \note It is better to use FindMember() directly if you need the obtain the value as well.</span></div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01152"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b"> 1152</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b">HasMember</a>(<span class="keyword">const</span> Ch* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> FindMember(name) != MemberEnd(); }</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;<span class="comment"> //! Check whether a member exists in the object with string object.</span></div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;<span class="comment"> \param name Member name to be searched.</span></div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;<span class="comment"> \pre IsObject() == true</span></div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;<span class="comment"> \return Whether a member with that name exists.</span></div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;<span class="comment"> \note It is better to use FindMember() directly if you need the obtain the value as well.</span></div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01163"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a9b3b30acbe60d7a5b105afa05c1ddfb0"> 1163</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a9b3b30acbe60d7a5b105afa05c1ddfb0">HasMember</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> FindMember(name) != MemberEnd(); }</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;<span class="comment"> //! Check whether a member exists in the object with GenericValue name.</span></div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;<span class="comment"> This version is faster because it does not need a StrLen(). It can also handle string with null character.</span></div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;<span class="comment"> \param name Member name to be searched.</span></div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;<span class="comment"> \pre IsObject() == true</span></div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;<span class="comment"> \return Whether a member with that name exists.</span></div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;<span class="comment"> \note It is better to use FindMember() directly if you need the obtain the value as well.</span></div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div><div class="line"><a name="l01176"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a794129b8adffb97d123306a0c0ccaf71"> 1176</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a794129b8adffb97d123306a0c0ccaf71">HasMember</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> FindMember(name) != MemberEnd(); }</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;<span class="comment"> //! Find member by name.</span></div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160;<span class="comment"> \param name Member name to be searched.</span></div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;<span class="comment"> \pre IsObject() == true</span></div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;<span class="comment"> \return Iterator to member, if it exists.</span></div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;<span class="comment"> Otherwise returns \ref MemberEnd().</span></div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;<span class="comment"> \note Earlier versions of Rapidjson returned a \c NULL pointer, in case</span></div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160;<span class="comment"> the requested member doesn&#39;t exist. For consistency with e.g.</span></div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;<span class="comment"> \c std::map, this has been changed to MemberEnd() now.</span></div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01190"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811"> 1190</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811">FindMember</a>(<span class="keyword">const</span> Ch* name) {</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> n(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name));</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keywordflow">return</span> FindMember(n);</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; }</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> FindMember(<span class="keyword">const</span> Ch* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;<span class="keyword">&gt;</span>(*this).<a class="code" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811">FindMember</a>(name); }</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;<span class="comment"> //! Find member by name.</span></div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;<span class="comment"> This version is faster because it does not need a StrLen(). It can also handle string with null character.</span></div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160;<span class="comment"> \param name Member name to be searched.</span></div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;<span class="comment"> \pre IsObject() == true</span></div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;<span class="comment"> \return Iterator to member, if it exists.</span></div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;<span class="comment"> Otherwise returns \ref MemberEnd().</span></div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;<span class="comment"> \note Earlier versions of Rapidjson returned a \c NULL pointer, in case</span></div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;<span class="comment"> the requested member doesn&#39;t exist. For consistency with e.g.</span></div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;<span class="comment"> \c std::map, this has been changed to MemberEnd() now.</span></div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div><div class="line"><a name="l01211"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a8d75bf0c6c0fa4f8d340a4236e98539b"> 1211</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a8d75bf0c6c0fa4f8d340a4236e98539b">FindMember</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; name) {</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject());</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(name.IsString());</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> member = MemberBegin();</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keywordflow">for</span> ( ; member != MemberEnd(); ++member)</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <span class="keywordflow">if</span> (name.StringEqual(member-&gt;name))</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <span class="keywordflow">return</span> member;</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; }</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> FindMember(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;<span class="keyword">&gt;</span>(*this).<a class="code" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811">FindMember</a>(name); }</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;<span class="comment"> //! Find member by string object name.</span></div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;<span class="comment"> \param name Member name to be searched.</span></div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;<span class="comment"> \pre IsObject() == true</span></div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;<span class="comment"> \return Iterator to member, if it exists.</span></div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;<span class="comment"> Otherwise returns \ref MemberEnd().</span></div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01230"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a278b420ea75b0ec18d88d4c9e9199d62"> 1230</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a278b420ea75b0ec18d88d4c9e9199d62">FindMember</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name) { <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a278b420ea75b0ec18d88d4c9e9199d62">FindMember</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name))); }</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> FindMember(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> FindMember(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name))); }</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;<span class="comment"> //! Add a member (name-value pair) to the object.</span></div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;<span class="comment"></span><span class="comment"> /*! \param name A string value as name of member.</span></div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;<span class="comment"> \param value Value of any type.</span></div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;<span class="comment"> \note The ownership of \c name and \c value will be transferred to this object on success.</span></div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;<span class="comment"> \pre IsObject() &amp;&amp; name.IsString()</span></div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;<span class="comment"> \post name.IsNull() &amp;&amp; value.IsNull()</span></div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;<span class="comment"> \note Amortized Constant time complexity.</span></div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01244"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68"> 1244</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68">AddMember</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; name, <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; value, Allocator&amp; allocator) {</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject());</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(name.IsString());</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; ObjectData&amp; o = data_.o;</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <span class="keywordflow">if</span> (o.size &gt;= o.capacity) {</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">if</span> (o.capacity == 0) {</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; o.capacity = kDefaultObjectCapacity;</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; SetMembersPointer(reinterpret_cast&lt;Member*&gt;(allocator.Malloc(o.capacity * <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>))));</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; }</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> oldCapacity = o.capacity;</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; o.capacity += (oldCapacity + 1) / 2; <span class="comment">// grow by factor 1.5</span></div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; SetMembersPointer(reinterpret_cast&lt;Member*&gt;(allocator.Realloc(GetMembersPointer(), oldCapacity * <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>), o.capacity * <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>))));</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; }</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; }</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; <a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>* members = GetMembersPointer();</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; members[o.size].<a class="code" href="structrapidjson_1_1_generic_member.html#ae820eaa74b415a9073f3f3855f6c6607">name</a>.RawAssign(name);</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; members[o.size].<a class="code" href="structrapidjson_1_1_generic_member.html#a8ffff2076e62d988a070a136da6ffca6">value</a>.RawAssign(value);</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; o.size++;</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; }</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;<span class="comment"> //! Add a constant string value as member (name-value pair) to the object.</span></div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160;<span class="comment"></span><span class="comment"> /*! \param name A string value as name of member.</span></div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;<span class="comment"> \param value constant string reference as value of member.</span></div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;<span class="comment"> \pre IsObject()</span></div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;<span class="comment"> \note This overload is needed to avoid clashes with the generic primitive type AddMember(GenericValue&amp;,T,Allocator&amp;) overload below.</span></div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;<span class="comment"> \note Amortized Constant time complexity.</span></div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01276"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad290f179591025e871bedbbac89ac276"> 1276</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#ad290f179591025e871bedbbac89ac276">AddMember</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; name, <a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> value, Allocator&amp; allocator) {</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> v(value);</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; <span class="keywordflow">return</span> AddMember(name, v, allocator);</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; }</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;<span class="comment"> //! Add a string object as member (name-value pair) to the object.</span></div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;<span class="comment"></span><span class="comment"> /*! \param name A string value as name of member.</span></div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;<span class="comment"> \param value constant string reference as value of member.</span></div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;<span class="comment"> \pre IsObject()</span></div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;<span class="comment"> \note This overload is needed to avoid clashes with the generic primitive type AddMember(GenericValue&amp;,T,Allocator&amp;) overload below.</span></div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;<span class="comment"> \note Amortized Constant time complexity.</span></div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01291"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a578e35f3350717db2aae534969b2346a"> 1291</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a578e35f3350717db2aae534969b2346a">AddMember</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; name, std::basic_string&lt;Ch&gt;&amp; value, Allocator&amp; allocator) {</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> v(value, allocator);</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="keywordflow">return</span> AddMember(name, v, allocator);</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; }</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;<span class="comment"> //! Add any primitive value as member (name-value pair) to the object.</span></div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t</span></div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;<span class="comment"> \param name A string value as name of member.</span></div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;<span class="comment"> \param value Value of primitive type \c T as value of member</span></div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;<span class="comment"> \pre IsObject()</span></div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;<span class="comment"> \note The source type \c T explicitly disallows all pointer types,</span></div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;<span class="comment"> especially (\c const) \ref Ch*. This helps avoiding implicitly</span></div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;<span class="comment"> referencing character strings with insufficient lifetime, use</span></div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;<span class="comment"> \ref AddMember(StringRefType, GenericValue&amp;, Allocator&amp;) or \ref</span></div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;<span class="comment"> AddMember(StringRefType, StringRefType, Allocator&amp;).</span></div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;<span class="comment"> All other pointer types would implicitly convert to \c bool,</span></div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;<span class="comment"> use an explicit cast instead, if needed.</span></div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;<span class="comment"> \note Amortized Constant time complexity.</span></div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;))</div><div class="line"><a name="l01316"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ab705cb56bfb380005704cda2d0edf168"> 1316</a></span>&#160; AddMember(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; name, T value, Allocator&amp; allocator) {</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> v(value);</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; <span class="keywordflow">return</span> AddMember(name, v, allocator);</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; }</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; AddMember(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;&amp; name, <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;&amp; value, Allocator&amp; allocator) {</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; <span class="keywordflow">return</span> AddMember(name, value, allocator);</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; }</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; AddMember(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;&amp; name, <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; value, Allocator&amp; allocator) {</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <span class="keywordflow">return</span> AddMember(name, value, allocator);</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; }</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; AddMember(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; name, <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;&amp; value, Allocator&amp; allocator) {</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <span class="keywordflow">return</span> AddMember(name, value, allocator);</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; }</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; AddMember(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> name, <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;&amp; value, Allocator&amp; allocator) {</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> n(name);</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; <span class="keywordflow">return</span> AddMember(n, value, allocator);</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; }</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;<span class="comment"> //! Add a member (name-value pair) to the object.</span></div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;<span class="comment"></span><span class="comment"> /*! \param name A constant string reference as name of member.</span></div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;<span class="comment"> \param value Value of any type.</span></div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160;<span class="comment"> \note The ownership of \c value will be transferred to this object on success.</span></div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;<span class="comment"> \pre IsObject()</span></div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;<span class="comment"> \post value.IsNull()</span></div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;<span class="comment"> \note Amortized Constant time complexity.</span></div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01348"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a85dc131bdad8077ce970d580d333d15a"> 1348</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a85dc131bdad8077ce970d580d333d15a">AddMember</a>(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> name, <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; value, Allocator&amp; allocator) {</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> n(name);</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; <span class="keywordflow">return</span> AddMember(n, value, allocator);</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; }</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;<span class="comment"> //! Add a constant string value as member (name-value pair) to the object.</span></div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;<span class="comment"></span><span class="comment"> /*! \param name A constant string reference as name of member.</span></div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;<span class="comment"> \param value constant string reference as value of member.</span></div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;<span class="comment"> \pre IsObject()</span></div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;<span class="comment"> \note This overload is needed to avoid clashes with the generic primitive type AddMember(StringRefType,T,Allocator&amp;) overload below.</span></div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160;<span class="comment"> \note Amortized Constant time complexity.</span></div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01362"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a2ccb4736d0f2ec07f06f630d8fe54f8d"> 1362</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a2ccb4736d0f2ec07f06f630d8fe54f8d">AddMember</a>(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> name, <a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> value, Allocator&amp; allocator) {</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> v(value);</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; <span class="keywordflow">return</span> AddMember(name, v, allocator);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; }</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160;<span class="comment"> //! Add any primitive value as member (name-value pair) to the object.</span></div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t</span></div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160;<span class="comment"> \param name A constant string reference as name of member.</span></div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160;<span class="comment"> \param value Value of primitive type \c T as value of member</span></div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160;<span class="comment"> \pre IsObject()</span></div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;<span class="comment"> \note The source type \c T explicitly disallows all pointer types,</span></div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;<span class="comment"> especially (\c const) \ref Ch*. This helps avoiding implicitly</span></div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;<span class="comment"> referencing character strings with insufficient lifetime, use</span></div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160;<span class="comment"> \ref AddMember(StringRefType, GenericValue&amp;, Allocator&amp;) or \ref</span></div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160;<span class="comment"> AddMember(StringRefType, StringRefType, Allocator&amp;).</span></div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;<span class="comment"> All other pointer types would implicitly convert to \c bool,</span></div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;<span class="comment"> use an explicit cast instead, if needed.</span></div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;<span class="comment"> \note Amortized Constant time complexity.</span></div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;))</div><div class="line"><a name="l01386"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aa70ada250f3a0c5aeee0ce138d136b06"> 1386</a></span>&#160; AddMember(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> name, T value, Allocator&amp; allocator) {</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> n(name);</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; <span class="keywordflow">return</span> AddMember(n, value, allocator);</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; }</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;<span class="comment"> //! Remove all members in the object.</span></div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;<span class="comment"></span><span class="comment"> /*! This function do not deallocate memory in the object, i.e. the capacity is unchanged.</span></div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01395"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a68d8d197ae1fb83d4dc202f9812af4cc"> 1395</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a68d8d197ae1fb83d4dc202f9812af4cc">RemoveAllMembers</a>() {</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); </div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> m = MemberBegin(); m != MemberEnd(); ++m)</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; m-&gt;~Member();</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; data_.o.size = 0;</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; }</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160;<span class="comment"> //! Remove a member in object by its name.</span></div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;<span class="comment"></span><span class="comment"> /*! \param name Name of member to be removed.</span></div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160;<span class="comment"> \return Whether the member existed.</span></div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160;<span class="comment"> \note This function may reorder the object members. Use \ref</span></div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;<span class="comment"> EraseMember(ConstMemberIterator) if you need to preserve the</span></div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160;<span class="comment"> relative order of the remaining members.</span></div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01410"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aa60074f72a6d1651828a104b0c6387b1"> 1410</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#aa60074f72a6d1651828a104b0c6387b1">RemoveMember</a>(<span class="keyword">const</span> Ch* name) {</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> n(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name));</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; <span class="keywordflow">return</span> RemoveMember(n);</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; }</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; <span class="keywordtype">bool</span> RemoveMember(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name) { <span class="keywordflow">return</span> RemoveMember(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name))); }</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; <span class="keywordtype">bool</span> RemoveMember(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; name) {</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> m = FindMember(name);</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; <span class="keywordflow">if</span> (m != MemberEnd()) {</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; RemoveMember(m);</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; }</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; }</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;<span class="comment"> //! Remove a member in object by iterator.</span></div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160;<span class="comment"></span><span class="comment"> /*! \param m member iterator (obtained by FindMember() or MemberBegin()).</span></div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;<span class="comment"> \return the new iterator after removal.</span></div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;<span class="comment"> \note This function may reorder the object members. Use \ref</span></div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160;<span class="comment"> EraseMember(ConstMemberIterator) if you need to preserve the</span></div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;<span class="comment"> relative order of the remaining members.</span></div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160;<span class="comment"> \note Constant time complexity.</span></div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01438"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#af91573ce61d798f0bc5dc88b00742697"> 1438</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#af91573ce61d798f0bc5dc88b00742697">RemoveMember</a>(<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> m) {</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject());</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(data_.o.size &gt; 0);</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(GetMembersPointer() != 0);</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(m &gt;= MemberBegin() &amp;&amp; m &lt; MemberEnd());</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> last(GetMembersPointer() + (data_.o.size - 1));</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; <span class="keywordflow">if</span> (data_.o.size &gt; 1 &amp;&amp; m != last)</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; *m = *last; <span class="comment">// Move the last one to this place</span></div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; m-&gt;~Member(); <span class="comment">// Only one left, just destroy</span></div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; --data_.o.size;</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; <span class="keywordflow">return</span> m;</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; }</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;<span class="comment"> //! Remove a member from an object by iterator.</span></div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160;<span class="comment"></span><span class="comment"> /*! \param pos iterator to the member to remove</span></div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160;<span class="comment"> \pre IsObject() == true &amp;&amp; \ref MemberBegin() &lt;= \c pos &lt; \ref MemberEnd()</span></div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160;<span class="comment"> \return Iterator following the removed element.</span></div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;<span class="comment"> If the iterator \c pos refers to the last element, the \ref MemberEnd() iterator is returned.</span></div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160;<span class="comment"> \note This function preserves the relative order of the remaining object</span></div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160;<span class="comment"> members. If you do not need this, use the more efficient \ref RemoveMember(MemberIterator).</span></div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01462"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a163e60b101e5ae534597c050a6eba511"> 1462</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a163e60b101e5ae534597c050a6eba511">EraseMember</a>(<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> pos) {</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <span class="keywordflow">return</span> EraseMember(pos, pos +1);</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; }</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160;<span class="comment"> //! Remove members in the range [first, last) from an object.</span></div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;<span class="comment"></span><span class="comment"> /*! \param first iterator to the first member to remove</span></div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160;<span class="comment"> \param last iterator following the last member to remove</span></div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;<span class="comment"> \pre IsObject() == true &amp;&amp; \ref MemberBegin() &lt;= \c first &lt;= \c last &lt;= \ref MemberEnd()</span></div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;<span class="comment"> \return Iterator following the last removed element.</span></div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160;<span class="comment"> \note This function preserves the relative order of the remaining object</span></div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;<span class="comment"> members.</span></div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01475"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a121e40b5944be337189eb63b98b7e6ce"> 1475</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a121e40b5944be337189eb63b98b7e6ce">EraseMember</a>(<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> first, <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> last) {</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject());</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(data_.o.size &gt; 0);</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(GetMembersPointer() != 0);</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(first &gt;= MemberBegin());</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(first &lt;= last);</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(last &lt;= MemberEnd());</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> pos = MemberBegin() + (first - MemberBegin());</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> itr = pos; itr != last; ++itr)</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; itr-&gt;~Member();</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; std::memmove(&amp;*pos, &amp;*last, static_cast&lt;size_t&gt;(MemberEnd() - last) * <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>));</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; data_.o.size -= <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(last - first);</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="keywordflow">return</span> pos;</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; }</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160;<span class="comment"> //! Erase a member in object by its name.</span></div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;<span class="comment"></span><span class="comment"> /*! \param name Name of member to be removed.</span></div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160;<span class="comment"> \return Whether the member existed.</span></div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01496"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ac51a3b3046aaa12aa1d88ac876a28cec"> 1496</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#ac51a3b3046aaa12aa1d88ac876a28cec">EraseMember</a>(<span class="keyword">const</span> Ch* name) {</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> n(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name));</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; <span class="keywordflow">return</span> EraseMember(n);</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; }</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; <span class="keywordtype">bool</span> EraseMember(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name) { <span class="keywordflow">return</span> EraseMember(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name))); }</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160;</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; <span class="keywordtype">bool</span> EraseMember(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; name) {</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">MemberIterator</a> m = FindMember(name);</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; <span class="keywordflow">if</span> (m != MemberEnd()) {</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; EraseMember(m);</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; }</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; }</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <a class="code" href="classrapidjson_1_1_generic_object.html">Object</a> GetObject() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_object.html">Object</a>(*<span class="keyword">this</span>); }</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; <a class="code" href="classrapidjson_1_1_generic_object.html">ConstObject</a> GetObject()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsObject()); <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_object.html">ConstObject</a>(*<span class="keyword">this</span>); }</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160;<span class="comment"> //!@name Array</span></div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160;<span class="comment"> //! Set this value as an empty array.</span></div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160;<span class="comment"></span><span class="comment"> /*! \post IsArray == true */</span></div><div class="line"><a name="l01526"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a25069c76d045b058e54835d8c467c789"> 1526</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a25069c76d045b058e54835d8c467c789">SetArray</a>() { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160;<span class="comment"> //! Get the number of elements in array.</span></div><div class="line"><a name="l01529"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a799a8a2503989f486f3fc7a660266555"> 1529</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a799a8a2503989f486f3fc7a660266555">Size</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); <span class="keywordflow">return</span> data_.a.size; }</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;<span class="comment"> //! Get the capacity of array.</span></div><div class="line"><a name="l01532"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a812e5c07f74a90566e7636330740eb6a"> 1532</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a812e5c07f74a90566e7636330740eb6a">Capacity</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); <span class="keywordflow">return</span> data_.a.capacity; }</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;<span class="comment"> //! Check whether the array is empty.</span></div><div class="line"><a name="l01535"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad08a62c65a793ab1d0abe7eac03776fd"> 1535</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#ad08a62c65a793ab1d0abe7eac03776fd">Empty</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); <span class="keywordflow">return</span> data_.a.size == 0; }</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160;<span class="comment"> //! Remove all elements in the array.</span></div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;<span class="comment"></span><span class="comment"> /*! This function do not deallocate memory in the array, i.e. the capacity is unchanged.</span></div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01541"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aa56b69bac5423622eff6998ce4802106"> 1541</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_value.html#aa56b69bac5423622eff6998ce4802106">Clear</a>() {</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); </div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* e = GetElementsPointer();</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* v = e; v != e + data_.a.size; ++v)</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; v-&gt;~GenericValue();</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; data_.a.size = 0;</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; }</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;<span class="comment"> //! Get an element from array by index.</span></div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsArray() == true</span></div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;<span class="comment"> \param index Zero-based index of element.</span></div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;<span class="comment"> \see operator[](T*)</span></div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01554"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#adc312de070d03a63e6c692c9c61db156"> 1554</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#adc312de070d03a63e6c692c9c61db156">operator[]</a>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) {</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray());</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(index &lt; data_.a.size);</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; <span class="keywordflow">return</span> GetElementsPointer()[index];</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; }</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; operator[](<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;<span class="keyword">&gt;</span>(*this)[index]; }</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;<span class="comment"> //! Element iterator</span></div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsArray() == true */</span></div><div class="line"><a name="l01563"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603"> 1563</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ValueIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603">Begin</a>() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); <span class="keywordflow">return</span> GetElementsPointer(); }<span class="comment"></span></div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;<span class="comment"> //! \em Past-the-end element iterator</span></div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsArray() == true */</span></div><div class="line"><a name="l01566"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109"> 1566</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ValueIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109">End</a>() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); <span class="keywordflow">return</span> GetElementsPointer() + data_.a.size; }<span class="comment"></span></div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160;<span class="comment"> //! Constant element iterator</span></div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsArray() == true */</span></div><div class="line"><a name="l01569"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a07d947971c59c9ce884b3c5205c9238f"> 1569</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ConstValueIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a07d947971c59c9ce884b3c5205c9238f">Begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;<span class="keyword">&gt;</span>(*this).<a class="code" href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603">Begin</a>(); }<span class="comment"></span></div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;<span class="comment"> //! Constant \em past-the-end element iterator</span></div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;<span class="comment"></span><span class="comment"> /*! \pre IsArray() == true */</span></div><div class="line"><a name="l01572"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#abdd6a3b703a03aada4c186a2365698e7"> 1572</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ConstValueIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#abdd6a3b703a03aada4c186a2365698e7">End</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">const_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;<span class="keyword">&gt;</span>(*this).<a class="code" href="classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109">End</a>(); }</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160;<span class="comment"> //! Request the array to have enough capacity to store elements.</span></div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160;<span class="comment"></span><span class="comment"> /*! \param newCapacity The capacity that the array at least need to have.</span></div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01580"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a17971ba2bcd4eb1716098fdfe9182386"> 1580</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a17971ba2bcd4eb1716098fdfe9182386">Reserve</a>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> newCapacity, Allocator &amp;allocator) {</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray());</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; <span class="keywordflow">if</span> (newCapacity &gt; data_.a.capacity) {</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; SetElementsPointer(reinterpret_cast&lt;GenericValue*&gt;(allocator.Realloc(GetElementsPointer(), data_.a.capacity * <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>), newCapacity * <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>))));</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; data_.a.capacity = newCapacity;</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160; }</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; }</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160;<span class="comment"> //! Append a GenericValue at the end of the array.</span></div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160;<span class="comment"></span><span class="comment"> /*! \param value Value to be appended.</span></div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;<span class="comment"> \pre IsArray() == true</span></div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160;<span class="comment"> \post value.IsNull() == true</span></div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160;<span class="comment"> \note The ownership of \c value will be transferred to this array on success.</span></div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;<span class="comment"> \note If the number of elements to be appended is known, calls Reserve() once first may be more efficient.</span></div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160;<span class="comment"> \note Amortized constant time complexity.</span></div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01599"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a0ec9f34bef5890241d4bc882b73b1db4"> 1599</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a0ec9f34bef5890241d4bc882b73b1db4">PushBack</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; value, Allocator&amp; allocator) {</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray());</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; <span class="keywordflow">if</span> (data_.a.size &gt;= data_.a.capacity)</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; Reserve(data_.a.capacity == 0 ? kDefaultArrayCapacity : (data_.a.capacity + (data_.a.capacity + 1) / 2), allocator);</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; GetElementsPointer()[data_.a.size++].RawAssign(value);</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; }</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; PushBack(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;&amp; value, Allocator&amp; allocator) {</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; <span class="keywordflow">return</span> PushBack(value, allocator);</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; }</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160;<span class="comment"> //! Append a constant string reference at the end of the array.</span></div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160;<span class="comment"></span><span class="comment"> /*! \param value Constant string reference to be appended.</span></div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one used previously. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160;<span class="comment"> \pre IsArray() == true</span></div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;<span class="comment"> \note If the number of elements to be appended is known, calls Reserve() once first may be more efficient.</span></div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160;<span class="comment"> \note Amortized constant time complexity.</span></div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;<span class="comment"> \see GenericStringRef</span></div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01622"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a41946915cb219a684f6ffc9341efee22"> 1622</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a41946915cb219a684f6ffc9341efee22">PushBack</a>(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> value, Allocator&amp; allocator) {</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; <span class="keywordflow">return</span> (*this).template PushBack&lt;StringRefType&gt;(value, allocator);</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; }</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;<span class="comment"> //! Append a primitive value at the end of the array.</span></div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t</span></div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;<span class="comment"> \param value Value of primitive type T to be appended.</span></div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;<span class="comment"> \param allocator Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;<span class="comment"> \pre IsArray() == true</span></div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;<span class="comment"> \note If the number of elements to be appended is known, calls Reserve() once first may be more efficient.</span></div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;<span class="comment"> \note The source type \c T explicitly disallows all pointer types,</span></div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160;<span class="comment"> especially (\c const) \ref Ch*. This helps avoiding implicitly</span></div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160;<span class="comment"> referencing character strings with insufficient lifetime, use</span></div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160;<span class="comment"> \ref PushBack(GenericValue&amp;, Allocator&amp;) or \ref</span></div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;<span class="comment"> PushBack(StringRefType, Allocator&amp;).</span></div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;<span class="comment"> All other pointer types would implicitly convert to \c bool,</span></div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;<span class="comment"> use an explicit cast instead, if needed.</span></div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160;<span class="comment"> \note Amortized constant time complexity.</span></div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp;))</div><div class="line"><a name="l01645"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aa59273e0adfe2a9d0e6ac29d2537d9ed"> 1645</a></span>&#160; PushBack(T value, Allocator&amp; allocator) {</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a> v(value);</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; <span class="keywordflow">return</span> PushBack(v, allocator);</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; }</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160;<span class="comment"> //! Remove the last element in the array.</span></div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;<span class="comment"> \note Constant time complexity.</span></div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01654"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ae475f31fb851138ced40e2ff6cb43ca6"> 1654</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#ae475f31fb851138ced40e2ff6cb43ca6">PopBack</a>() {</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray());</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!Empty());</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; GetElementsPointer()[--data_.a.size].~GenericValue();</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; }</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;<span class="comment"> //! Remove an element of array by iterator.</span></div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160;<span class="comment"> \param pos iterator to the element to remove</span></div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160;<span class="comment"> \pre IsArray() == true &amp;&amp; \ref Begin() &lt;= \c pos &lt; \ref End()</span></div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;<span class="comment"> \return Iterator following the removed element. If the iterator pos refers to the last element, the End() iterator is returned.</span></div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01668"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99"> 1668</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ValueIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99">Erase</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">ConstValueIterator</a> pos) {</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; <span class="keywordflow">return</span> Erase(pos, pos + 1);</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; }</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;<span class="comment"> //! Remove elements in the range [first, last) of the array.</span></div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;<span class="comment"> \param first iterator to the first element to remove</span></div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;<span class="comment"> \param last iterator following the last element to remove</span></div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;<span class="comment"> \pre IsArray() == true &amp;&amp; \ref Begin() &lt;= \c first &lt;= \c last &lt;= \ref End()</span></div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;<span class="comment"> \return Iterator following the last removed element.</span></div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;<span class="comment"> \note Linear time complexity.</span></div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01680"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a916f443e02f9379d8fbde49a4d440f61"> 1680</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ValueIterator</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a916f443e02f9379d8fbde49a4d440f61">Erase</a>(<a class="code" href="classrapidjson_1_1_generic_value.html">ConstValueIterator</a> first, <a class="code" href="classrapidjson_1_1_generic_value.html">ConstValueIterator</a> last) {</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray());</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(data_.a.size &gt; 0);</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(GetElementsPointer() != 0);</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(first &gt;= Begin());</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(first &lt;= last);</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(last &lt;= End());</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ValueIterator</a> pos = Begin() + (first - Begin());</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classrapidjson_1_1_generic_value.html">ValueIterator</a> itr = pos; itr != last; ++itr)</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; itr-&gt;<a class="code" href="classrapidjson_1_1_generic_value.html#a433a64b466c80cadf7d1acaa6f065437">~GenericValue</a>(); </div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; std::memmove(pos, last, static_cast&lt;size_t&gt;(End() - last) * <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>));</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; data_.a.size -= <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(last - first);</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; <span class="keywordflow">return</span> pos;</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; }</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">Array</a> GetArray() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_array.html">Array</a>(*<span class="keyword">this</span>); }</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">ConstArray</a> GetArray()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsArray()); <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_array.html">ConstArray</a>(*<span class="keyword">this</span>); }</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;<span class="comment"> //!@name Number</span></div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; <span class="keywordtype">int</span> GetInt()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(data_.f.flags &amp; kIntFlag); <span class="keywordflow">return</span> data_.n.i.i; }</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <span class="keywordtype">unsigned</span> GetUint()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(data_.f.flags &amp; kUintFlag); <span class="keywordflow">return</span> data_.n.u.u; }</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; int64_t GetInt64()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(data_.f.flags &amp; kInt64Flag); <span class="keywordflow">return</span> data_.n.i64; }</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; uint64_t GetUint64()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(data_.f.flags &amp; kUint64Flag); <span class="keywordflow">return</span> data_.n.u64; }</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;<span class="comment"> //! Get the value as double type.</span></div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;<span class="comment"></span><span class="comment"> /*! \note If the value is 64-bit integer type, it may lose precision. Use \c IsLosslessDouble() to check whether the converison is lossless.</span></div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01711"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aa27d086d265f0ce447b15b15f0a2ed6e"> 1711</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="classrapidjson_1_1_generic_value.html#aa27d086d265f0ce447b15b15f0a2ed6e">GetDouble</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsNumber());</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; <span class="keywordflow">if</span> ((data_.f.flags &amp; kDoubleFlag) != 0) <span class="keywordflow">return</span> data_.n.d; <span class="comment">// exact type, no conversion.</span></div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="keywordflow">if</span> ((data_.f.flags &amp; kIntFlag) != 0) <span class="keywordflow">return</span> data_.n.i.i; <span class="comment">// int -&gt; double</span></div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; <span class="keywordflow">if</span> ((data_.f.flags &amp; kUintFlag) != 0) <span class="keywordflow">return</span> data_.n.u.u; <span class="comment">// unsigned -&gt; double</span></div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; <span class="keywordflow">if</span> ((data_.f.flags &amp; kInt64Flag) != 0) <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(data_.n.i64); <span class="comment">// int64_t -&gt; double (may lose precision)</span></div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>((data_.f.flags &amp; kUint64Flag) != 0); <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(data_.n.u64); <span class="comment">// uint64_t -&gt; double (may lose precision)</span></div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; }</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;<span class="comment"> //! Get the value as float type.</span></div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160;<span class="comment"></span><span class="comment"> /*! \note If the value is 64-bit integer type, it may lose precision. Use \c IsLosslessFloat() to check whether the converison is lossless.</span></div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01723"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a573712808dd5d8814c103cf55fd761b4"> 1723</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a573712808dd5d8814c103cf55fd761b4">GetFloat</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span><span class="keyword">&gt;</span>(GetDouble());</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; }</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; SetInt(<span class="keywordtype">int</span> i) { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(i); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; SetUint(<span class="keywordtype">unsigned</span> u) { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(u); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; SetInt64(int64_t i64) { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(i64); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; SetUint64(uint64_t u64) { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(u64); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; SetDouble(<span class="keywordtype">double</span> d) { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(d); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; SetFloat(<span class="keywordtype">float</span> f) { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); <span class="keyword">new</span> (<span class="keyword">this</span>) <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(static_cast&lt;double&gt;(f)); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160;<span class="comment"> //!@name String</span></div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; <span class="keyword">const</span> Ch* GetString()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsString()); <span class="keywordflow">return</span> (data_.f.flags &amp; kInlineStrFlag) ? data_.ss.str : GetStringPointer(); }</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;<span class="comment"> //! Get the length of string.</span></div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;<span class="comment"></span><span class="comment"> /*! Since rapidjson permits &quot;\\u0000&quot; in the json string, strlen(v.GetString()) may not equal to v.GetStringLength().</span></div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01744"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea"> 1744</a></span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> <a class="code" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea">GetStringLength</a>()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsString()); <span class="keywordflow">return</span> ((data_.f.flags &amp; kInlineStrFlag) ? (data_.ss.GetLength()) : data_.s.length); }</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160;<span class="comment"> //! Set this value as a string without copying source string.</span></div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160;<span class="comment"></span><span class="comment"> /*! This version has better performance with supplied length, and also support string containing null character.</span></div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160;<span class="comment"> \param s source string pointer. </span></div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;<span class="comment"> \param length The length of source string, excluding the trailing null terminator.</span></div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;<span class="comment"> \post IsString() == true &amp;&amp; GetString() == s &amp;&amp; GetStringLength() == length</span></div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160;<span class="comment"> \see SetString(StringRefType)</span></div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01754"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f"> 1754</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f">SetString</a>(<span class="keyword">const</span> Ch* s, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length) { <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f">SetString</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s, length)); }</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;<span class="comment"> //! Set this value as a string without copying source string.</span></div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;<span class="comment"></span><span class="comment"> /*! \param s source string reference</span></div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;<span class="comment"> \post IsString() == true &amp;&amp; GetString() == s &amp;&amp; GetStringLength() == s.length</span></div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01761"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#aabb538578a3c1e60c86cda32d062bc1c"> 1761</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#aabb538578a3c1e60c86cda32d062bc1c">SetString</a>(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> s) { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); SetStringRaw(s); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;<span class="comment"> //! Set this value as a string by copying from source string.</span></div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160;<span class="comment"></span><span class="comment"> /*! This version has better performance with supplied length, and also support string containing null character.</span></div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;<span class="comment"> \param s source string. </span></div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160;<span class="comment"> \param length The length of source string, excluding the trailing null terminator.</span></div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;<span class="comment"> \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160;<span class="comment"> \post IsString() == true &amp;&amp; GetString() != s &amp;&amp; strcmp(GetString(),s) == 0 &amp;&amp; GetStringLength() == length</span></div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01771"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ae6351043ec30d8a151b0a072cfbc46d5"> 1771</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#ae6351043ec30d8a151b0a072cfbc46d5">SetString</a>(<span class="keyword">const</span> Ch* s, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, Allocator&amp; allocator) { <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_value.html#ae6351043ec30d8a151b0a072cfbc46d5">SetString</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s, length), allocator); }</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160;<span class="comment"> //! Set this value as a string by copying from source string.</span></div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;<span class="comment"></span><span class="comment"> /*! \param s source string. </span></div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;<span class="comment"> \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160;<span class="comment"> \post IsString() == true &amp;&amp; GetString() != s &amp;&amp; strcmp(GetString(),s) == 0 &amp;&amp; GetStringLength() == length</span></div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01779"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ab4babf200cac2dacb412a3ea279ddf5b"> 1779</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#ab4babf200cac2dacb412a3ea279ddf5b">SetString</a>(<span class="keyword">const</span> Ch* s, Allocator&amp; allocator) { <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_value.html#ab4babf200cac2dacb412a3ea279ddf5b">SetString</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s), allocator); }</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160;<span class="comment"> //! Set this value as a string by copying from source string.</span></div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;<span class="comment"></span><span class="comment"> /*! \param s source string reference</span></div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160;<span class="comment"> \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160;<span class="comment"> \post IsString() == true &amp;&amp; GetString() != s.s &amp;&amp; strcmp(GetString(),s) == 0 &amp;&amp; GetStringLength() == length</span></div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01787"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a9ba3d9d8a106d5b7e92fb49db897c21b"> 1787</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a9ba3d9d8a106d5b7e92fb49db897c21b">SetString</a>(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> s, Allocator&amp; allocator) { this-&gt;~<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>(); SetStringRaw(s, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;<span class="comment"> //! Set this value as a string by copying from source string.</span></div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;<span class="comment"></span><span class="comment"> /*! \param s source string.</span></div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;<span class="comment"> \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().</span></div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160;<span class="comment"> \return The value itself for fluent API.</span></div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;<span class="comment"> \post IsString() == true &amp;&amp; GetString() != s.data() &amp;&amp; strcmp(GetString(),s.data() == 0 &amp;&amp; GetStringLength() == s.size()</span></div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160;<span class="comment"> \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING.</span></div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01797"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#a3e930bffb40a78e570e3deef461f0532"> 1797</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; <a class="code" href="classrapidjson_1_1_generic_value.html#a3e930bffb40a78e570e3deef461f0532">SetString</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; s, Allocator&amp; allocator) { <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_value.html#a3e930bffb40a78e570e3deef461f0532">SetString</a>(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(s), allocator); }</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160;<span class="comment"> //!@name Array</span></div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;<span class="comment"> //! Templated version for checking whether this value is type T.</span></div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;<span class="comment"> \tparam T Either \c bool, \c int, \c unsigned, \c int64_t, \c uint64_t, \c double, \c float, \c const \c char*, \c std::basic_string&lt;Ch&gt;</span></div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01810"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#acc6b1791cca8daef18521918136264b7"> 1810</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#acc6b1791cca8daef18521918136264b7">Is</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> internal::TypeHelper&lt;ValueType, T&gt;::Is(*<span class="keyword">this</span>); }</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160;</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; T Get()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> internal::TypeHelper&lt;ValueType, T&gt;::Get(*<span class="keyword">this</span>); }</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; T Get() { <span class="keywordflow">return</span> internal::TypeHelper&lt;ValueType, T&gt;::Get(*<span class="keyword">this</span>); }</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160;</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ValueType</a>&amp; Set(<span class="keyword">const</span> T&amp; data) { <span class="keywordflow">return</span> internal::TypeHelper&lt;ValueType, T&gt;::Set(*<span class="keyword">this</span>, data); }</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">ValueType</a>&amp; Set(<span class="keyword">const</span> T&amp; data, <a class="code" href="classrapidjson_1_1_allocator.html">AllocatorType</a>&amp; allocator) { <span class="keywordflow">return</span> internal::TypeHelper&lt;ValueType, T&gt;::Set(*<span class="keyword">this</span>, data, allocator); }</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160;<span class="comment"> //! Generate events of this value to a Handler.</span></div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160;<span class="comment"></span><span class="comment"> /*! This function adopts the GoF visitor pattern.</span></div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160;<span class="comment"> Typical usage is to output this JSON value as JSON text via Writer, which is a Handler.</span></div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;<span class="comment"> It can also be used to deep clone this value via GenericDocument, which is also a Handler.</span></div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160;<span class="comment"> \tparam Handler type of handler.</span></div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;<span class="comment"> \param handler An object implementing concept Handler.</span></div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Handler&gt;</div><div class="line"><a name="l01834"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c"> 1834</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c">Accept</a>(<a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler)<span class="keyword"> const </span>{</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; <span class="keywordflow">switch</span>(GetType()) {</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">kNullType</a>: <span class="keywordflow">return</span> handler.Null();</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">kFalseType</a>: <span class="keywordflow">return</span> handler.Bool(<span class="keyword">false</span>);</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">kTrueType</a>: <span class="keywordflow">return</span> handler.Bool(<span class="keyword">true</span>);</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160;</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>:</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.StartObject()))</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classrapidjson_1_1_generic_member_iterator.html">ConstMemberIterator</a> m = MemberBegin(); m != MemberEnd(); ++m) {</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(m-&gt;name.IsString()); <span class="comment">// User may change the type of name by MemberIterator.</span></div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.Key(m-&gt;name.GetString(), m-&gt;name.GetStringLength(), (m-&gt;name.data_.f.flags &amp; kCopyFlag) != 0)))</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!m-&gt;value.Accept(handler)))</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; }</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; <span class="keywordflow">return</span> handler.EndObject(data_.o.size);</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160;</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>:</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.StartArray()))</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* v = Begin(); v != End(); ++v)</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!v-&gt;Accept(handler)))</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; <span class="keywordflow">return</span> handler.EndArray(data_.a.size);</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; </div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>:</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; <span class="keywordflow">return</span> handler.String(GetString(), GetStringLength(), (data_.f.flags &amp; kCopyFlag) != 0);</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; </div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(GetType() == <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>);</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; <span class="keywordflow">if</span> (IsDouble()) <span class="keywordflow">return</span> handler.Double(data_.n.d);</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (IsInt()) <span class="keywordflow">return</span> handler.Int(data_.n.i.i);</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (IsUint()) <span class="keywordflow">return</span> handler.Uint(data_.n.u.u);</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (IsInt64()) <span class="keywordflow">return</span> handler.Int64(data_.n.i64);</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">return</span> handler.Uint64(data_.n.u64);</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; }</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; }</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>&gt; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>;</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>, <span class="keyword">typename</span>&gt; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>;</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160;</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; <span class="keyword">enum</span> {</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; kBoolFlag = 0x0008,</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; kNumberFlag = 0x0010,</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160; kIntFlag = 0x0020,</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; kUintFlag = 0x0040,</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; kInt64Flag = 0x0080,</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; kUint64Flag = 0x0100,</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; kDoubleFlag = 0x0200,</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; kStringFlag = 0x0400,</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; kCopyFlag = 0x0800,</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; kInlineStrFlag = 0x1000,</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160;</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; <span class="comment">// Initial flags of different types.</span></div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; kNullFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">kNullType</a>,</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; kTrueFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">kTrueType</a> | kBoolFlag,</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160; kFalseFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">kFalseType</a> | kBoolFlag,</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; kNumberIntFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a> | kNumberFlag | kIntFlag | kInt64Flag,</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; kNumberUintFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a> | kNumberFlag | kUintFlag | kUint64Flag | kInt64Flag,</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; kNumberInt64Flag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a> | kNumberFlag | kInt64Flag,</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; kNumberUint64Flag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a> | kNumberFlag | kUint64Flag,</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; kNumberDoubleFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a> | kNumberFlag | kDoubleFlag,</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; kNumberAnyFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a> | kNumberFlag | kIntFlag | kInt64Flag | kUintFlag | kUint64Flag | kDoubleFlag,</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; kConstStringFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a> | kStringFlag,</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; kCopyStringFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a> | kStringFlag | kCopyFlag,</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; kShortStringFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a> | kStringFlag | kCopyFlag | kInlineStrFlag,</div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; kObjectFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>,</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; kArrayFlag = <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>,</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160;</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; kTypeMask = 0x07</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; };</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160;</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> kDefaultArrayCapacity = 16;</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> kDefaultObjectCapacity = 16;</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160;</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; <span class="keyword">struct </span>Flag {</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160;<span class="preprocessor">#if RAPIDJSON_48BITPOINTER_OPTIMIZATION</span></div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; <span class="keywordtype">char</span> payload[<span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) * 2 + 6]; <span class="comment">// 2 x SizeType + lower 48-bit pointer</span></div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;<span class="preprocessor">#elif RAPIDJSON_64BIT</span></div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; <span class="keywordtype">char</span> payload[<span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) * 2 + <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*) + 6]; <span class="comment">// 6 padding bytes</span></div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; <span class="keywordtype">char</span> payload[<span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) * 2 + <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*) + 2]; <span class="comment">// 2 padding bytes</span></div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; uint16_t flags;</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; };</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160;</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; <span class="keyword">struct </span>String {</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length;</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> hashcode; <span class="comment">//!&lt; reserved</span></div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160;<span class="comment"></span> <span class="keyword">const</span> Ch* str;</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; }; <span class="comment">// 12 bytes in 32-bit mode, 16 bytes in 64-bit mode</span></div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160;</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; <span class="comment">// implementation detail: ShortString can represent zero-terminated strings up to MaxSize chars</span></div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; <span class="comment">// (excluding the terminating zero) and store a value to determine the length of the contained</span></div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; <span class="comment">// string in the last character str[LenPos] by storing &quot;MaxSize - length&quot; there. If the string</span></div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; <span class="comment">// to store has the maximal length of MaxSize then str[LenPos] will be 0 and therefore act as</span></div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; <span class="comment">// the string terminator as well. For getting the string length back from that value just use</span></div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; <span class="comment">// &quot;MaxSize - str[LenPos]&quot;.</span></div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; <span class="comment">// This allows to store 13-chars strings in 32-bit mode, 21-chars strings in 64-bit mode,</span></div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; <span class="comment">// 13-chars strings for RAPIDJSON_48BITPOINTER_OPTIMIZATION=1 inline (for `UTF8`-encoded strings).</span></div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160; <span class="keyword">struct </span>ShortString {</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; <span class="keyword">enum</span> { MaxChars = <span class="keyword">sizeof</span>(<span class="keyword">static_cast&lt;</span>Flag*<span class="keyword">&gt;</span>(0)-&gt;payload) / <span class="keyword">sizeof</span>(Ch), MaxSize = MaxChars - 1, LenPos = MaxSize };</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; Ch str[MaxChars];</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160;</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> Usable(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len) { <span class="keywordflow">return</span> (MaxSize &gt;= len); }</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> SetLength(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len) { str[LenPos] = <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(MaxSize - len); }</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; <span class="keyword">inline</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> GetLength()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(MaxSize - str[LenPos]); }</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; }; <span class="comment">// at most as many bytes as &quot;String&quot; above =&gt; 12 bytes in 32-bit mode, 16 bytes in 64-bit mode</span></div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; <span class="comment">// By using proper binary layout, retrieval of different integer types do not need conversions.</span></div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; <span class="keyword">union </span>Number {</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160;<span class="preprocessor">#if RAPIDJSON_ENDIAN == RAPIDJSON_LITTLEENDIAN</span></div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; <span class="keyword">struct </span>I {</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160; <span class="keywordtype">char</span> padding[4];</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; }i;</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; <span class="keyword">struct </span>U {</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; <span class="keywordtype">unsigned</span> u;</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; <span class="keywordtype">char</span> padding2[4];</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; }u;</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01957"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_value_1_1_number_1_1_i.html"> 1957</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_value_1_1_number_1_1_i.html">I</a> {</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; <span class="keywordtype">char</span> padding[4];</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; }i;</div><div class="line"><a name="l01961"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_value_1_1_number_1_1_u.html"> 1961</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_value_1_1_number_1_1_u.html">U</a> {</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160; <span class="keywordtype">char</span> padding2[4];</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; <span class="keywordtype">unsigned</span> u;</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; }u;</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; int64_t i64;</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; uint64_t u64;</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; <span class="keywordtype">double</span> d;</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; }; <span class="comment">// 8 bytes</span></div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160;</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; <span class="keyword">struct </span>ObjectData {</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> size;</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> capacity;</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; <a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>* members;</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; }; <span class="comment">// 12 bytes in 32-bit mode, 16 bytes in 64-bit mode</span></div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160;</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; <span class="keyword">struct </span>ArrayData {</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> size;</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> capacity;</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* elements;</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; }; <span class="comment">// 12 bytes in 32-bit mode, 16 bytes in 64-bit mode</span></div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; <span class="keyword">union </span>Data {</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; String s;</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; ShortString ss;</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; Number n;</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; ObjectData o;</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160; ArrayData a;</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160; Flag f;</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160; }; <span class="comment">// 16 bytes in 32-bit mode, 24 bytes in 64-bit mode, 16 bytes in 64-bit with RAPIDJSON_48BITPOINTER_OPTIMIZATION</span></div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160;</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; RAPIDJSON_FORCEINLINE <span class="keyword">const</span> Ch* GetStringPointer()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RAPIDJSON_GETPOINTER(Ch, data_.s.str); }</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160; RAPIDJSON_FORCEINLINE <span class="keyword">const</span> Ch* SetStringPointer(<span class="keyword">const</span> Ch* str) { <span class="keywordflow">return</span> RAPIDJSON_SETPOINTER(Ch, data_.s.str, str); }</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160; RAPIDJSON_FORCEINLINE <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* GetElementsPointer()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RAPIDJSON_GETPOINTER(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>, data_.a.elements); }</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; RAPIDJSON_FORCEINLINE <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* SetElementsPointer(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* elements) { <span class="keywordflow">return</span> RAPIDJSON_SETPOINTER(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>, data_.a.elements, elements); }</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; RAPIDJSON_FORCEINLINE <a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>* GetMembersPointer()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RAPIDJSON_GETPOINTER(<a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>, data_.o.members); }</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; RAPIDJSON_FORCEINLINE <a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>* SetMembersPointer(<a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>* members) { <span class="keywordflow">return</span> RAPIDJSON_SETPOINTER(<a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>, data_.o.members, members); }</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160;</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160; <span class="comment">// Initialize this value as array with initial data, without calling destructor.</span></div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; <span class="keywordtype">void</span> SetArrayRaw(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* values, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count, Allocator&amp; allocator) {</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; data_.f.flags = kArrayFlag;</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; <span class="keywordflow">if</span> (count) {</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>* e = <span class="keyword">static_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>*<span class="keyword">&gt;</span>(allocator.Malloc(count * <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>)));</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; SetElementsPointer(e);</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160; std::memcpy(e, values, count * <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>));</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160; }</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; SetElementsPointer(0);</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160; data_.a.size = data_.a.capacity = count;</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; }</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;<span class="comment"> //! Initialize this value as object with initial data, without calling destructor.</span></div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> SetObjectRaw(<a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>* members, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count, Allocator&amp; allocator) {</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; data_.f.flags = kObjectFlag;</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160; <span class="keywordflow">if</span> (count) {</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160; <a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>* m = <span class="keyword">static_cast&lt;</span><a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>*<span class="keyword">&gt;</span>(allocator.Malloc(count * <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>)));</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160; SetMembersPointer(m);</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160; std::memcpy(m, members, count * <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_generic_member.html">Member</a>));</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; }</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160; SetMembersPointer(0);</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160; data_.o.size = data_.o.capacity = count;</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160; }</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160;<span class="comment"> //! Initialize this value as constant string, without calling destructor.</span></div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> SetStringRaw(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> s) RAPIDJSON_NOEXCEPT {</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; data_.f.flags = kConstStringFlag;</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160; SetStringPointer(s);</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160; data_.s.length = s.<a class="code" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">length</a>;</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160; }</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160;<span class="comment"> //! Initialize this value as copy string with initial data, without calling destructor.</span></div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> SetStringRaw(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">StringRefType</a> s, Allocator&amp; allocator) {</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160; Ch* str = 0;</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160; <span class="keywordflow">if</span> (ShortString::Usable(s.<a class="code" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">length</a>)) {</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; data_.f.flags = kShortStringFlag;</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160; data_.ss.SetLength(s.<a class="code" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">length</a>);</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; str = data_.ss.str;</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160; data_.f.flags = kCopyStringFlag;</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160; data_.s.length = s.<a class="code" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">length</a>;</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160; str = <span class="keyword">static_cast&lt;</span>Ch *<span class="keyword">&gt;</span>(allocator.Malloc((s.<a class="code" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">length</a> + 1) * <span class="keyword">sizeof</span>(Ch)));</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160; SetStringPointer(str);</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160; }</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; std::memcpy(str, s, s.<a class="code" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">length</a> * <span class="keyword">sizeof</span>(Ch));</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; str[s.<a class="code" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">length</a>] = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; }</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160;<span class="comment"> //! Assignment without calling destructor</span></div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> RawAssign(<a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&amp; rhs) RAPIDJSON_NOEXCEPT {</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160; data_ = rhs.data_;</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160; <span class="comment">// data_.f.flags = rhs.data_.f.flags;</span></div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160; rhs.data_.f.flags = kNullFlag;</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; }</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160;</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt;</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; <span class="keywordtype">bool</span> StringEqual(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, SourceAllocator&gt;</a>&amp; rhs)<span class="keyword"> const </span>{</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsString());</div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(rhs.IsString());</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160;</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len1 = GetStringLength();</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len2 = rhs.<a class="code" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea">GetStringLength</a>();</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; <span class="keywordflow">if</span>(len1 != len2) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160;</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; <span class="keyword">const</span> Ch* <span class="keyword">const</span> str1 = GetString();</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; <span class="keyword">const</span> Ch* <span class="keyword">const</span> str2 = rhs.GetString();</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160; <span class="keywordflow">if</span>(str1 == str2) { <span class="keywordflow">return</span> <span class="keyword">true</span>; } <span class="comment">// fast path for constant string</span></div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160;</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; <span class="keywordflow">return</span> (std::memcmp(str1, str2, <span class="keyword">sizeof</span>(Ch) * len1) == 0);</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; }</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160; Data data_;</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;};</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160;<span class="comment">//! GenericValue with UTF8 encoding</span></div><div class="line"><a name="l02076"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505"> 2076</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;UTF8&lt;&gt;</a> &gt; <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>;</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160;<span class="comment"></span><span class="comment">// GenericDocument </span></div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160;<span class="comment">//! A document for parsing JSON text as DOM.</span></div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160;<span class="comment"> \note implements Handler concept</span></div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160;<span class="comment"> \tparam Encoding Encoding for both parsing and string storage.</span></div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160;<span class="comment"> \tparam Allocator Allocator for allocating memory for the DOM</span></div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160;<span class="comment"> \tparam StackAllocator Allocator for allocating memory for stack during parsing.</span></div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160;<span class="comment"> \warning Although GenericDocument inherits from GenericValue, the API does \b not provide any virtual functions, especially no virtual destructor. To avoid memory leaks, do not \c delete a GenericDocument object via a pointer to a GenericValue.</span></div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator = MemoryPoolAllocator&lt;&gt;, <span class="keyword">typename</span> StackAllocator = CrtAllocator&gt;</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a> : <span class="keyword">public</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt;Encoding, Allocator&gt; {</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l02092"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a8367a827588dd91d02e21ef945bec9f5"> 2092</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch <a class="code" href="classrapidjson_1_1_generic_document.html#a8367a827588dd91d02e21ef945bec9f5">Ch</a>; <span class="comment">//!&lt; Character type derived from Encoding.</span></div><div class="line"><a name="l02093"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a41bbec044c421e870a9d355075d741bc"> 2093</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;Encoding, Allocator&gt;</a> <a class="code" href="classrapidjson_1_1_generic_document.html#a41bbec044c421e870a9d355075d741bc">ValueType</a>; <span class="comment">//!&lt; Value type of the document.</span></div><div class="line"><a name="l02094"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a4c85243a28c9dcf2d1357da00fcaa773"> 2094</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> Allocator <a class="code" href="classrapidjson_1_1_generic_document.html#a4c85243a28c9dcf2d1357da00fcaa773">AllocatorType</a>; <span class="comment">//!&lt; Allocator type from template parameter.</span></div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160;<span class="comment"> //! Constructor</span></div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160;<span class="comment"></span><span class="comment"> /*! Creates an empty document of specified type.</span></div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160;<span class="comment"> \param type Mandatory type of object to create.</span></div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160;<span class="comment"> \param allocator Optional allocator for allocating memory.</span></div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160;<span class="comment"> \param stackCapacity Optional initial capacity of stack in bytes.</span></div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160;<span class="comment"> \param stackAllocator Optional allocator for allocating memory for stack.</span></div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02103"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#aa52c3016961f25ecd989d82839bce4e5"> 2103</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_document.html#aa52c3016961f25ecd989d82839bce4e5">GenericDocument</a>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type, Allocator* allocator = 0, <span class="keywordtype">size_t</span> stackCapacity = kDefaultStackCapacity, StackAllocator* stackAllocator = 0) :</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt;Encoding, Allocator&gt;(type), allocator_(allocator), ownAllocator_(0), stack_(stackAllocator, stackCapacity), parseResult_()</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160; {</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; <span class="keywordflow">if</span> (!allocator_)</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; ownAllocator_ = allocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(Allocator)();</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; }</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160;<span class="comment"> //! Constructor</span></div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160;<span class="comment"></span><span class="comment"> /*! Creates an empty document which type is Null. </span></div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160;<span class="comment"> \param allocator Optional allocator for allocating memory.</span></div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160;<span class="comment"> \param stackCapacity Optional initial capacity of stack in bytes.</span></div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160;<span class="comment"> \param stackAllocator Optional allocator for allocating memory for stack.</span></div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02116"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a82b27e7b228eb46a23f99720063ab4fb"> 2116</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html#a82b27e7b228eb46a23f99720063ab4fb">GenericDocument</a>(Allocator* allocator = 0, <span class="keywordtype">size_t</span> stackCapacity = kDefaultStackCapacity, StackAllocator* stackAllocator = 0) : </div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160; allocator_(allocator), ownAllocator_(0), stack_(stackAllocator, stackCapacity), parseResult_()</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160; {</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; <span class="keywordflow">if</span> (!allocator_)</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; ownAllocator_ = allocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(Allocator)();</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160; }</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160;</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160;<span class="comment"> //! Move constructor in C++11</span></div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp;&amp; rhs) RAPIDJSON_NOEXCEPT</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160; : ValueType(std::forward&lt;ValueType&gt;(rhs)), <span class="comment">// explicit cast to avoid prohibited move from Document</span></div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; allocator_(rhs.allocator_),</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160; ownAllocator_(rhs.ownAllocator_),</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; stack_(std::move(rhs.stack_)),</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160; parseResult_(rhs.parseResult_)</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160; {</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160; rhs.allocator_ = 0;</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; rhs.ownAllocator_ = 0;</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160; rhs.parseResult_ = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a>();</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160; }</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160;</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; ~<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>() {</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160; Destroy();</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; }</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160;</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160;<span class="comment"> //! Move assignment in C++11</span></div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; operator=(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp;&amp; rhs) RAPIDJSON_NOEXCEPT</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; {</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160; <span class="comment">// The cast to ValueType is necessary here, because otherwise it would</span></div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; <span class="comment">// attempt to call GenericValue&#39;s templated assignment operator.</span></div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160; ValueType::operator=(std::forward&lt;ValueType&gt;(rhs));</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160;</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; <span class="comment">// Calling the destructor here would prematurely call stack_&#39;s destructor</span></div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; Destroy();</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160;</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160; allocator_ = rhs.allocator_;</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160; ownAllocator_ = rhs.ownAllocator_;</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160; stack_ = std::move(rhs.stack_);</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160; parseResult_ = rhs.parseResult_;</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160;</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; rhs.allocator_ = 0;</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; rhs.ownAllocator_ = 0;</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; rhs.parseResult_ = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a>();</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160;</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; }</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160;<span class="comment"> //! Exchange the contents of this document with those of another.</span></div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160;<span class="comment"> \param rhs Another document.</span></div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160;<span class="comment"> \note Constant complexity.</span></div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160;<span class="comment"> \see GenericValue::Swap</span></div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02172"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#abf1cbab989b856f9d260787b2575750b"> 2172</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#abf1cbab989b856f9d260787b2575750b">Swap</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; rhs) RAPIDJSON_NOEXCEPT {</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; ValueType::Swap(rhs);</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; stack_.Swap(rhs.stack_);</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; internal::Swap(allocator_, rhs.allocator_);</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160; internal::Swap(ownAllocator_, rhs.ownAllocator_);</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; internal::Swap(parseResult_, rhs.parseResult_);</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; }</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160;<span class="comment"> //! free-standing swap function helper</span></div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160;<span class="comment"> Helper function to enable support for common swap implementation pattern based on \c std::swap:</span></div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160;<span class="comment"> \code</span></div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160;<span class="comment"> void swap(MyClass&amp; a, MyClass&amp; b) {</span></div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160;<span class="comment"> using std::swap;</span></div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;<span class="comment"> swap(a.doc, b.doc);</span></div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160;<span class="comment"> // ...</span></div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160;<span class="comment"> }</span></div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160;<span class="comment"> \endcode</span></div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160;<span class="comment"> \see Swap()</span></div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02193"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a0d63efcc43758ac3aed77e868233369d"> 2193</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_document.html#a0d63efcc43758ac3aed77e868233369d">swap</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; a, <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; b) RAPIDJSON_NOEXCEPT { a.Swap(b); }</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160;<span class="comment"> //! Populate this document by a generator which produces SAX events.</span></div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam Generator A functor with &lt;tt&gt;bool f(Handler)&lt;/tt&gt; prototype.</span></div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160;<span class="comment"> \param g Generator functor which sends SAX events to the parameter.</span></div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160;<span class="comment"> \return The document itself for fluent API.</span></div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Generator&gt;</div><div class="line"><a name="l02201"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a63e18887979da500ece6f0bd10d29b64"> 2201</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a63e18887979da500ece6f0bd10d29b64">Populate</a>(Generator&amp; g) {</div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160; ClearStackOnExit scope(*<span class="keyword">this</span>);</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160; <span class="keywordflow">if</span> (g(*<span class="keyword">this</span>)) {</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(stack_.GetSize() == <span class="keyword">sizeof</span>(ValueType)); <span class="comment">// Got one and only one root object</span></div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160; ValueType::operator=(*stack_.template Pop&lt;ValueType&gt;(1));<span class="comment">// Move value from stack to document</span></div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160; }</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160; }</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160;<span class="comment"> //!@name Parse from stream</span></div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160;<span class="comment"> //!@{</span></div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160;<span class="comment"> //! Parse JSON text from an input stream (with Encoding conversion)</span></div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam parseFlags Combination of \ref ParseFlag.</span></div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160;<span class="comment"> \tparam SourceEncoding Encoding of input stream</span></div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;<span class="comment"> \tparam InputStream Type of input stream, implementing Stream concept</span></div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160;<span class="comment"> \param is Input stream to be parsed.</span></div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;<span class="comment"> \return The document itself for fluent API.</span></div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l02221"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85"> 2221</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">ParseStream</a>(InputStream&amp; is) {</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160; <a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader&lt;SourceEncoding, Encoding, StackAllocator&gt;</a> reader(</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160; stack_.HasAllocator() ? &amp;stack_.GetAllocator() : 0);</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>&#160; ClearStackOnExit scope(*<span class="keyword">this</span>);</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160; parseResult_ = reader.template Parse&lt;parseFlags&gt;(is, *<span class="keyword">this</span>);</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160; <span class="keywordflow">if</span> (parseResult_) {</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(stack_.GetSize() == <span class="keyword">sizeof</span>(ValueType)); <span class="comment">// Got one and only one root object</span></div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160; ValueType::operator=(*stack_.template Pop&lt;ValueType&gt;(1));<span class="comment">// Move value from stack to document</span></div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160; }</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160; }</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160;<span class="comment"> //! Parse JSON text from an input stream</span></div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam parseFlags Combination of \ref ParseFlag.</span></div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160;<span class="comment"> \tparam InputStream Type of input stream, implementing Stream concept</span></div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160;<span class="comment"> \param is Input stream to be parsed.</span></div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160;<span class="comment"> \return The document itself for fluent API.</span></div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l02240"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#ae4ee7d86b8c906c83dbe15e57eb6ac6a"> 2240</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#ae4ee7d86b8c906c83dbe15e57eb6ac6a">ParseStream</a>(InputStream&amp; is) {</div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160; <span class="keywordflow">return</span> ParseStream&lt;parseFlags, Encoding, InputStream&gt;(is);</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160; }</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>&#160;<span class="comment"> //! Parse JSON text from an input stream (with \ref kParseDefaultFlags)</span></div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam InputStream Type of input stream, implementing Stream concept</span></div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160;<span class="comment"> \param is Input stream to be parsed.</span></div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160;<span class="comment"> \return The document itself for fluent API.</span></div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l02250"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#acf96a3c7fd61486d049c701b1fe5d414"> 2250</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#acf96a3c7fd61486d049c701b1fe5d414">ParseStream</a>(InputStream&amp; is) {</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160; <span class="keywordflow">return</span> ParseStream&lt;kParseDefaultFlags, Encoding, InputStream&gt;(is);</div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160; }<span class="comment"></span></div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160;<span class="comment"> //!@}</span></div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160;<span class="comment"> //!@name Parse in-place from mutable string</span></div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160;<span class="comment"> //!@{</span></div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160;<span class="comment"> //! Parse JSON text from a mutable string</span></div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam parseFlags Combination of \ref ParseFlag.</span></div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160;<span class="comment"> \param str Mutable zero-terminated string to be parsed.</span></div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160;<span class="comment"> \return The document itself for fluent API.</span></div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags&gt;</div><div class="line"><a name="l02264"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a7ba626bf84eb45a9bca0b7723bf47f3f"> 2264</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a7ba626bf84eb45a9bca0b7723bf47f3f">ParseInsitu</a>(Ch* str) {</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160; <a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream&lt;Encoding&gt;</a> s(str);</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160; <span class="keywordflow">return</span> ParseStream&lt;parseFlags | kParseInsituFlag&gt;(s);</div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160; }</div><div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160;<span class="comment"> //! Parse JSON text from a mutable string (with \ref kParseDefaultFlags)</span></div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160;<span class="comment"></span><span class="comment"> /*! \param str Mutable zero-terminated string to be parsed.</span></div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160;<span class="comment"> \return The document itself for fluent API.</span></div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02273"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#af061c039a990c2970dc31e5626149367"> 2273</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#af061c039a990c2970dc31e5626149367">ParseInsitu</a>(Ch* str) {</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160; <span class="keywordflow">return</span> ParseInsitu&lt;kParseDefaultFlags&gt;(str);</div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160; }<span class="comment"></span></div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160;<span class="comment"> //!@}</span></div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160;<span class="comment"> //!@name Parse from read-only string</span></div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160;<span class="comment"> //!@{</span></div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160;<span class="comment"> //! Parse JSON text from a read-only string (with Encoding conversion)</span></div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam parseFlags Combination of \ref ParseFlag (must not contain \ref kParseInsituFlag).</span></div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160;<span class="comment"> \tparam SourceEncoding Transcoding from input Encoding</span></div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160;<span class="comment"> \param str Read-only zero-terminated string to be parsed.</span></div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02286"></a><span class="lineno"> 2286</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> SourceEncoding&gt;</div><div class="line"><a name="l02287"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c"> 2287</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">Parse</a>(<span class="keyword">const</span> <span class="keyword">typename</span> SourceEncoding::Ch* str) {</div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!(parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea">kParseInsituFlag</a>));</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160; <a class="code" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream&lt;SourceEncoding&gt;</a> s(str);</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160; <span class="keywordflow">return</span> ParseStream&lt;parseFlags, SourceEncoding&gt;(s);</div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160; }</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160;<span class="comment"> //! Parse JSON text from a read-only string</span></div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam parseFlags Combination of \ref ParseFlag (must not contain \ref kParseInsituFlag).</span></div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160;<span class="comment"> \param str Read-only zero-terminated string to be parsed.</span></div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags&gt;</div><div class="line"><a name="l02298"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a42c35e2f64c288f14b74fec2792500c8"> 2298</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a42c35e2f64c288f14b74fec2792500c8">Parse</a>(<span class="keyword">const</span> Ch* str) {</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160; <span class="keywordflow">return</span> Parse&lt;parseFlags, Encoding&gt;(str);</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160; }</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160;<span class="comment"> //! Parse JSON text from a read-only string (with \ref kParseDefaultFlags)</span></div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160;<span class="comment"></span><span class="comment"> /*! \param str Read-only zero-terminated string to be parsed.</span></div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02305"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#ab031375318d133f83a114314b75703de"> 2305</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#ab031375318d133f83a114314b75703de">Parse</a>(<span class="keyword">const</span> Ch* str) {</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160; <span class="keywordflow">return</span> Parse&lt;kParseDefaultFlags&gt;(str);</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160; }</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160;</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> SourceEncoding&gt;</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; Parse(<span class="keyword">const</span> <span class="keyword">typename</span> SourceEncoding::Ch* str, <span class="keywordtype">size_t</span> length) {</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!(parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea">kParseInsituFlag</a>));</div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160; <a class="code" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a> ms(reinterpret_cast&lt;const char*&gt;(str), length * <span class="keyword">sizeof</span>(<span class="keyword">typename</span> SourceEncoding::Ch));</div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream&lt;SourceEncoding, MemoryStream&gt;</a> is(ms);</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160; ParseStream&lt;parseFlags, SourceEncoding&gt;(is);</div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160; }</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160;</div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags&gt;</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; Parse(<span class="keyword">const</span> Ch* str, <span class="keywordtype">size_t</span> length) {</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160; <span class="keywordflow">return</span> Parse&lt;parseFlags, Encoding&gt;(str, length);</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160; }</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160; </div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; Parse(<span class="keyword">const</span> Ch* str, <span class="keywordtype">size_t</span> length) {</div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160; <span class="keywordflow">return</span> Parse&lt;kParseDefaultFlags&gt;(str, length);</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160; }</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160;</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> SourceEncoding&gt;</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; Parse(<span class="keyword">const</span> std::basic_string&lt;typename SourceEncoding::Ch&gt;&amp; str) {</div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160; <span class="comment">// c_str() is constant complexity according to standard. Should be faster than Parse(const char*, size_t)</span></div><div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>&#160; <span class="keywordflow">return</span> Parse&lt;parseFlags, SourceEncoding&gt;(str.c_str());</div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160; }</div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160;</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags&gt;</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; Parse(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; str) {</div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160; <span class="keywordflow">return</span> Parse&lt;parseFlags, Encoding&gt;(str.c_str());</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160; }</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160;</div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; Parse(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; str) {</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160; <span class="keywordflow">return</span> Parse&lt;kParseDefaultFlags&gt;(str);</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160; }</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_STDSTRING </span></div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160;<span class="comment"> //!@}</span></div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>&#160;<span class="comment"> //!@name Handling parse errors</span></div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160;<span class="comment"> //!@{</span></div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160;<span class="comment"> //! Whether a parse error has occured in the last parsing.</span></div><div class="line"><a name="l02350"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a7607bb42b51547e44bfd4cab35d8f20e"> 2350</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_document.html#a7607bb42b51547e44bfd4cab35d8f20e">HasParseError</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_.IsError(); }</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160;<span class="comment"> //! Get the \ref ParseErrorCode of last parsing.</span></div><div class="line"><a name="l02353"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#ab94c280c079a6837a24951cb4d8f337b"> 2353</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> <a class="code" href="classrapidjson_1_1_generic_document.html#ab94c280c079a6837a24951cb4d8f337b">GetParseError</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_.Code(); }</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160;<span class="comment"> //! Get the position of last parsing error in input, 0 otherwise.</span></div><div class="line"><a name="l02356"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#af532179ca5ad5434a5e8af63f5da4c5f"> 2356</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_generic_document.html#af532179ca5ad5434a5e8af63f5da4c5f">GetErrorOffset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_.Offset(); }</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160;<span class="comment"> //! Implicit conversion to get the last parse result</span></div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160;<span class="comment"></span><span class="preprocessor">#ifndef __clang // -Wdocumentation</span></div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>&#160;<span class="comment"> /*! \return \ref ParseResult of the last parse operation</span></div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160;<span class="comment"> \code</span></div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160;<span class="comment"> Document doc;</span></div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160;<span class="comment"> ParseResult ok = doc.Parse(json);</span></div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160;<span class="comment"> if (!ok)</span></div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160;<span class="comment"> printf( &quot;JSON parse error: %s (%u)\n&quot;, GetParseError_En(ok.Code()), ok.Offset());</span></div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160;<span class="comment"> \endcode</span></div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02370"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a36d19989c9221b27036675455516a974"> 2370</a></span>&#160; <span class="keyword">operator</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_; }<span class="comment"></span></div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160;<span class="comment"> //!@}</span></div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160;<span class="comment"> //! Get the allocator of this document.</span></div><div class="line"><a name="l02374"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f"> 2374</a></span>&#160;<span class="comment"></span> Allocator&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>() {</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(allocator_);</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160; <span class="keywordflow">return</span> *allocator_;</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160; }</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160;<span class="comment"> //! Get the capacity of stack in bytes.</span></div><div class="line"><a name="l02380"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_document.html#a153e5a065ca9660673974f9df203be4b"> 2380</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_generic_document.html#a153e5a065ca9660673974f9df203be4b">GetStackCapacity</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stack_.GetCapacity(); }</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160;</div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160; <span class="comment">// clear stack on any exit from ParseStream, e.g. due to exception</span></div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160; <span class="keyword">struct </span>ClearStackOnExit {</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160; <span class="keyword">explicit</span> ClearStackOnExit(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; d) : d_(d) {}</div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160; ~ClearStackOnExit() { d_.ClearStack(); }</div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160; ClearStackOnExit(<span class="keyword">const</span> ClearStackOnExit&amp;);</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160; ClearStackOnExit&amp; operator=(<span class="keyword">const</span> ClearStackOnExit&amp;);</div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160; <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; d_;</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160; };</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160;</div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160; <span class="comment">// callers of the following private Handler functions</span></div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160; <span class="comment">// template &lt;typename,typename,typename&gt; friend class GenericReader; // for parsing</span></div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>&gt; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>; <span class="comment">// for deep copying</span></div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160;</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160; <span class="comment">// Implementation of Handler</span></div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160; <span class="keywordtype">bool</span> Null() { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160; <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b) { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(b); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160; <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i) { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(i); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160; <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> i) { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(i); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160; <span class="keywordtype">bool</span> Int64(int64_t i) { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(i); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160; <span class="keywordtype">bool</span> Uint64(uint64_t i) { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(i); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160; <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span> d) { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(d); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160;</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160; <span class="keywordtype">bool</span> RawNumber(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy) { </div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160; <span class="keywordflow">if</span> (copy) </div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160; <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(str, length, GetAllocator());</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160; <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(str, length);</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160; }</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160;</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy) { </div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160; <span class="keywordflow">if</span> (copy) </div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160; <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(str, length, GetAllocator());</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160; <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(str, length);</div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160; }</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160;</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>&#160; <span class="keywordtype">bool</span> StartObject() { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160; </div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy) { <span class="keywordflow">return</span> String(str, length, copy); }</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160;</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160; <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount) {</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160; <span class="keyword">typename</span> <a class="code" href="structrapidjson_1_1_generic_member.html">ValueType::Member</a>* members = stack_.template Pop&lt;typename ValueType::Member&gt;(memberCount);</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160; stack_.template Top&lt;ValueType&gt;()-&gt;SetObjectRaw(members, memberCount, GetAllocator());</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160; }</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160;</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160; <span class="keywordtype">bool</span> StartArray() { <span class="keyword">new</span> (stack_.template Push&lt;ValueType&gt;()) ValueType(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160; </div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160; <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount) {</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160; ValueType* elements = stack_.template Pop&lt;ValueType&gt;(elementCount);</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160; stack_.template Top&lt;ValueType&gt;()-&gt;SetArrayRaw(elements, elementCount, GetAllocator());</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160; }</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160;</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160;<span class="keyword">private</span>:<span class="comment"></span></div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160;<span class="comment"> //! Prohibit copying</span></div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp;);<span class="comment"></span></div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160;<span class="comment"> //! Prohibit assignment</span></div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp;);</div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160;</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160; <span class="keywordtype">void</span> ClearStack() {</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160; <span class="keywordflow">if</span> (Allocator::kNeedFree)</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160; <span class="keywordflow">while</span> (stack_.GetSize() &gt; 0) <span class="comment">// Here assumes all elements in stack array are GenericValue (Member is actually 2 GenericValue objects)</span></div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160; (stack_.template Pop&lt;ValueType&gt;(1))-&gt;~ValueType();</div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160; stack_.Clear();</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160; stack_.ShrinkToFit();</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160; }</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160;</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160; <span class="keywordtype">void</span> Destroy() {</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160; <a class="code" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a>(ownAllocator_);</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160; }</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160;</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultStackCapacity = 1024;</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160; Allocator* allocator_;</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160; Allocator* ownAllocator_;</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160; internal::Stack&lt;StackAllocator&gt; stack_;</div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> parseResult_;</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160;};</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160;<span class="comment">//! GenericDocument with UTF8 encoding</span></div><div class="line"><a name="l02468"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8"> 2468</a></span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;UTF8&lt;&gt;</a> &gt; <a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a>;</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160;<span class="comment">//! Helper class for accessing Value of array type.</span></div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160;<span class="comment"> Instance of this helper class is obtained by \c GenericValue::GetArray().</span></div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160;<span class="comment"> In addition to all APIs for array type, it provides range-based for loop if \c RAPIDJSON_HAS_CXX11_RANGE_FOR=1.</span></div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Const, <span class="keyword">typename</span> ValueT&gt;</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a> {</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray&lt;true, ValueT&gt;</a> ConstArray;</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray&lt;false, ValueT&gt;</a> Array;</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160; <span class="keyword">typedef</span> ValueT PlainType;</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">internal::MaybeAddConst&lt;Const,PlainType&gt;::Type</a> ValueType;</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160; <span class="keyword">typedef</span> ValueType* ValueIterator; <span class="comment">// This may be const or non-const iterator</span></div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>&#160; <span class="keyword">typedef</span> <span class="keyword">const</span> ValueT* ConstValueIterator;</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::AllocatorType AllocatorType;</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::StringRefType StringRefType;</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160;</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>&gt;</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>;</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160;</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&amp; rhs) : value_(rhs.value_) {}</div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&amp; rhs) { value_ = rhs.value_; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160; ~<a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>() {}</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160;</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> Size()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.Size(); }</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> Capacity()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.Capacity(); }</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160; <span class="keywordtype">bool</span> Empty()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.Empty(); }</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160; <span class="keywordtype">void</span> Clear()<span class="keyword"> const </span>{ value_.Clear(); }</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>&#160; ValueType&amp; operator[](<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_[index]; }</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160; ValueIterator Begin()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.Begin(); }</div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160; ValueIterator End()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.End(); }</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a> Reserve(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> newCapacity, AllocatorType &amp;allocator)<span class="keyword"> const </span>{ value_.Reserve(newCapacity, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a> PushBack(ValueType&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.PushBack(value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a> PushBack(ValueType&amp;&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.PushBack(value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a> PushBack(StringRefType value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.PushBack(value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>&amp;)) PushBack(T value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.PushBack(value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a> PopBack()<span class="keyword"> const </span>{ value_.PopBack(); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160; ValueIterator Erase(ConstValueIterator pos)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.Erase(pos); }</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160; ValueIterator Erase(ConstValueIterator first, ConstValueIterator last)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.Erase(first, last); }</div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160;</div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RANGE_FOR</span></div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160; ValueIterator begin()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.Begin(); }</div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160; ValueIterator end()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.End(); }</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160;</div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>();</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160; <a class="code" href="classrapidjson_1_1_generic_array.html">GenericArray</a>(ValueType&amp; value) : value_(value) {}</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160; ValueType&amp; value_;</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160;};</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160;<span class="comment">//! Helper class for accessing Value of object type.</span></div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160;<span class="comment"> Instance of this helper class is obtained by \c GenericValue::GetObject().</span></div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160;<span class="comment"> In addition to all APIs for array type, it provides range-based for loop if \c RAPIDJSON_HAS_CXX11_RANGE_FOR=1.</span></div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Const, <span class="keyword">typename</span> ValueT&gt;</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a> {</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject&lt;true, ValueT&gt;</a> ConstObject;</div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject&lt;false, ValueT&gt;</a> Object;</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160; <span class="keyword">typedef</span> ValueT PlainType;</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">internal::MaybeAddConst&lt;Const,PlainType&gt;::Type</a> ValueType;</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator&lt;Const, typename ValueT::EncodingType, typename ValueT::AllocatorType&gt;</a> MemberIterator; <span class="comment">// This may be const or non-const iterator</span></div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator&lt;true, typename ValueT::EncodingType, typename ValueT::AllocatorType&gt;</a> ConstMemberIterator;</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::AllocatorType AllocatorType;</div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::StringRefType StringRefType;</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::EncodingType EncodingType;</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::Ch Ch;</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160;</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>&gt;</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>;</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160;</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160; <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&amp; rhs) : value_(rhs.value_) {}</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160; <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a>&amp; rhs) { value_ = rhs.value_; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160; ~<a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a>() {}</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160;</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> MemberCount()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.MemberCount(); }</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160; <span class="keywordtype">bool</span> ObjectEmpty()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.ObjectEmpty(); }</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; ValueType&amp; operator[](T* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_[name]; }</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt; ValueType&amp; operator[](<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;EncodingType, SourceAllocator&gt;</a>&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_[name]; }</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160; ValueType&amp; operator[](<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_[name]; }</div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160; MemberIterator MemberBegin()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.MemberBegin(); }</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160; MemberIterator MemberEnd()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.MemberEnd(); }</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160; <span class="keywordtype">bool</span> HasMember(<span class="keyword">const</span> Ch* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.HasMember(name); }</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160; <span class="keywordtype">bool</span> HasMember(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.HasMember(name); }</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt; <span class="keywordtype">bool</span> HasMember(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;EncodingType, SourceAllocator&gt;</a>&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.HasMember(name); }</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160; MemberIterator FindMember(<span class="keyword">const</span> Ch* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.FindMember(name); }</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt; MemberIterator FindMember(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;EncodingType, SourceAllocator&gt;</a>&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.FindMember(name); }</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160; MemberIterator FindMember(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.FindMember(name); }</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160; <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a> AddMember(ValueType&amp; name, ValueType&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160; <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a> AddMember(ValueType&amp; name, StringRefType value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160; <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a> AddMember(ValueType&amp; name, std::basic_string&lt;Ch&gt;&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (ValueType&amp;)) AddMember(ValueType&amp; name, T value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160; <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a> AddMember(ValueType&amp;&amp; name, ValueType&amp;&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160; <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a> AddMember(ValueType&amp;&amp; name, ValueType&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160; <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a> AddMember(ValueType&amp; name, ValueType&amp;&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160; <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a> AddMember(StringRefType name, ValueType&amp;&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160; <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a> AddMember(StringRefType name, ValueType&amp; value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160; <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a> AddMember(StringRefType name, StringRefType value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (<a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a>)) AddMember(StringRefType name, T value, AllocatorType&amp; allocator)<span class="keyword"> const </span>{ value_.AddMember(name, value, allocator); <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160; <span class="keywordtype">void</span> RemoveAllMembers() { value_.RemoveAllMembers(); }</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160; <span class="keywordtype">bool</span> RemoveMember(<span class="keyword">const</span> Ch* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.RemoveMember(name); }</div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160; <span class="keywordtype">bool</span> RemoveMember(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.RemoveMember(name); }</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt; <span class="keywordtype">bool</span> RemoveMember(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;EncodingType, SourceAllocator&gt;</a>&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.RemoveMember(name); }</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160; MemberIterator RemoveMember(MemberIterator m)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.RemoveMember(m); }</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160; MemberIterator EraseMember(ConstMemberIterator pos)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.EraseMember(pos); }</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160; MemberIterator EraseMember(ConstMemberIterator first, ConstMemberIterator last)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.EraseMember(first, last); }</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160; <span class="keywordtype">bool</span> EraseMember(<span class="keyword">const</span> Ch* name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.EraseMember(name); }</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160; <span class="keywordtype">bool</span> EraseMember(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> EraseMember(ValueType(<a class="code" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a>(name))); }</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceAllocator&gt; <span class="keywordtype">bool</span> EraseMember(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;EncodingType, SourceAllocator&gt;</a>&amp; name)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.EraseMember(name); }</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160;</div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RANGE_FOR</span></div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160; MemberIterator begin()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.MemberBegin(); }</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160; MemberIterator end()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> value_.MemberEnd(); }</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160;</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160; <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a>();</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160; <a class="code" href="classrapidjson_1_1_generic_object.html">GenericObject</a>(ValueType&amp; value) : value_(value) {}</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160; ValueType&amp; value_;</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160;};</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160;</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160;<span class="preprocessor">#ifdef _MINWINDEF_ // see: http://stackoverflow.com/questions/22744262/cant-call-stdmax-because-minwindef-h-defines-max</span></div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160;<span class="preprocessor">#ifndef NOMINMAX</span></div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160;<span class="preprocessor">#pragma pop_macro(&quot;min&quot;)</span></div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160;<span class="preprocessor">#pragma pop_macro(&quot;max&quot;)</span></div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160;</div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_DOCUMENT_H_</span></div><div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_a41b953d6523fdc09f4f21c7b345e5833"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">rapidjson::GenericMemberIterator::DifferenceType</a></div><div class="ttdeci">BaseType::difference_type DifferenceType</div><div class="ttdoc">Signed integer type (e.g. ptrdiff_t) </div><div class="ttdef"><b>Definition:</b> document.h:133</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html_a41bbec044c421e870a9d355075d741bc"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#a41bbec044c421e870a9d355075d741bc">rapidjson::GenericDocument::ValueType</a></div><div class="ttdeci">GenericValue&lt; Encoding, Allocator &gt; ValueType</div><div class="ttdoc">Value type of the document. </div><div class="ttdef"><b>Definition:</b> document.h:2093</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a4a8060a42b7953a2981ad892180ca5a6"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a4a8060a42b7953a2981ad892180ca5a6">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(unsigned u) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Constructor for unsigned value. </div><div class="ttdef"><b>Definition:</b> document.h:694</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">rapidjson::kTrueType</a></div><div class="ttdoc">true </div><div class="ttdef"><b>Definition:</b> rapidjson.h:619</div></div>
@@ -2706,172 +89,173 @@ $(document).ready(function(){initNavTree('document_8h_source.html','');});
<div class="ttc" id="structrapidjson_1_1_generic_value_1_1_number_1_1_i_html"><div class="ttname"><a href="structrapidjson_1_1_generic_value_1_1_number_1_1_i.html">rapidjson::GenericValue::Number::I</a></div><div class="ttdef"><b>Definition:</b> document.h:1957</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_string_stream_html"><div class="ttname"><a href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream</a></div><div class="ttdoc">Read-only string stream. </div><div class="ttdef"><b>Definition:</b> fwd.h:47</div></div>
<div class="ttc" id="classrapidjson_1_1_handler_html"><div class="ttname"><a href="classrapidjson_1_1_handler.html">rapidjson::Handler</a></div><div class="ttdoc">Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a07b19e65fb756cae13e5bdc515cfbd4b"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b">rapidjson::GenericValue::Move</a></div><div class="ttdeci">GenericValue &amp; Move() RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Prepare Value for move semantics. </div><div class="ttdef"><b>Definition:</b> document.h:899</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a07b19e65fb756cae13e5bdc515cfbd4b"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b">rapidjson::GenericValue::Move</a></div><div class="ttdeci">GenericValue &amp; Move() RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Prepare Value for move semantics </div><div class="ttdef"><b>Definition:</b> document.h:899</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_ab4e5285102bb686f39bca2855a17a181"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ab4e5285102bb686f39bca2855a17a181">rapidjson::GenericValue::operator==</a></div><div class="ttdeci">bool operator==(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const</div><div class="ttdoc">Equal-to operator </div><div class="ttdef"><b>Definition:</b> document.h:910</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a9ba3d9d8a106d5b7e92fb49db897c21b"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a9ba3d9d8a106d5b7e92fb49db897c21b">rapidjson::GenericValue::SetString</a></div><div class="ttdeci">GenericValue &amp; SetString(StringRefType s, Allocator &amp;allocator)</div><div class="ttdoc">Set this value as a string by copying from source string. </div><div class="ttdef"><b>Definition:</b> document.h:1787</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a8d1040c479d89edb261db86400ebe603"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603">rapidjson::GenericValue::Begin</a></div><div class="ttdeci">ValueIterator Begin()</div><div class="ttdoc">Element iterator. </div><div class="ttdef"><b>Definition:</b> document.h:1563</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_a61b9a9ba8a5917d90406532f104605cc"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">rapidjson::GenericMemberIterator::ConstIterator</a></div><div class="ttdeci">GenericMemberIterator&lt; true, Encoding, Allocator &gt; ConstIterator</div><div class="ttdoc">Constant iterator type. </div><div class="ttdef"><b>Definition:</b> document.h:124</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_a6d7cfaef258b0774da1b642907d81060"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#a6d7cfaef258b0774da1b642907d81060">rapidjson::GenericMemberIterator::operator-</a></div><div class="ttdeci">DifferenceType operator-(ConstIterator that) const </div><div class="ttdoc">Distance. </div><div class="ttdef"><b>Definition:</b> document.h:195</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a8d1040c479d89edb261db86400ebe603"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603">rapidjson::GenericValue::Begin</a></div><div class="ttdeci">ValueIterator Begin()</div><div class="ttdoc">Element iterator </div><div class="ttdef"><b>Definition:</b> document.h:1563</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_a61b9a9ba8a5917d90406532f104605cc"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">rapidjson::GenericMemberIterator::ConstIterator</a></div><div class="ttdeci">GenericMemberIterator&lt; true, Encoding, Allocator &gt; ConstIterator</div><div class="ttdoc">Constant iterator type </div><div class="ttdef"><b>Definition:</b> document.h:124</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_ad9553bb9ccbfd19547c473a95405a8b2"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ad9553bb9ccbfd19547c473a95405a8b2">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(const Ch *s, SizeType length, Allocator &amp;allocator)</div><div class="ttdoc">Constructor for copy-string (i.e. do make a copy of string) </div><div class="ttdef"><b>Definition:</b> document.h:739</div></div>
-<div class="ttc" id="namespacerapidjson_html_aa65fc9fb381b2cbc54f98673eadd6505"><div class="ttname"><a href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">rapidjson::Value</a></div><div class="ttdeci">GenericValue&lt; UTF8&lt;&gt; &gt; Value</div><div class="ttdoc">GenericValue with UTF8 encoding. </div><div class="ttdef"><b>Definition:</b> document.h:2076</div></div>
+<div class="ttc" id="namespacerapidjson_html_aa65fc9fb381b2cbc54f98673eadd6505"><div class="ttname"><a href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">rapidjson::Value</a></div><div class="ttdeci">GenericValue&lt; UTF8&lt;&gt; &gt; Value</div><div class="ttdoc">GenericValue with UTF8 encoding </div><div class="ttdef"><b>Definition:</b> document.h:2076</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_acd4ae9a8dba4498d1d7cce6667529bb8"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#acd4ae9a8dba4498d1d7cce6667529bb8">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(int64_t i64) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Constructor for int64_t value. </div><div class="ttdef"><b>Definition:</b> document.h:700</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_af089d2bee0386ca7504ff4fab466c87f"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#af089d2bee0386ca7504ff4fab466c87f">rapidjson::GenericValue::operator==</a></div><div class="ttdeci">bool operator==(const std::basic_string&lt; Ch &gt; &amp;rhs) const</div><div class="ttdoc">Equal-to operator with string object </div><div class="ttdef"><b>Definition:</b> document.h:958</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a433a64b466c80cadf7d1acaa6f065437"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a433a64b466c80cadf7d1acaa6f065437">rapidjson::GenericValue::~GenericValue</a></div><div class="ttdeci">~GenericValue()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> document.h:776</div></div>
<div class="ttc" id="rapidjson_8h_html_aaee1245f375a71be1ac9b8a07ba5fb8f"><div class="ttname"><a href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a></div><div class="ttdeci">#define RAPIDJSON_UINT64_C2(high32, low32)</div><div class="ttdoc">Construct a 64-bit literal by a pair of 32-bit integer. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:294</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_reader_html"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html">rapidjson::GenericReader</a></div><div class="ttdoc">SAX-style JSON parser. Use Reader for UTF8 encoding and default allocator. </div><div class="ttdef"><b>Definition:</b> fwd.h:88</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html_acf96a3c7fd61486d049c701b1fe5d414"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#acf96a3c7fd61486d049c701b1fe5d414">rapidjson::GenericDocument::ParseStream</a></div><div class="ttdeci">GenericDocument &amp; ParseStream(InputStream &amp;is)</div><div class="ttdoc">Parse JSON text from an input stream (with kParseDefaultFlags) </div><div class="ttdef"><b>Definition:</b> document.h:2250</div></div>
-<div class="ttc" id="namespacerapidjson_html_a080910f74d2f5046e6724280159cf374"><div class="ttname"><a href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">rapidjson::Pointer</a></div><div class="ttdeci">GenericPointer&lt; Value, CrtAllocator &gt; Pointer</div><div class="ttdoc">GenericPointer for Value (UTF-8, default allocator). </div><div class="ttdef"><b>Definition:</b> fwd.h:126</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a893da1069660536fd3943a0149206a6e"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a893da1069660536fd3943a0149206a6e">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(Object o) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Constructor for Object. </div><div class="ttdef"><b>Definition:</b> document.h:768</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a65bfc3073fa80ee5eba8e985abe2f941"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a65bfc3073fa80ee5eba8e985abe2f941">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(StringRefType s) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Constructor for constant string (i.e. do not make a copy of string) </div><div class="ttdef"><b>Definition:</b> document.h:736</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a3e930bffb40a78e570e3deef461f0532"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a3e930bffb40a78e570e3deef461f0532">rapidjson::GenericValue::SetString</a></div><div class="ttdeci">GenericValue &amp; SetString(const std::basic_string&lt; Ch &gt; &amp;s, Allocator &amp;allocator)</div><div class="ttdoc">Set this value as a string by copying from source string. </div><div class="ttdef"><b>Definition:</b> document.h:1797</div></div>
<div class="ttc" id="reader_8h_html"><div class="ttname"><a href="reader_8h.html">reader.h</a></div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a9b3b30acbe60d7a5b105afa05c1ddfb0"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a9b3b30acbe60d7a5b105afa05c1ddfb0">rapidjson::GenericValue::HasMember</a></div><div class="ttdeci">bool HasMember(const std::basic_string&lt; Ch &gt; &amp;name) const</div><div class="ttdoc">Check whether a member exists in the object with string object. </div><div class="ttdef"><b>Definition:</b> document.h:1163</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a7cb3cbaefe4fb99aaf9f155fb4ee039b"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a7cb3cbaefe4fb99aaf9f155fb4ee039b">rapidjson::GenericValue::SetObject</a></div><div class="ttdeci">GenericValue &amp; SetObject()</div><div class="ttdoc">Set this value as an empty object. </div><div class="ttdef"><b>Definition:</b> document.h:1071</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a559eb9cea54364a35518b02f6d74f379"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">rapidjson::GenericValue::StringRefType</a></div><div class="ttdeci">GenericStringRef&lt; Ch &gt; StringRefType</div><div class="ttdoc">Reference to a constant string. </div><div class="ttdef"><b>Definition:</b> document.h:561</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_a37091c3dd8470486ef5188f3c1108653"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">rapidjson::GenericMemberIterator::Iterator</a></div><div class="ttdeci">GenericMemberIterator Iterator</div><div class="ttdoc">Iterator type itself. </div><div class="ttdef"><b>Definition:</b> document.h:122</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a469c0cc3e72f846757fb64fa52fafee5"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a469c0cc3e72f846757fb64fa52fafee5">rapidjson::GenericValue::MemberBegin</a></div><div class="ttdeci">ConstMemberIterator MemberBegin() const </div><div class="ttdoc">Const member iterator. </div><div class="ttdef"><b>Definition:</b> document.h:1133</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a559eb9cea54364a35518b02f6d74f379"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379">rapidjson::GenericValue::StringRefType</a></div><div class="ttdeci">GenericStringRef&lt; Ch &gt; StringRefType</div><div class="ttdoc">Reference to a constant string </div><div class="ttdef"><b>Definition:</b> document.h:561</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_a37091c3dd8470486ef5188f3c1108653"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653">rapidjson::GenericMemberIterator::Iterator</a></div><div class="ttdeci">GenericMemberIterator Iterator</div><div class="ttdoc">Iterator type itself </div><div class="ttdef"><b>Definition:</b> document.h:122</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_adca019775f68f012643781cd2c2515ac"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#adca019775f68f012643781cd2c2515ac">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs, Allocator &amp;allocator, bool copyConstStrings=false)</div><div class="ttdoc">Explicit copy constructor (with allocator) </div><div class="ttdef"><b>Definition:</b> document.h:628</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_ae8bcedd951f50b69786aaaa1828e9fac"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ae8bcedd951f50b69786aaaa1828e9fac">rapidjson::GenericValue::operator=</a></div><div class="ttdeci">GenericValue &amp; operator=(GenericValue &amp;rhs) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Assignment with move semantics. </div><div class="ttdef"><b>Definition:</b> document.h:812</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a88d2c5b861cd8a6a14976456dfbc1f64"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a88d2c5b861cd8a6a14976456dfbc1f64">rapidjson::GenericValue::MemberEnd</a></div><div class="ttdeci">ConstMemberIterator MemberEnd() const </div><div class="ttdoc">Const past-the-end member iterator. </div><div class="ttdef"><b>Definition:</b> document.h:1136</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_af03ef6020e188bbfceb018da5cd8becc"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#af03ef6020e188bbfceb018da5cd8becc">rapidjson::GenericValue::operator==</a></div><div class="ttdeci">bool operator==(const Ch *rhs) const</div><div class="ttdoc">Equal-to operator with const C-string pointer </div><div class="ttdef"><b>Definition:</b> document.h:952</div></div>
<div class="ttc" id="namespacerapidjson_html_a44eb33eaa523e36d466b1ced64b85c84"><div class="ttname"><a href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">rapidjson::SizeType</a></div><div class="ttdeci">unsigned SizeType</div><div class="ttdoc">Size type (for string lengths, array sizes, etc.) </div><div class="ttdef"><b>Definition:</b> rapidjson.h:389</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_a1a91868fa388664bb301061e3e24badb"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#a1a91868fa388664bb301061e3e24badb">rapidjson::GenericMemberIterator::NonConstIterator</a></div><div class="ttdeci">GenericMemberIterator&lt; false, Encoding, Allocator &gt; NonConstIterator</div><div class="ttdoc">Non-constant iterator type. </div><div class="ttdef"><b>Definition:</b> document.h:126</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_a1a91868fa388664bb301061e3e24badb"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#a1a91868fa388664bb301061e3e24badb">rapidjson::GenericMemberIterator::NonConstIterator</a></div><div class="ttdeci">GenericMemberIterator&lt; false, Encoding, Allocator &gt; NonConstIterator</div><div class="ttdoc">Non-constant iterator type </div><div class="ttdef"><b>Definition:</b> document.h:126</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_array_html"><div class="ttname"><a href="classrapidjson_1_1_generic_array.html">rapidjson::GenericArray</a></div><div class="ttdoc">Helper class for accessing Value of array type. </div><div class="ttdef"><b>Definition:</b> document.h:537</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a799a8a2503989f486f3fc7a660266555"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a799a8a2503989f486f3fc7a660266555">rapidjson::GenericValue::Size</a></div><div class="ttdeci">SizeType Size() const</div><div class="ttdoc">Get the number of elements in array. </div><div class="ttdef"><b>Definition:</b> document.h:1529</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html_a4c85243a28c9dcf2d1357da00fcaa773"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#a4c85243a28c9dcf2d1357da00fcaa773">rapidjson::GenericDocument::AllocatorType</a></div><div class="ttdeci">Allocator AllocatorType</div><div class="ttdoc">Allocator type from template parameter. </div><div class="ttdef"><b>Definition:</b> document.h:2094</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a8d75bf0c6c0fa4f8d340a4236e98539b"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a8d75bf0c6c0fa4f8d340a4236e98539b">rapidjson::GenericValue::FindMember</a></div><div class="ttdeci">MemberIterator FindMember(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name)</div><div class="ttdoc">Find member by name. </div><div class="ttdef"><b>Definition:</b> document.h:1211</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a1f28a345c9b9c93c76abf695669e4378"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a1f28a345c9b9c93c76abf695669e4378">rapidjson::GenericValue::ObjectEmpty</a></div><div class="ttdeci">bool ObjectEmpty() const </div><div class="ttdoc">Check whether the object is empty. </div><div class="ttdef"><b>Definition:</b> document.h:1077</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">rapidjson::kFalseType</a></div><div class="ttdoc">false </div><div class="ttdef"><b>Definition:</b> rapidjson.h:618</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ga7d3acf640886b1f2552dc8c4cd6dea60"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">rapidjson::ParseErrorCode</a></div><div class="ttdeci">ParseErrorCode</div><div class="ttdoc">Error code of parsing. </div><div class="ttdef"><b>Definition:</b> error.h:64</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a0cb232adce79932c499c5f04cbc8dc54"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a0cb232adce79932c499c5f04cbc8dc54">rapidjson::GenericValue::operator!=</a></div><div class="ttdeci">bool operator!=(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const </div><div class="ttdoc">Not-equal-to operator. </div><div class="ttdef"><b>Definition:</b> document.h:970</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a34ee3d75a7aa308043fb34b0743bfe7c"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c">rapidjson::GenericValue::MemberEnd</a></div><div class="ttdeci">ConstMemberIterator MemberEnd() const</div><div class="ttdoc">Const past-the-end member iterator </div><div class="ttdef"><b>Definition:</b> document.h:1136</div></div>
<div class="ttc" id="rapidjson_8h_html_af95188da1d8eb6d4b148fe9ce71cd7c4"><div class="ttname"><a href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_STATIC_ASSERT(x)</div><div class="ttdoc">(Internal) macro to check for conditions at compile-time </div><div class="ttdef"><b>Definition:</b> rapidjson.h:450</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a83ba61e8a5170c2e172fd60ebc11016f"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a83ba61e8a5170c2e172fd60ebc11016f">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(const Ch *s, Allocator &amp;allocator)</div><div class="ttdoc">Constructor for copy-string (i.e. do make a copy of string) </div><div class="ttdef"><b>Definition:</b> document.h:742</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_ae08898bef949f217f0e5d28e19f05992"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ae08898bef949f217f0e5d28e19f05992">rapidjson::GenericValue::operator!=</a></div><div class="ttdeci">friend bool operator!=(const T &amp;lhs, const GenericValue &amp;rhs)</div><div class="ttdoc">Not-Equal-to operator with arbitrary types (symmetric version) </div><div class="ttdef"><b>Definition:</b> document.h:988</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_aa60074f72a6d1651828a104b0c6387b1"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#aa60074f72a6d1651828a104b0c6387b1">rapidjson::GenericValue::RemoveMember</a></div><div class="ttdeci">bool RemoveMember(const Ch *name)</div><div class="ttdoc">Remove a member in object by its name. </div><div class="ttdef"><b>Definition:</b> document.h:1410</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_aeef0506cd1f8d703db4833c503f0657e"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e">rapidjson::GenericValue::Accept</a></div><div class="ttdeci">bool Accept(Handler &amp;handler) const </div><div class="ttdoc">Generate events of this value to a Handler. </div><div class="ttdef"><b>Definition:</b> document.h:1834</div></div>
<div class="ttc" id="structrapidjson_1_1_memory_stream_html"><div class="ttname"><a href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></div><div class="ttdoc">Represents an in-memory input byte stream. </div><div class="ttdef"><b>Definition:</b> memorystream.h:40</div></div>
-<div class="ttc" id="namespacerapidjson_html_af94951529a5d51e8c4e6e770bb707c1f"><div class="ttname"><a href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">rapidjson::StringRef</a></div><div class="ttdeci">GenericStringRef&lt; CharType &gt; StringRef(const std::basic_string&lt; CharType &gt; &amp;str)</div><div class="ttdoc">Mark a string object as constant string. </div><div class="ttdef"><b>Definition:</b> document.h:398</div></div>
+<div class="ttc" id="namespacerapidjson_html_af94951529a5d51e8c4e6e770bb707c1f"><div class="ttname"><a href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">rapidjson::StringRef</a></div><div class="ttdeci">GenericStringRef&lt; CharType &gt; StringRef(const std::basic_string&lt; CharType &gt; &amp;str)</div><div class="ttdoc">Mark a string object as constant string </div><div class="ttdef"><b>Definition:</b> document.h:398</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_ae475f31fb851138ced40e2ff6cb43ca6"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ae475f31fb851138ced40e2ff6cb43ca6">rapidjson::GenericValue::PopBack</a></div><div class="ttdeci">GenericValue &amp; PopBack()</div><div class="ttdoc">Remove the last element in the array. </div><div class="ttdef"><b>Definition:</b> document.h:1654</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a17971ba2bcd4eb1716098fdfe9182386"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a17971ba2bcd4eb1716098fdfe9182386">rapidjson::GenericValue::Reserve</a></div><div class="ttdeci">GenericValue &amp; Reserve(SizeType newCapacity, Allocator &amp;allocator)</div><div class="ttdoc">Request the array to have enough capacity to store elements. </div><div class="ttdef"><b>Definition:</b> document.h:1580</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_aaf58b9337ccc0cdf16aa9634c4645109"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109">rapidjson::GenericValue::End</a></div><div class="ttdeci">ValueIterator End()</div><div class="ttdoc">Past-the-end element iterator </div><div class="ttdef"><b>Definition:</b> document.h:1566</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a6443cf5323fb46c4c51cd15a365da49b"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a6443cf5323fb46c4c51cd15a365da49b">rapidjson::GenericValue::operator!=</a></div><div class="ttdeci">bool operator!=(const Ch *rhs) const</div><div class="ttdoc">Not-equal-to operator with const C-string pointer </div><div class="ttdef"><b>Definition:</b> document.h:973</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_ac51a3b3046aaa12aa1d88ac876a28cec"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ac51a3b3046aaa12aa1d88ac876a28cec">rapidjson::GenericValue::EraseMember</a></div><div class="ttdeci">bool EraseMember(const Ch *name)</div><div class="ttdoc">Erase a member in object by its name. </div><div class="ttdef"><b>Definition:</b> document.h:1496</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html_ab031375318d133f83a114314b75703de"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#ab031375318d133f83a114314b75703de">rapidjson::GenericDocument::Parse</a></div><div class="ttdeci">GenericDocument &amp; Parse(const Ch *str)</div><div class="ttdoc">Parse JSON text from a read-only string (with kParseDefaultFlags) </div><div class="ttdef"><b>Definition:</b> document.h:2305</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a69d917b47799f63fc588bf294fa71483"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a69d917b47799f63fc588bf294fa71483">rapidjson::GenericValue::GetBool</a></div><div class="ttdeci">bool GetBool() const </div><div class="ttdoc">Set boolean value. </div><div class="ttdef"><b>Definition:</b> document.h:1059</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_ga5dc14176a9e71ace282404b0bcda57a1"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a></div><div class="ttdeci">#define RAPIDJSON_LIKELY(x)</div><div class="ttdoc">Compiler branching hint for expression with high probability to be true. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:468</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_af91573ce61d798f0bc5dc88b00742697"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#af91573ce61d798f0bc5dc88b00742697">rapidjson::GenericValue::RemoveMember</a></div><div class="ttdeci">MemberIterator RemoveMember(MemberIterator m)</div><div class="ttdoc">Remove a member in object by iterator. </div><div class="ttdef"><b>Definition:</b> document.h:1438</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a93f0f317f397c36a24a0f3c32648623a"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a">rapidjson::GenericValue::MemberBegin</a></div><div class="ttdeci">MemberIterator MemberBegin()</div><div class="ttdoc">Member iterator. </div><div class="ttdef"><b>Definition:</b> document.h:1139</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a93f0f317f397c36a24a0f3c32648623a"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a">rapidjson::GenericValue::MemberBegin</a></div><div class="ttdeci">MemberIterator MemberBegin()</div><div class="ttdoc">Member iterator </div><div class="ttdef"><b>Definition:</b> document.h:1139</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a58ecce8a34fc029039b8079de246bdaa"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a58ecce8a34fc029039b8079de246bdaa">rapidjson::GenericValue::swap</a></div><div class="ttdeci">friend void swap(GenericValue &amp;a, GenericValue &amp;b) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">free-standing swap function helper </div><div class="ttdef"><b>Definition:</b> document.h:895</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a5d47340c96346c5028fee4c9068d783d"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a5d47340c96346c5028fee4c9068d783d">rapidjson::GenericValue::AllocatorType</a></div><div class="ttdeci">Allocator AllocatorType</div><div class="ttdoc">Allocator type from template parameter. </div><div class="ttdef"><b>Definition:</b> document.h:559</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_ad08a62c65a793ab1d0abe7eac03776fd"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ad08a62c65a793ab1d0abe7eac03776fd">rapidjson::GenericValue::Empty</a></div><div class="ttdeci">bool Empty() const</div><div class="ttdoc">Check whether the array is empty. </div><div class="ttdef"><b>Definition:</b> document.h:1535</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a2ccb4736d0f2ec07f06f630d8fe54f8d"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a2ccb4736d0f2ec07f06f630d8fe54f8d">rapidjson::GenericValue::AddMember</a></div><div class="ttdeci">GenericValue &amp; AddMember(StringRefType name, StringRefType value, Allocator &amp;allocator)</div><div class="ttdoc">Add a constant string value as member (name-value pair) to the object. </div><div class="ttdef"><b>Definition:</b> document.h:1362</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a0eda9834f241e5c5b23161a7ee33758b"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a0eda9834f241e5c5b23161a7ee33758b">rapidjson::GenericValue::GetFloat</a></div><div class="ttdeci">float GetFloat() const </div><div class="ttdoc">Get the value as float type. </div><div class="ttdef"><b>Definition:</b> document.h:1723</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_ae89a77887aa3eb1f1f913727cbff6786"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ae89a77887aa3eb1f1f913727cbff6786">rapidjson::GenericValue::MemberBegin</a></div><div class="ttdeci">ConstMemberIterator MemberBegin() const</div><div class="ttdoc">Const member iterator </div><div class="ttdef"><b>Definition:</b> document.h:1133</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a578e35f3350717db2aae534969b2346a"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a578e35f3350717db2aae534969b2346a">rapidjson::GenericValue::AddMember</a></div><div class="ttdeci">GenericValue &amp; AddMember(GenericValue &amp;name, std::basic_string&lt; Ch &gt; &amp;value, Allocator &amp;allocator)</div><div class="ttdoc">Add a string object as member (name-value pair) to the object. </div><div class="ttdef"><b>Definition:</b> document.h:1291</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a4d337239ee3e2096462f6a36b9ab0811"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a4d337239ee3e2096462f6a36b9ab0811">rapidjson::GenericValue::operator[]</a></div><div class="ttdeci">GenericValue &amp; operator[](const std::basic_string&lt; Ch &gt; &amp;name)</div><div class="ttdoc">Get a value from an object associated with name (string object). </div><div class="ttdef"><b>Definition:</b> document.h:1127</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_aa059dee923cc0446752e321ff70936a6"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#aa059dee923cc0446752e321ff70936a6">rapidjson::GenericValue::GetDouble</a></div><div class="ttdeci">double GetDouble() const </div><div class="ttdoc">Get the value as double type. </div><div class="ttdef"><b>Definition:</b> document.h:1711</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a51e93a4fb57f77a39767acb076bf43c1"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a51e93a4fb57f77a39767acb076bf43c1">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(const Ch *s, SizeType length) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Constructor for constant string (i.e. do not make a copy of string) </div><div class="ttdef"><b>Definition:</b> document.h:733</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_aa62b57746c96ce3d264b2fe178196062"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#aa62b57746c96ce3d264b2fe178196062">rapidjson::GenericValue::operator[]</a></div><div class="ttdeci">GenericValue &amp; operator[](const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name)</div><div class="ttdoc">Get a value from an object associated with the name. </div><div class="ttdef"><b>Definition:</b> document.h:1106</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_ae6351043ec30d8a151b0a072cfbc46d5"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ae6351043ec30d8a151b0a072cfbc46d5">rapidjson::GenericValue::SetString</a></div><div class="ttdeci">GenericValue &amp; SetString(const Ch *s, SizeType length, Allocator &amp;allocator)</div><div class="ttdoc">Set this value as a string by copying from source string. </div><div class="ttdef"><b>Definition:</b> document.h:1771</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a163e60b101e5ae534597c050a6eba511"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a163e60b101e5ae534597c050a6eba511">rapidjson::GenericValue::EraseMember</a></div><div class="ttdeci">MemberIterator EraseMember(ConstMemberIterator pos)</div><div class="ttdoc">Remove a member from an object by iterator. </div><div class="ttdef"><b>Definition:</b> document.h:1462</div></div>
-<div class="ttc" id="structrapidjson_1_1_generic_string_ref_html_ad9eb120a58cee500ff3bd5706779c4e4"><div class="ttname"><a href="structrapidjson_1_1_generic_string_ref.html#ad9eb120a58cee500ff3bd5706779c4e4">rapidjson::GenericStringRef::GenericStringRef</a></div><div class="ttdeci">GenericStringRef(const CharType *str, SizeType len)</div><div class="ttdoc">Create constant string reference from pointer and length. </div><div class="ttdef"><b>Definition:</b> document.h:322</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a6f7f7c66d8f8c08e496ae831ba114126"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a6f7f7c66d8f8c08e496ae831ba114126">rapidjson::GenericValue::operator==</a></div><div class="ttdeci">bool operator==(const std::basic_string&lt; Ch &gt; &amp;rhs) const </div><div class="ttdoc">Equal-to operator with string object. </div><div class="ttdef"><b>Definition:</b> document.h:958</div></div>
+<div class="ttc" id="structrapidjson_1_1_generic_string_ref_html_ad9eb120a58cee500ff3bd5706779c4e4"><div class="ttname"><a href="structrapidjson_1_1_generic_string_ref.html#ad9eb120a58cee500ff3bd5706779c4e4">rapidjson::GenericStringRef::GenericStringRef</a></div><div class="ttdeci">GenericStringRef(const CharType *str, SizeType len)</div><div class="ttdoc">Create constant string reference from pointer and length </div><div class="ttdef"><b>Definition:</b> document.h:322</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_member_html"><div class="ttname"><a href="structrapidjson_1_1_generic_member.html">rapidjson::GenericMember</a></div><div class="ttdoc">Name-value pair in a JSON object value. </div><div class="ttdef"><b>Definition:</b> document.h:79</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_afb91480cc6242ca96ffc603e649c319f"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f">rapidjson::GenericValue::SetString</a></div><div class="ttdeci">GenericValue &amp; SetString(const Ch *s, SizeType length)</div><div class="ttdoc">Set this value as a string without copying source string. </div><div class="ttdef"><b>Definition:</b> document.h:1754</div></div>
-<div class="ttc" id="structrapidjson_1_1_generic_string_ref_html_aa6b9fd9f6aa49405a574c362ba9af6b5"><div class="ttname"><a href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">rapidjson::GenericStringRef::StringRef</a></div><div class="ttdeci">GenericStringRef&lt; CharType &gt; StringRef(const CharType *str)</div><div class="ttdoc">Mark a character pointer as constant string. </div><div class="ttdef"><b>Definition:</b> document.h:360</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_acc6b1791cca8daef18521918136264b7"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#acc6b1791cca8daef18521918136264b7">rapidjson::GenericValue::Is</a></div><div class="ttdeci">bool Is() const</div><div class="ttdoc">Templated version for checking whether this value is type T. </div><div class="ttdef"><b>Definition:</b> document.h:1810</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html_af061c039a990c2970dc31e5626149367"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#af061c039a990c2970dc31e5626149367">rapidjson::GenericDocument::ParseInsitu</a></div><div class="ttdeci">GenericDocument &amp; ParseInsitu(Ch *str)</div><div class="ttdoc">Parse JSON text from a mutable string (with kParseDefaultFlags) </div><div class="ttdef"><b>Definition:</b> document.h:2273</div></div>
<div class="ttc" id="rapidjson_8h_html_abdc7cd7902748ffe6626d71c59a73c3b"><div class="ttname"><a href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a></div><div class="ttdeci">#define RAPIDJSON_NEW(TypeName)</div><div class="ttdoc">! customization point for global new </div><div class="ttdef"><b>Definition:</b> rapidjson.h:599</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a2e6e849cfb368a3fa708f8bcf1d56ec9"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a2e6e849cfb368a3fa708f8bcf1d56ec9">rapidjson::GenericValue::Size</a></div><div class="ttdeci">SizeType Size() const </div><div class="ttdoc">Get the number of elements in array. </div><div class="ttdef"><b>Definition:</b> document.h:1529</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_string_ref_html_ae223535ec20edf0c1db44a40b7735111"><div class="ttname"><a href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">rapidjson::GenericStringRef::length</a></div><div class="ttdeci">const SizeType length</div><div class="ttdoc">length of the string (excluding the trailing NULL terminator) </div><div class="ttdef"><b>Definition:</b> document.h:331</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_a915a1b6f0a0bbe6a1df69571a789e348"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#a915a1b6f0a0bbe6a1df69571a789e348">rapidjson::GenericMemberIterator::Reference</a></div><div class="ttdeci">BaseType::reference Reference</div><div class="ttdoc">Reference to (const) GenericMember. </div><div class="ttdef"><b>Definition:</b> document.h:131</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_document_html_af532179ca5ad5434a5e8af63f5da4c5f"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#af532179ca5ad5434a5e8af63f5da4c5f">rapidjson::GenericDocument::GetErrorOffset</a></div><div class="ttdeci">size_t GetErrorOffset() const</div><div class="ttdoc">Get the position of last parsing error in input, 0 otherwise. </div><div class="ttdef"><b>Definition:</b> document.h:2356</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_a915a1b6f0a0bbe6a1df69571a789e348"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#a915a1b6f0a0bbe6a1df69571a789e348">rapidjson::GenericMemberIterator::Reference</a></div><div class="ttdeci">BaseType::reference Reference</div><div class="ttdoc">Reference to (const) GenericMember </div><div class="ttdef"><b>Definition:</b> document.h:131</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a89a6588121742fc3f154b10b8f15f45f"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f">rapidjson::GenericValue::ConstValueIterator</a></div><div class="ttdeci">const GenericValue * ConstValueIterator</div><div class="ttdoc">Constant value iterator for iterating in array. </div><div class="ttdef"><b>Definition:</b> document.h:565</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_document_html_ab791c05727d83f6834a1b916783dbc06"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#ab791c05727d83f6834a1b916783dbc06">rapidjson::GenericDocument::GetErrorOffset</a></div><div class="ttdeci">size_t GetErrorOffset() const </div><div class="ttdoc">Get the position of last parsing error in input, 0 otherwise. </div><div class="ttdef"><b>Definition:</b> document.h:2356</div></div>
-<div class="ttc" id="classrapidjson_1_1_encoding_html"><div class="ttname"><a href="classrapidjson_1_1_encoding.html">rapidjson::Encoding</a></div><div class="ttdoc">Concept for encoding of Unicode characters. </div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a278b420ea75b0ec18d88d4c9e9199d62"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a278b420ea75b0ec18d88d4c9e9199d62">rapidjson::GenericValue::FindMember</a></div><div class="ttdeci">MemberIterator FindMember(const std::basic_string&lt; Ch &gt; &amp;name)</div><div class="ttdoc">Find member by string object name. </div><div class="ttdef"><b>Definition:</b> document.h:1230</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_ab018d734d189532b27943bc45776ba68"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68">rapidjson::GenericValue::AddMember</a></div><div class="ttdeci">GenericValue &amp; AddMember(GenericValue &amp;name, GenericValue &amp;value, Allocator &amp;allocator)</div><div class="ttdoc">Add a member (name-value pair) to the object. </div><div class="ttdef"><b>Definition:</b> document.h:1244</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_structrapidjson_1_1_parse_result"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">rapidjson::ParseResult</a></div><div class="ttdoc">Result of parsing (wraps ParseErrorCode) </div><div class="ttdef"><b>Definition:</b> error.h:106</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html_a3ae97682cf04685c7db9d89ebc399b85"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">rapidjson::GenericDocument::ParseStream</a></div><div class="ttdeci">GenericDocument &amp; ParseStream(InputStream &amp;is)</div><div class="ttdoc">Parse JSON text from an input stream (with Encoding conversion) </div><div class="ttdef"><b>Definition:</b> document.h:2221</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_ad22fdeac87ec6c370dd43075d3586811"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811">rapidjson::GenericValue::FindMember</a></div><div class="ttdeci">MemberIterator FindMember(const Ch *name)</div><div class="ttdoc">Find member by name. </div><div class="ttdef"><b>Definition:</b> document.h:1190</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a77b0f41557b3c34b57a180698312c4a8"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a77b0f41557b3c34b57a180698312c4a8">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(Array a) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Constructor for Array. </div><div class="ttdef"><b>Definition:</b> document.h:757</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_abc8945d3411c6ce583d322753ce028e1"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#abc8945d3411c6ce583d322753ce028e1">rapidjson::GenericValue::Begin</a></div><div class="ttdeci">ConstValueIterator Begin() const </div><div class="ttdoc">Constant element iterator. </div><div class="ttdef"><b>Definition:</b> document.h:1569</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_aa27d086d265f0ce447b15b15f0a2ed6e"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#aa27d086d265f0ce447b15b15f0a2ed6e">rapidjson::GenericValue::GetDouble</a></div><div class="ttdeci">double GetDouble() const</div><div class="ttdoc">Get the value as double type. </div><div class="ttdef"><b>Definition:</b> document.h:1711</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a794129b8adffb97d123306a0c0ccaf71"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a794129b8adffb97d123306a0c0ccaf71">rapidjson::GenericValue::HasMember</a></div><div class="ttdeci">bool HasMember(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const</div><div class="ttdoc">Check whether a member exists in the object with GenericValue name. </div><div class="ttdef"><b>Definition:</b> document.h:1176</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_aa56b69bac5423622eff6998ce4802106"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#aa56b69bac5423622eff6998ce4802106">rapidjson::GenericValue::Clear</a></div><div class="ttdeci">void Clear()</div><div class="ttdoc">Remove all elements in the array. </div><div class="ttdef"><b>Definition:</b> document.h:1541</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_document_html_a42c35e2f64c288f14b74fec2792500c8"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#a42c35e2f64c288f14b74fec2792500c8">rapidjson::GenericDocument::Parse</a></div><div class="ttdeci">GenericDocument &amp; Parse(const Ch *str)</div><div class="ttdoc">Parse JSON text from a read-only string. </div><div class="ttdef"><b>Definition:</b> document.h:2298</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer</a></div><div class="ttdoc">Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator. </div><div class="ttdef"><b>Definition:</b> fwd.h:126</div></div>
-<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_document_html_a42c35e2f64c288f14b74fec2792500c8"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#a42c35e2f64c288f14b74fec2792500c8">rapidjson::GenericDocument::Parse</a></div><div class="ttdeci">GenericDocument &amp; Parse(const Ch *str)</div><div class="ttdoc">Parse JSON text from a read-only string </div><div class="ttdef"><b>Definition:</b> document.h:2298</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_aaa465706fda1e1ef4513ce877e0b4b69"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#aaa465706fda1e1ef4513ce877e0b4b69">rapidjson::GenericValue::operator==</a></div><div class="ttdeci">friend bool operator==(const T &amp;lhs, const GenericValue &amp;rhs)</div><div class="ttdoc">Equal-to operator with arbitrary types (symmetric version) </div><div class="ttdef"><b>Definition:</b> document.h:983</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a573712808dd5d8814c103cf55fd761b4"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a573712808dd5d8814c103cf55fd761b4">rapidjson::GenericValue::GetFloat</a></div><div class="ttdeci">float GetFloat() const</div><div class="ttdoc">Get the value as float type. </div><div class="ttdef"><b>Definition:</b> document.h:1723</div></div>
+<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html_a8367a827588dd91d02e21ef945bec9f5"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#a8367a827588dd91d02e21ef945bec9f5">rapidjson::GenericDocument::Ch</a></div><div class="ttdeci">Encoding::Ch Ch</div><div class="ttdoc">Character type derived from Encoding. </div><div class="ttdef"><b>Definition:</b> document.h:2092</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_document_html_aa52c3016961f25ecd989d82839bce4e5"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#aa52c3016961f25ecd989d82839bce4e5">rapidjson::GenericDocument::GenericDocument</a></div><div class="ttdeci">GenericDocument(Type type, Allocator *allocator=0, size_t stackCapacity=kDefaultStackCapacity, StackAllocator *stackAllocator=0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> document.h:2103</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_document_html_aa52c3016961f25ecd989d82839bce4e5"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#aa52c3016961f25ecd989d82839bce4e5">rapidjson::GenericDocument::GenericDocument</a></div><div class="ttdeci">GenericDocument(Type type, Allocator *allocator=0, size_t stackCapacity=kDefaultStackCapacity, StackAllocator *stackAllocator=0)</div><div class="ttdoc">Constructor </div><div class="ttdef"><b>Definition:</b> document.h:2103</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_adc312de070d03a63e6c692c9c61db156"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#adc312de070d03a63e6c692c9c61db156">rapidjson::GenericValue::operator[]</a></div><div class="ttdeci">GenericValue &amp; operator[](SizeType index)</div><div class="ttdoc">Get an element from array by index. </div><div class="ttdef"><b>Definition:</b> document.h:1554</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_a17955e32a06f667c672b270e6a4d2195"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#a17955e32a06f667c672b270e6a4d2195">rapidjson::GenericMemberIterator::Pointer</a></div><div class="ttdeci">BaseType::pointer Pointer</div><div class="ttdoc">Pointer to (const) GenericMember. </div><div class="ttdef"><b>Definition:</b> document.h:129</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_document_html_ad97e64c123ec1e07ea62ab0a9ce80c00"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#ad97e64c123ec1e07ea62ab0a9ce80c00">rapidjson::GenericDocument::GetParseError</a></div><div class="ttdeci">ParseErrorCode GetParseError() const </div><div class="ttdoc">Get the ParseErrorCode of last parsing. </div><div class="ttdef"><b>Definition:</b> document.h:2353</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_a17955e32a06f667c672b270e6a4d2195"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#a17955e32a06f667c672b270e6a4d2195">rapidjson::GenericMemberIterator::Pointer</a></div><div class="ttdeci">BaseType::pointer Pointer</div><div class="ttdoc">Pointer to (const) GenericMember </div><div class="ttdef"><b>Definition:</b> document.h:129</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">rapidjson::kObjectType</a></div><div class="ttdoc">object </div><div class="ttdef"><b>Definition:</b> rapidjson.h:620</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a0ec9f34bef5890241d4bc882b73b1db4"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a0ec9f34bef5890241d4bc882b73b1db4">rapidjson::GenericValue::PushBack</a></div><div class="ttdeci">GenericValue &amp; PushBack(GenericValue &amp;value, Allocator &amp;allocator)</div><div class="ttdoc">Append a GenericValue at the end of the array. </div><div class="ttdef"><b>Definition:</b> document.h:1599</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_ade8d1ca2b8e8afa02cde46e26866440b"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ade8d1ca2b8e8afa02cde46e26866440b">rapidjson::GenericValue::Is</a></div><div class="ttdeci">bool Is() const </div><div class="ttdoc">Templated version for checking whether this value is type T. </div><div class="ttdef"><b>Definition:</b> document.h:1810</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a8ec7fc7f221306925c7674dccbe02b07"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a8ec7fc7f221306925c7674dccbe02b07">rapidjson::GenericValue::operator[]</a></div><div class="ttdeci">GenericValue &amp; operator[](T *name)</div><div class="ttdoc">Get a value from an object associated with the name. </div><div class="ttdef"><b>Definition:</b> document.h:1089</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a06f10ef54f5692ce08206c26624a21db"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db">rapidjson::GenericValue::Swap</a></div><div class="ttdeci">GenericValue &amp; Swap(GenericValue &amp;other) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Exchange the contents of this value with those of other. </div><div class="ttdef"><b>Definition:</b> document.h:875</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_adb109ae9f12615efadf9277cb5e9c4ee"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee">rapidjson::GenericValue::MemberEnd</a></div><div class="ttdeci">MemberIterator MemberEnd()</div><div class="ttdoc">Past-the-end member iterator </div><div class="ttdef"><b>Definition:</b> document.h:1142</div></div>
-<div class="ttc" id="structrapidjson_1_1_generic_string_ref_html_acd4d5ebac2b610ce647356aa52998002"><div class="ttname"><a href="structrapidjson_1_1_generic_string_ref.html#acd4d5ebac2b610ce647356aa52998002">rapidjson::GenericStringRef::GenericStringRef</a></div><div class="ttdeci">GenericStringRef(const CharType(&amp;str)[N]) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Create string reference from const character array. </div><div class="ttdef"><b>Definition:</b> document.h:286</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_aff1711092a1278d36b8152f5520a686e"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#aff1711092a1278d36b8152f5520a686e">rapidjson::GenericValue::operator!=</a></div><div class="ttdeci">bool operator!=(const Ch *rhs) const </div><div class="ttdoc">Not-equal-to operator with const C-string pointer. </div><div class="ttdef"><b>Definition:</b> document.h:973</div></div>
+<div class="ttc" id="structrapidjson_1_1_generic_string_ref_html_acd4d5ebac2b610ce647356aa52998002"><div class="ttname"><a href="structrapidjson_1_1_generic_string_ref.html#acd4d5ebac2b610ce647356aa52998002">rapidjson::GenericStringRef::GenericStringRef</a></div><div class="ttdeci">GenericStringRef(const CharType(&amp;str)[N]) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Create string reference from const character array </div><div class="ttdef"><b>Definition:</b> document.h:286</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a852788b35257762cd8d6c4bf5c5d77bc"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a852788b35257762cd8d6c4bf5c5d77bc">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(const std::basic_string&lt; Ch &gt; &amp;s, Allocator &amp;allocator)</div><div class="ttdoc">Constructor for copy-string from a string object (i.e. do make a copy of string) </div><div class="ttdef"><b>Definition:</b> document.h:748</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_ga6a2b1695c13e77ae425e3cbac980ccb5"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a></div><div class="ttdeci">#define RAPIDJSON_UNLIKELY(x)</div><div class="ttdoc">Compiler branching hint for expression with low probability to be true. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:481</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a646b6d4d3d98799a0926d96ffa127a58"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a646b6d4d3d98799a0926d96ffa127a58">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(Type type) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Constructor with JSON value type. </div><div class="ttdef"><b>Definition:</b> document.h:606</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument</a></div><div class="ttdoc">A document for parsing JSON text as DOM. </div><div class="ttdef"><b>Definition:</b> document.h:70</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">rapidjson::kArrayType</a></div><div class="ttdoc">array </div><div class="ttdef"><b>Definition:</b> rapidjson.h:621</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a06ce0e14ec83b53c83e1b1699b53a25e"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a06ce0e14ec83b53c83e1b1699b53a25e">rapidjson::GenericValue::ValueIterator</a></div><div class="ttdeci">GenericValue * ValueIterator</div><div class="ttdoc">Value iterator for iterating in array. </div><div class="ttdef"><b>Definition:</b> document.h:564</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_afbdbc9cbc3b59feb5a28d5bfee97dbb3"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#afbdbc9cbc3b59feb5a28d5bfee97dbb3">rapidjson::GenericValue::operator==</a></div><div class="ttdeci">bool operator==(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const </div><div class="ttdoc">Equal-to operator. </div><div class="ttdef"><b>Definition:</b> document.h:910</div></div>
<div class="ttc" id="rapidjson_8h_html_a52c941c3fdd646527cdcd42aa846a28a"><div class="ttname"><a href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a></div><div class="ttdeci">#define RAPIDJSON_DELETE(x)</div><div class="ttdoc">! customization point for global delete </div><div class="ttdef"><b>Definition:</b> rapidjson.h:603</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_adcdbc7fa85a9a41b78966d7e0dcc2ac4"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4">rapidjson::GenericValue::Ch</a></div><div class="ttdeci">Encoding::Ch Ch</div><div class="ttdoc">Character type derived from Encoding. </div><div class="ttdef"><b>Definition:</b> document.h:560</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_value_1_1_number_1_1_u_html"><div class="ttname"><a href="structrapidjson_1_1_generic_value_1_1_number_1_1_u.html">rapidjson::GenericValue::Number::U</a></div><div class="ttdef"><b>Definition:</b> document.h:1961</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_aca5596987335016c1a7c2a9467baf80b"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b">rapidjson::GenericValue::MemberIterator</a></div><div class="ttdeci">GenericMemberIterator&lt; false, Encoding, Allocator &gt;::Iterator MemberIterator</div><div class="ttdoc">Member iterator for iterating in object. </div><div class="ttdef"><b>Definition:</b> document.h:562</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_document_html_ac785c064649dea6cfa67207b6bda748e"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#ac785c064649dea6cfa67207b6bda748e">rapidjson::GenericDocument::GetStackCapacity</a></div><div class="ttdeci">size_t GetStackCapacity() const </div><div class="ttdoc">Get the capacity of stack in bytes. </div><div class="ttdef"><b>Definition:</b> document.h:2380</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_ab933ad7ff8c9d08f73cebaecb700dbe9"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ab933ad7ff8c9d08f73cebaecb700dbe9">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(bool b) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Constructor for boolean value. </div><div class="ttdef"><b>Definition:</b> document.h:679</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_abba0c9ccfd90726f916c36013a2e9e19"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#abba0c9ccfd90726f916c36013a2e9e19">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(int i) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Constructor for int value. </div><div class="ttdef"><b>Definition:</b> document.h:688</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_member_html_a8ffff2076e62d988a070a136da6ffca6"><div class="ttname"><a href="structrapidjson_1_1_generic_member.html#a8ffff2076e62d988a070a136da6ffca6">rapidjson::GenericMember::value</a></div><div class="ttdeci">GenericValue&lt; Encoding, Allocator &gt; value</div><div class="ttdoc">value of member. </div><div class="ttdef"><b>Definition:</b> document.h:81</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_ad1f8199e65662e0d52a13a1577d4e4a5"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ad1f8199e65662e0d52a13a1577d4e4a5">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue() RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Default constructor creates a null value. </div><div class="ttdef"><b>Definition:</b> document.h:576</div></div>
-<div class="ttc" id="structrapidjson_1_1_generic_string_ref_html_a29cf407c6aa2313f13dff78d6ce02687"><div class="ttname"><a href="structrapidjson_1_1_generic_string_ref.html#a29cf407c6aa2313f13dff78d6ce02687">rapidjson::GenericStringRef::GenericStringRef</a></div><div class="ttdeci">GenericStringRef(const CharType *str)</div><div class="ttdoc">Explicitly create string reference from const character pointer. </div><div class="ttdef"><b>Definition:</b> document.h:310</div></div>
+<div class="ttc" id="structrapidjson_1_1_generic_string_ref_html_a29cf407c6aa2313f13dff78d6ce02687"><div class="ttname"><a href="structrapidjson_1_1_generic_string_ref.html#a29cf407c6aa2313f13dff78d6ce02687">rapidjson::GenericStringRef::GenericStringRef</a></div><div class="ttdeci">GenericStringRef(const CharType *str)</div><div class="ttdoc">Explicitly create string reference from const character pointer </div><div class="ttdef"><b>Definition:</b> document.h:310</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a8b7e47c57a20d0de0cd19eee799ebd88"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a8b7e47c57a20d0de0cd19eee799ebd88">rapidjson::GenericValue::MemberCount</a></div><div class="ttdeci">SizeType MemberCount() const</div><div class="ttdoc">Get the number of members in the object. </div><div class="ttdef"><b>Definition:</b> document.h:1074</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html_a0d63efcc43758ac3aed77e868233369d"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#a0d63efcc43758ac3aed77e868233369d">rapidjson::GenericDocument::swap</a></div><div class="ttdeci">friend void swap(GenericDocument &amp;a, GenericDocument &amp;b) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">free-standing swap function helper </div><div class="ttdef"><b>Definition:</b> document.h:2193</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">rapidjson::kNullType</a></div><div class="ttdoc">null </div><div class="ttdef"><b>Definition:</b> rapidjson.h:617</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_document_html_a82b27e7b228eb46a23f99720063ab4fb"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#a82b27e7b228eb46a23f99720063ab4fb">rapidjson::GenericDocument::GenericDocument</a></div><div class="ttdeci">GenericDocument(Allocator *allocator=0, size_t stackCapacity=kDefaultStackCapacity, StackAllocator *stackAllocator=0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> document.h:2116</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_document_html_a82b27e7b228eb46a23f99720063ab4fb"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#a82b27e7b228eb46a23f99720063ab4fb">rapidjson::GenericDocument::GenericDocument</a></div><div class="ttdeci">GenericDocument(Allocator *allocator=0, size_t stackCapacity=kDefaultStackCapacity, StackAllocator *stackAllocator=0)</div><div class="ttdoc">Constructor </div><div class="ttdef"><b>Definition:</b> document.h:2116</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_document_html_ab94c280c079a6837a24951cb4d8f337b"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#ab94c280c079a6837a24951cb4d8f337b">rapidjson::GenericDocument::GetParseError</a></div><div class="ttdeci">ParseErrorCode GetParseError() const</div><div class="ttdoc">Get the ParseErrorCode of last parsing. </div><div class="ttdef"><b>Definition:</b> document.h:2353</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_abfad2c34a97f82178cbf9464e958e2c2"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#abfad2c34a97f82178cbf9464e958e2c2">rapidjson::GenericMemberIterator::operator-</a></div><div class="ttdeci">DifferenceType operator-(ConstIterator that) const</div><div class="ttdoc">Distance </div><div class="ttdef"><b>Definition:</b> document.h:195</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_member_html_ae820eaa74b415a9073f3f3855f6c6607"><div class="ttname"><a href="structrapidjson_1_1_generic_member.html#ae820eaa74b415a9073f3f3855f6c6607">rapidjson::GenericMember::name</a></div><div class="ttdeci">GenericValue&lt; Encoding, Allocator &gt; name</div><div class="ttdoc">name of member (must be a string) </div><div class="ttdef"><b>Definition:</b> document.h:80</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">rapidjson::kStringType</a></div><div class="ttdoc">string </div><div class="ttdef"><b>Definition:</b> rapidjson.h:622</div></div>
<div class="ttc" id="classrapidjson_1_1_encoded_input_stream_html"><div class="ttname"><a href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream</a></div><div class="ttdoc">Input byte stream wrapper with a statically bound encoding. </div><div class="ttdef"><b>Definition:</b> encodedstream.h:39</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html_ad92c6cd025d411258d1f2ad890e2ee3f"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">rapidjson::GenericDocument::GetAllocator</a></div><div class="ttdeci">Allocator &amp; GetAllocator()</div><div class="ttdoc">Get the allocator of this document. </div><div class="ttdef"><b>Definition:</b> document.h:2374</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a0220ddebe2f023fa75b643a50e90e559"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a0220ddebe2f023fa75b643a50e90e559">rapidjson::GenericValue::Member</a></div><div class="ttdeci">GenericMember&lt; Encoding, Allocator &gt; Member</div><div class="ttdoc">Name-value pair in an object. </div><div class="ttdef"><b>Definition:</b> document.h:557</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_document_html_ae4ee7d86b8c906c83dbe15e57eb6ac6a"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#ae4ee7d86b8c906c83dbe15e57eb6ac6a">rapidjson::GenericDocument::ParseStream</a></div><div class="ttdeci">GenericDocument &amp; ParseStream(InputStream &amp;is)</div><div class="ttdoc">Parse JSON text from an input stream. </div><div class="ttdef"><b>Definition:</b> document.h:2240</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_acf5019b9002ebfd66a1191d19e986c7b"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#acf5019b9002ebfd66a1191d19e986c7b">rapidjson::GenericValue::MemberCount</a></div><div class="ttdeci">SizeType MemberCount() const </div><div class="ttdoc">Get the number of members in the object. </div><div class="ttdef"><b>Definition:</b> document.h:1074</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_document_html_ae4ee7d86b8c906c83dbe15e57eb6ac6a"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#ae4ee7d86b8c906c83dbe15e57eb6ac6a">rapidjson::GenericDocument::ParseStream</a></div><div class="ttdeci">GenericDocument &amp; ParseStream(InputStream &amp;is)</div><div class="ttdoc">Parse JSON text from an input stream </div><div class="ttdef"><b>Definition:</b> document.h:2240</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_string_ref_html_aa2a8eccae3d7eb14c30bc21afb7d6fba"><div class="ttname"><a href="structrapidjson_1_1_generic_string_ref.html#aa2a8eccae3d7eb14c30bc21afb7d6fba">rapidjson::GenericStringRef::Ch</a></div><div class="ttdeci">CharType Ch</div><div class="ttdoc">character type of the string </div><div class="ttdef"><b>Definition:</b> document.h:258</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a05906384808645a2e798d29a9b2d441d"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a05906384808645a2e798d29a9b2d441d">rapidjson::GenericValue::EncodingType</a></div><div class="ttdeci">Encoding EncodingType</div><div class="ttdoc">Encoding type from template parameter. </div><div class="ttdef"><b>Definition:</b> document.h:558</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a548e6c8a99c525573d933933610977cb"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a548e6c8a99c525573d933933610977cb">rapidjson::GenericValue::HasMember</a></div><div class="ttdeci">bool HasMember(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const </div><div class="ttdoc">Check whether a member exists in the object with GenericValue name. </div><div class="ttdef"><b>Definition:</b> document.h:1176</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a1f4835373e05abae52b91e1c6b7ec92c"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a1f4835373e05abae52b91e1c6b7ec92c">rapidjson::GenericValue::ObjectEmpty</a></div><div class="ttdeci">bool ObjectEmpty() const</div><div class="ttdoc">Check whether the object is empty. </div><div class="ttdef"><b>Definition:</b> document.h:1077</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a78d80b935babeedbfa71914a8fe5baa7"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a78d80b935babeedbfa71914a8fe5baa7">rapidjson::GenericValue::GetBool</a></div><div class="ttdeci">bool GetBool() const</div><div class="ttdoc">Set boolean value </div><div class="ttdef"><b>Definition:</b> document.h:1059</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html_aea842b533a858c9a3861451ad9e8642c"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">rapidjson::GenericDocument::Parse</a></div><div class="ttdeci">GenericDocument &amp; Parse(const typename SourceEncoding::Ch *str)</div><div class="ttdoc">Parse JSON text from a read-only string (with Encoding conversion) </div><div class="ttdef"><b>Definition:</b> document.h:2287</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_aabb538578a3c1e60c86cda32d062bc1c"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#aabb538578a3c1e60c86cda32d062bc1c">rapidjson::GenericValue::SetString</a></div><div class="ttdeci">GenericValue &amp; SetString(StringRefType s)</div><div class="ttdoc">Set this value as a string without copying source string. </div><div class="ttdef"><b>Definition:</b> document.h:1761</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a68d8d197ae1fb83d4dc202f9812af4cc"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a68d8d197ae1fb83d4dc202f9812af4cc">rapidjson::GenericValue::RemoveAllMembers</a></div><div class="ttdeci">void RemoveAllMembers()</div><div class="ttdoc">Remove all members in the object. </div><div class="ttdef"><b>Definition:</b> document.h:1395</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_aa30ffef74b3f4978b403024d81b484e4"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#aa30ffef74b3f4978b403024d81b484e4">rapidjson::GenericMemberIterator::GenericMemberIterator</a></div><div class="ttdeci">GenericMemberIterator(const NonConstIterator &amp;it)</div><div class="ttdoc">Iterator conversions to more const. </div><div class="ttdef"><b>Definition:</b> document.h:157</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_aa30ffef74b3f4978b403024d81b484e4"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#aa30ffef74b3f4978b403024d81b484e4">rapidjson::GenericMemberIterator::GenericMemberIterator</a></div><div class="ttdeci">GenericMemberIterator(const NonConstIterator &amp;it)</div><div class="ttdoc">Iterator conversions to more const </div><div class="ttdef"><b>Definition:</b> document.h:157</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_aecc9d0a6aafe31f4fdf9f6e75e5f089c"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#aecc9d0a6aafe31f4fdf9f6e75e5f089c">rapidjson::GenericValue::operator=</a></div><div class="ttdeci">GenericValue &amp; operator=(StringRefType str) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Assignment of constant string reference (no copy) </div><div class="ttdef"><b>Definition:</b> document.h:831</div></div>
-<div class="ttc" id="namespacerapidjson_html_ace11b5b575baf1cccd5ba5f8586dcdc8"><div class="ttname"><a href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">rapidjson::Document</a></div><div class="ttdeci">GenericDocument&lt; UTF8&lt;&gt; &gt; Document</div><div class="ttdoc">GenericDocument with UTF8 encoding. </div><div class="ttdef"><b>Definition:</b> document.h:2468</div></div>
+<div class="ttc" id="namespacerapidjson_html_ace11b5b575baf1cccd5ba5f8586dcdc8"><div class="ttname"><a href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">rapidjson::Document</a></div><div class="ttdeci">GenericDocument&lt; UTF8&lt;&gt; &gt; Document</div><div class="ttdoc">GenericDocument with UTF8 encoding </div><div class="ttdef"><b>Definition:</b> document.h:2468</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html_abf1cbab989b856f9d260787b2575750b"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#abf1cbab989b856f9d260787b2575750b">rapidjson::GenericDocument::Swap</a></div><div class="ttdeci">GenericDocument &amp; Swap(GenericDocument &amp;rhs) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Exchange the contents of this document with those of another. </div><div class="ttdef"><b>Definition:</b> document.h:2172</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a7bed9035dd1beeabe6f47e870874e793"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a7bed9035dd1beeabe6f47e870874e793">rapidjson::GenericValue::operator==</a></div><div class="ttdeci">bool operator==(const Ch *rhs) const </div><div class="ttdoc">Equal-to operator with const C-string pointer. </div><div class="ttdef"><b>Definition:</b> document.h:952</div></div>
<div class="ttc" id="namespacerapidjson_html_a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea"><div class="ttname"><a href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea">rapidjson::kParseInsituFlag</a></div><div class="ttdoc">In-situ(destructive) parsing. </div><div class="ttdef"><b>Definition:</b> reader.h:149</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_af17b9b6ba6a9fb4e02d2dced5aa0ee0c"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#af17b9b6ba6a9fb4e02d2dced5aa0ee0c">rapidjson::GenericValue::HasMember</a></div><div class="ttdeci">bool HasMember(const Ch *name) const </div><div class="ttdoc">Check whether a member exists in the object. </div><div class="ttdef"><b>Definition:</b> document.h:1152</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_afb1942ef13566484e1806689834a053f"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#afb1942ef13566484e1806689834a053f">rapidjson::GenericValue::HasMember</a></div><div class="ttdeci">bool HasMember(const std::basic_string&lt; Ch &gt; &amp;name) const </div><div class="ttdoc">Check whether a member exists in the object with string object. </div><div class="ttdef"><b>Definition:</b> document.h:1163</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a08bf77a430b865404c57a93d8f0f6d3d"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a08bf77a430b865404c57a93d8f0f6d3d">rapidjson::GenericValue::Empty</a></div><div class="ttdeci">bool Empty() const </div><div class="ttdoc">Check whether the array is empty. </div><div class="ttdef"><b>Definition:</b> document.h:1535</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_document_html_a7607bb42b51547e44bfd4cab35d8f20e"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#a7607bb42b51547e44bfd4cab35d8f20e">rapidjson::GenericDocument::HasParseError</a></div><div class="ttdeci">bool HasParseError() const</div><div class="ttdoc">Whether a parse error has occured in the last parsing. </div><div class="ttdef"><b>Definition:</b> document.h:2350</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html_a63e18887979da500ece6f0bd10d29b64"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#a63e18887979da500ece6f0bd10d29b64">rapidjson::GenericDocument::Populate</a></div><div class="ttdeci">GenericDocument &amp; Populate(Generator &amp;g)</div><div class="ttdoc">Populate this document by a generator which produces SAX events. </div><div class="ttdef"><b>Definition:</b> document.h:2201</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a812e5c07f74a90566e7636330740eb6a"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a812e5c07f74a90566e7636330740eb6a">rapidjson::GenericValue::Capacity</a></div><div class="ttdeci">SizeType Capacity() const</div><div class="ttdoc">Get the capacity of array. </div><div class="ttdef"><b>Definition:</b> document.h:1532</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_string_ref_html"><div class="ttname"><a href="structrapidjson_1_1_generic_string_ref.html">rapidjson::GenericStringRef</a></div><div class="ttdoc">Reference to a constant string (not taking a copy) </div><div class="ttdef"><b>Definition:</b> document.h:257</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a71b9e2ec1f7bf9e2f034126ca7b4945a"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a71b9e2ec1f7bf9e2f034126ca7b4945a">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(double d) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Constructor for double value. </div><div class="ttdef"><b>Definition:</b> document.h:727</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a5623c9039977ca0daf394e5c12f10c2d"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a5623c9039977ca0daf394e5c12f10c2d">rapidjson::GenericValue::SetBool</a></div><div class="ttdeci">GenericValue &amp; SetBool(bool b)</div><div class="ttdef"><b>Definition:</b> document.h:1062</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_abdd6a3b703a03aada4c186a2365698e7"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#abdd6a3b703a03aada4c186a2365698e7">rapidjson::GenericValue::End</a></div><div class="ttdeci">ConstValueIterator End() const</div><div class="ttdoc">Constant past-the-end element iterator </div><div class="ttdef"><b>Definition:</b> document.h:1572</div></div>
<div class="ttc" id="classrapidjson_1_1_allocator_html"><div class="ttname"><a href="classrapidjson_1_1_allocator.html">rapidjson::Allocator</a></div><div class="ttdoc">Concept for allocating, resizing and freeing memory block. </div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_aaddbbbb35cd783f209f889cf8dea9570"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#aaddbbbb35cd783f209f889cf8dea9570">rapidjson::GenericValue::operator==</a></div><div class="ttdeci">bool operator==(const T &amp;rhs) const</div><div class="ttdoc">Equal-to operator with primitive types </div><div class="ttdef"><b>Definition:</b> document.h:964</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue</a></div><div class="ttdoc">Represents a JSON value. Use Value for UTF8 encoding and default allocator. </div><div class="ttdef"><b>Definition:</b> document.h:67</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_ad9399a2a69444c44a9db2f63c3aa3eae"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae">rapidjson::GenericValue::CopyFrom</a></div><div class="ttdeci">GenericValue &amp; CopyFrom(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs, Allocator &amp;allocator, bool copyConstStrings=false)</div><div class="ttdoc">Deep-copy assignment from Value. </div><div class="ttdef"><b>Definition:</b> document.h:863</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_ad9399a2a69444c44a9db2f63c3aa3eae"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae">rapidjson::GenericValue::CopyFrom</a></div><div class="ttdeci">GenericValue &amp; CopyFrom(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs, Allocator &amp;allocator, bool copyConstStrings=false)</div><div class="ttdoc">Deep-copy assignment from Value </div><div class="ttdef"><b>Definition:</b> document.h:863</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a25069c76d045b058e54835d8c467c789"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a25069c76d045b058e54835d8c467c789">rapidjson::GenericValue::SetArray</a></div><div class="ttdeci">GenericValue &amp; SetArray()</div><div class="ttdoc">Set this value as an empty array. </div><div class="ttdef"><b>Definition:</b> document.h:1526</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html">rapidjson::GenericMemberIterator</a></div><div class="ttdoc">(Constant) member iterator for a JSON object value </div><div class="ttdef"><b>Definition:</b> document.h:109</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_ab4babf200cac2dacb412a3ea279ddf5b"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ab4babf200cac2dacb412a3ea279ddf5b">rapidjson::GenericValue::SetString</a></div><div class="ttdeci">GenericValue &amp; SetString(const Ch *s, Allocator &amp;allocator)</div><div class="ttdoc">Set this value as a string by copying from source string. </div><div class="ttdef"><b>Definition:</b> document.h:1779</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_ad3ebfa73796f4db4836ec47c2261700c"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c">rapidjson::GenericValue::Accept</a></div><div class="ttdeci">bool Accept(Handler &amp;handler) const</div><div class="ttdoc">Generate events of this value to a Handler. </div><div class="ttdef"><b>Definition:</b> document.h:1834</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_afe94e5e86a5b1a3fb605a9f8422f048b"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#afe94e5e86a5b1a3fb605a9f8422f048b">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(float f) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Constructor for float value. </div><div class="ttdef"><b>Definition:</b> document.h:730</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a121e40b5944be337189eb63b98b7e6ce"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a121e40b5944be337189eb63b98b7e6ce">rapidjson::GenericValue::EraseMember</a></div><div class="ttdeci">MemberIterator EraseMember(ConstMemberIterator first, ConstMemberIterator last)</div><div class="ttdoc">Remove members in the range [first, last) from an object. </div><div class="ttdef"><b>Definition:</b> document.h:1475</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_string_ref_html_a001276ee57cbcbd3c14449045c71e994"><div class="ttname"><a href="structrapidjson_1_1_generic_string_ref.html#a001276ee57cbcbd3c14449045c71e994">rapidjson::GenericStringRef::s</a></div><div class="ttdeci">const Ch *const s</div><div class="ttdoc">plain CharType pointer </div><div class="ttdef"><b>Definition:</b> document.h:330</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_object_html"><div class="ttname"><a href="classrapidjson_1_1_generic_object.html">rapidjson::GenericObject</a></div><div class="ttdoc">Helper class for accessing Value of object type. </div><div class="ttdef"><b>Definition:</b> document.h:538</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a07d947971c59c9ce884b3c5205c9238f"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a07d947971c59c9ce884b3c5205c9238f">rapidjson::GenericValue::Begin</a></div><div class="ttdeci">ConstValueIterator Begin() const</div><div class="ttdoc">Constant element iterator </div><div class="ttdef"><b>Definition:</b> document.h:1569</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a6cd2b09795c48d2892bebc0ae350d51f"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f">rapidjson::GenericValue::ConstMemberIterator</a></div><div class="ttdeci">GenericMemberIterator&lt; true, Encoding, Allocator &gt;::Iterator ConstMemberIterator</div><div class="ttdoc">Constant member iterator for iterating in object. </div><div class="ttdef"><b>Definition:</b> document.h:563</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_ad2d9786831d721cf8f1bf0dbdf86404a"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ad2d9786831d721cf8f1bf0dbdf86404a">rapidjson::GenericValue::End</a></div><div class="ttdeci">ConstValueIterator End() const </div><div class="ttdoc">Constant past-the-end element iterator. </div><div class="ttdef"><b>Definition:</b> document.h:1572</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_member_iterator_html_ac920af483c9e31a6746c22acf0dffc50"><div class="ttname"><a href="classrapidjson_1_1_generic_member_iterator.html#ac920af483c9e31a6746c22acf0dffc50">rapidjson::GenericMemberIterator::GenericMemberIterator</a></div><div class="ttdeci">GenericMemberIterator()</div><div class="ttdoc">Default constructor (singular value) </div><div class="ttdef"><b>Definition:</b> document.h:139</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a6cbb8a305fdc40beb83bee2b99ac5b59"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a6cbb8a305fdc40beb83bee2b99ac5b59">rapidjson::GenericValue::Capacity</a></div><div class="ttdeci">SizeType Capacity() const </div><div class="ttdoc">Get the capacity of array. </div><div class="ttdef"><b>Definition:</b> document.h:1532</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_ad290f179591025e871bedbbac89ac276"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ad290f179591025e871bedbbac89ac276">rapidjson::GenericValue::AddMember</a></div><div class="ttdeci">GenericValue &amp; AddMember(GenericValue &amp;name, StringRefType value, Allocator &amp;allocator)</div><div class="ttdoc">Add a constant string value as member (name-value pair) to the object. </div><div class="ttdef"><b>Definition:</b> document.h:1276</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_ad2935191ab28c2c2e472b739a9d58202"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202">rapidjson::GenericValue::ValueType</a></div><div class="ttdeci">GenericValue&lt; Encoding, Allocator &gt; ValueType</div><div class="ttdoc">Value type of itself. </div><div class="ttdef"><b>Definition:</b> document.h:566</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a41946915cb219a684f6ffc9341efee22"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a41946915cb219a684f6ffc9341efee22">rapidjson::GenericValue::PushBack</a></div><div class="ttdeci">GenericValue &amp; PushBack(StringRefType value, Allocator &amp;allocator)</div><div class="ttdoc">Append a constant string reference at the end of the array. </div><div class="ttdef"><b>Definition:</b> document.h:1622</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_document_html_a2ab17089bd6249bf2a7959d56d35cb68"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#a2ab17089bd6249bf2a7959d56d35cb68">rapidjson::GenericDocument::HasParseError</a></div><div class="ttdeci">bool HasParseError() const </div><div class="ttdoc">Whether a parse error has occured in the last parsing. </div><div class="ttdef"><b>Definition:</b> document.h:2350</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a85dc131bdad8077ce970d580d333d15a"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a85dc131bdad8077ce970d580d333d15a">rapidjson::GenericValue::AddMember</a></div><div class="ttdeci">GenericValue &amp; AddMember(StringRefType name, GenericValue &amp;value, Allocator &amp;allocator)</div><div class="ttdoc">Add a member (name-value pair) to the object. </div><div class="ttdef"><b>Definition:</b> document.h:1348</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_aa78e2eb30c6b918826eccf03f04f166b"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b">rapidjson::GenericValue::HasMember</a></div><div class="ttdeci">bool HasMember(const Ch *name) const</div><div class="ttdoc">Check whether a member exists in the object. </div><div class="ttdef"><b>Definition:</b> document.h:1152</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_ae6fe0576ff0336f6e2b09fe32f3ff809"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ae6fe0576ff0336f6e2b09fe32f3ff809">rapidjson::GenericValue::operator!=</a></div><div class="ttdeci">bool operator!=(const T &amp;rhs) const</div><div class="ttdoc">Not-equal-to operator with arbitrary types </div><div class="ttdef"><b>Definition:</b> document.h:978</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a1f125e735577aae64c0306345de45563"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a1f125e735577aae64c0306345de45563">rapidjson::GenericValue::GenericValue</a></div><div class="ttdeci">GenericValue(uint64_t u64) RAPIDJSON_NOEXCEPT</div><div class="ttdoc">Constructor for uint64_t value. </div><div class="ttdef"><b>Definition:</b> document.h:715</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">rapidjson::kNumberType</a></div><div class="ttdoc">number </div><div class="ttdef"><b>Definition:</b> rapidjson.h:623</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_document_html_a7ba626bf84eb45a9bca0b7723bf47f3f"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#a7ba626bf84eb45a9bca0b7723bf47f3f">rapidjson::GenericDocument::ParseInsitu</a></div><div class="ttdeci">GenericDocument &amp; ParseInsitu(Ch *str)</div><div class="ttdoc">Parse JSON text from a mutable string. </div><div class="ttdef"><b>Definition:</b> document.h:2264</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a18599e0d1a7e70a11b35f5e219390fea"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea">rapidjson::GenericValue::GetStringLength</a></div><div class="ttdeci">SizeType GetStringLength() const</div><div class="ttdoc">Get the length of string. </div><div class="ttdef"><b>Definition:</b> document.h:1744</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_ad5bf5afd53f21f370f917041b3be4bfc"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ad5bf5afd53f21f370f917041b3be4bfc">rapidjson::GenericValue::operator!=</a></div><div class="ttdeci">bool operator!=(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const</div><div class="ttdoc">Not-equal-to operator </div><div class="ttdef"><b>Definition:</b> document.h:970</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_document_html_a7ba626bf84eb45a9bca0b7723bf47f3f"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#a7ba626bf84eb45a9bca0b7723bf47f3f">rapidjson::GenericDocument::ParseInsitu</a></div><div class="ttdeci">GenericDocument &amp; ParseInsitu(Ch *str)</div><div class="ttdoc">Parse JSON text from a mutable string </div><div class="ttdef"><b>Definition:</b> document.h:2264</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_document_html_a153e5a065ca9660673974f9df203be4b"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#a153e5a065ca9660673974f9df203be4b">rapidjson::GenericDocument::GetStackCapacity</a></div><div class="ttdeci">size_t GetStackCapacity() const</div><div class="ttdoc">Get the capacity of stack in bytes. </div><div class="ttdef"><b>Definition:</b> document.h:2380</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_a68ba73eeda7b9429ca05267065d3cc99"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99">rapidjson::GenericValue::Erase</a></div><div class="ttdeci">ValueIterator Erase(ConstValueIterator pos)</div><div class="ttdoc">Remove an element of array by iterator. </div><div class="ttdef"><b>Definition:</b> document.h:1668</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_a979c4ba6dd2a311be837ae083423aca8"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8">rapidjson::GenericValue::GetStringLength</a></div><div class="ttdeci">SizeType GetStringLength() const </div><div class="ttdoc">Get the length of string. </div><div class="ttdef"><b>Definition:</b> document.h:1744</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_insitu_string_stream_html"><div class="ttname"><a href="structrapidjson_1_1_generic_insitu_string_stream.html">rapidjson::GenericInsituStringStream</a></div><div class="ttdoc">A read-write string stream. </div><div class="ttdef"><b>Definition:</b> fwd.h:52</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
@@ -2879,7 +263,7 @@ $(document).ready(function(){initNavTree('document_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="document_8h.html">document.h</a></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="document_8h.html">document.h</a></li>
</ul>
</div>
</body>
diff --git a/zh-cn/doxygen.css b/zh-cn/doxygen.css
index 0a8f9627..4f1ab919 100644
--- a/zh-cn/doxygen.css
+++ b/zh-cn/doxygen.css
@@ -1,9 +1,13 @@
-/* The standard CSS for doxygen 1.8.7 */
+/* The standard CSS for doxygen 1.8.13 */
body, table, div, p, dl {
font: 400 14px/22px Roboto,sans-serif;
}
+p.reference, p.definition {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
/* @group Heading Levels */
h1.groupheader {
@@ -173,7 +177,7 @@ pre.fragment {
}
div.fragment {
- padding: 4px 6px;
+ padding: 0px;
margin: 4px 8px 4px 2px;
background-color: #FBFCFD;
border: 1px solid #C4CFE5;
@@ -206,6 +210,11 @@ div.line {
transition-duration: 0.5s;
}
+div.line:after {
+ content:"\000A";
+ white-space: pre;
+}
+
div.line.glow {
background-color: cyan;
box-shadow: 0 0 10px cyan;
@@ -227,7 +236,16 @@ span.lineno a:hover {
background-color: #C8C8C8;
}
-div.ah {
+.lineno {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+div.ah, span.ah {
background-color: black;
font-weight: bold;
color: #ffffff;
@@ -242,7 +260,16 @@ div.ah {
-webkit-box-shadow: 2px 2px 3px #999;
-moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
- background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
+}
+
+div.classindex ul {
+ list-style: none;
+ padding-left: 0;
+}
+
+div.classindex span.ai {
+ display: inline-block;
}
div.groupHeader {
@@ -487,6 +514,29 @@ table.memberdecls {
/* Styles for detailed member documentation */
+.memtitle {
+ padding: 8px;
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ margin-bottom: -1px;
+ background-image: url('nav_f.png');
+ background-repeat: repeat-x;
+ background-color: #E2E8F2;
+ line-height: 1.25;
+ font-weight: 300;
+ float:left;
+}
+
+.permalink
+{
+ font-size: 65%;
+ display: inline-block;
+ vertical-align: middle;
+}
+
.memtemplate {
font-size: 80%;
color: #4665A2;
@@ -525,7 +575,7 @@ table.memberdecls {
}
.memname {
- font-weight: bold;
+ font-weight: 400;
margin-left: 6px;
}
@@ -541,24 +591,24 @@ table.memberdecls {
color: #253555;
font-weight: bold;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
- background-image:url('nav_f.png');
- background-repeat:repeat-x;
- background-color: #E2E8F2;
+ background-color: #DFE5F1;
/* opera specific markup */
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
border-top-right-radius: 4px;
- border-top-left-radius: 4px;
/* firefox specific markup */
-moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
-moz-border-radius-topright: 4px;
- -moz-border-radius-topleft: 4px;
/* webkit specific markup */
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
-webkit-border-top-right-radius: 4px;
- -webkit-border-top-left-radius: 4px;
}
+.overload {
+ font-family: "courier new",courier,monospace;
+ font-size: 65%;
+}
+
.memdoc, dl.reflist dd {
border-bottom: 1px solid #A8B8D9;
border-left: 1px solid #A8B8D9;
@@ -773,7 +823,7 @@ div.directory {
width: 24px;
height: 18px;
margin-bottom: 4px;
- background-image:url('ftv2folderopen.png');
+ background-image:url('folderopen.png');
background-position: 0px -4px;
background-repeat: repeat-y;
vertical-align:top;
@@ -784,7 +834,7 @@ div.directory {
width: 24px;
height: 18px;
margin-bottom: 4px;
- background-image:url('ftv2folderclosed.png');
+ background-image:url('folderclosed.png');
background-position: 0px -4px;
background-repeat: repeat-y;
vertical-align:top;
@@ -795,7 +845,7 @@ div.directory {
width: 24px;
height: 18px;
margin-bottom: 4px;
- background-image:url('ftv2doc.png');
+ background-image:url('doc.png');
background-position: 0px -4px;
background-repeat: repeat-y;
vertical-align:top;
@@ -823,6 +873,10 @@ address {
color: #2A3D61;
}
+table.doxtable caption {
+ caption-side: top;
+}
+
table.doxtable {
border-collapse:collapse;
margin-top: 4px;
@@ -896,6 +950,7 @@ table.fieldtable {
padding-bottom: 4px;
padding-top: 5px;
text-align:left;
+ font-weight: 400;
-moz-border-radius-topleft: 4px;
-moz-border-radius-topright: 4px;
-webkit-border-top-left-radius: 4px;
@@ -988,6 +1043,18 @@ div.summary a
white-space: nowrap;
}
+table.classindex
+{
+ margin: 10px;
+ white-space: nowrap;
+ margin-left: 3%;
+ margin-right: 3%;
+ width: 94%;
+ border: 0;
+ border-spacing: 0;
+ padding: 0;
+}
+
div.ingroups
{
font-size: 8pt;
@@ -1099,6 +1166,11 @@ dl.section dd {
border: 0px none;
}
+#projectalign
+{
+ vertical-align: middle;
+}
+
#projectname
{
font: 300% Tahoma, Arial,sans-serif;
@@ -1143,6 +1215,11 @@ dl.section dd {
text-align: center;
}
+.plantumlgraph
+{
+ text-align: center;
+}
+
.diagraph
{
text-align: center;
@@ -1182,7 +1259,7 @@ div.toc {
border-radius: 7px 7px 7px 7px;
float: right;
height: auto;
- margin: 0 20px 10px 10px;
+ margin: 0 8px 10px 10px;
width: 200px;
}
@@ -1438,3 +1515,82 @@ tr.heading h2 {
}
}
+/* @group Markdown */
+
+/*
+table.markdownTable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.markdownTableHead tr {
+}
+
+table.markdownTableBodyLeft td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+th.markdownTableHeadLeft {
+ text-align: left
+}
+
+th.markdownTableHeadRight {
+ text-align: right
+}
+
+th.markdownTableHeadCenter {
+ text-align: center
+}
+*/
+
+table.markdownTable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.markdownTable tr {
+}
+
+th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+th.markdownTableHeadLeft, td.markdownTableBodyLeft {
+ text-align: left
+}
+
+th.markdownTableHeadRight, td.markdownTableBodyRight {
+ text-align: right
+}
+
+th.markdownTableHeadCenter, td.markdownTableBodyCenter {
+ text-align: center
+}
+
+
+/* @end */
diff --git a/zh-cn/dtoa_8h_source.html b/zh-cn/dtoa_8h_source.html
index 2d70096c..131a487b 100644
--- a/zh-cn/dtoa_8h_source.html
+++ b/zh-cn/dtoa_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/internal/dtoa.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('dtoa_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,259 +81,14 @@ $(document).ready(function(){initNavTree('dtoa_8h_source.html','');});
<div class="title">dtoa.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// This is a C++ header-only implementation of Grisu2 algorithm from the publication:</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Loitsch, Florian. &quot;Printing floating-point numbers quickly and accurately with</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// integers.&quot; ACM Sigplan Notices 45.6 (2010): 233-243.</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_DTOA_</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#define RAPIDJSON_DTOA_</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;itoa.h&quot;</span> <span class="comment">// GetDigitsLut()</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;diyfp.h&quot;</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;ieee754.h&quot;</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;RAPIDJSON_DIAG_OFF(array-bounds) <span class="comment">// some gcc versions generate wrong warnings https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59124</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> GrisuRound(<span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> len, uint64_t delta, uint64_t rest, uint64_t ten_kappa, uint64_t wp_w) {</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">while</span> (rest &lt; wp_w &amp;&amp; delta - rest &gt;= ten_kappa &amp;&amp;</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; (rest + ten_kappa &lt; wp_w || <span class="comment">/// closer</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"></span> wp_w - rest &gt; rest + ten_kappa - wp_w)) {</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; buffer[len - 1]--;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; rest += ten_kappa;</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;}</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> CountDecimalDigit32(uint32_t n) {</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// Simple pure C++ implementation was faster than __builtin_clz version in this situation.</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span> (n &lt; 10) <span class="keywordflow">return</span> 1;</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span> (n &lt; 100) <span class="keywordflow">return</span> 2;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span> (n &lt; 1000) <span class="keywordflow">return</span> 3;</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span> (n &lt; 10000) <span class="keywordflow">return</span> 4;</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span> (n &lt; 100000) <span class="keywordflow">return</span> 5;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (n &lt; 1000000) <span class="keywordflow">return</span> 6;</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span> (n &lt; 10000000) <span class="keywordflow">return</span> 7;</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span> (n &lt; 100000000) <span class="keywordflow">return</span> 8;</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// Will not reach 10 digits in DigitGen()</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">//if (n &lt; 1000000000) return 9;</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">//return 10;</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> 9;</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> DigitGen(<span class="keyword">const</span> DiyFp&amp; W, <span class="keyword">const</span> DiyFp&amp; Mp, uint64_t delta, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span>* len, <span class="keywordtype">int</span>* K) {</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint32_t kPow10[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 };</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> DiyFp one(uint64_t(1) &lt;&lt; -Mp.e, Mp.e);</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> DiyFp wp_w = Mp - W;</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; uint32_t p1 = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(Mp.f &gt;&gt; -one.e);</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; uint64_t p2 = Mp.f &amp; (one.f - 1);</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">int</span> kappa = CountDecimalDigit32(p1); <span class="comment">// kappa in [0, 9]</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; *len = 0;</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">while</span> (kappa &gt; 0) {</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; uint32_t d = 0;</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">switch</span> (kappa) {</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">case</span> 9: d = p1 / 100000000; p1 %= 100000000; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">case</span> 8: d = p1 / 10000000; p1 %= 10000000; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">case</span> 7: d = p1 / 1000000; p1 %= 1000000; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">case</span> 6: d = p1 / 100000; p1 %= 100000; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">case</span> 5: d = p1 / 10000; p1 %= 10000; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">case</span> 4: d = p1 / 1000; p1 %= 1000; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> 3: d = p1 / 100; p1 %= 100; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">case</span> 2: d = p1 / 10; p1 %= 10; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">case</span> 1: d = p1; p1 = 0; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">default</span>:;</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (d || *len)</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; buffer[(*len)++] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(d));</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; kappa--;</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; uint64_t tmp = (<span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(p1) &lt;&lt; -one.e) + p2;</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span> (tmp &lt;= delta) {</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; *K += kappa;</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; GrisuRound(buffer, *len, delta, tmp, static_cast&lt;uint64_t&gt;(kPow10[kappa]) &lt;&lt; -one.e, wp_w.f);</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">// kappa = 0</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">for</span> (;;) {</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; p2 *= 10;</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; delta *= 10;</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">char</span> d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(p2 &gt;&gt; -one.e);</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span> (d || *len)</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; buffer[(*len)++] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + d);</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; p2 &amp;= one.f - 1;</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; kappa--;</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span> (p2 &lt; delta) {</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; *K += kappa;</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordtype">int</span> index = -kappa;</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; GrisuRound(buffer, *len, delta, p2, one.f, wp_w.f * (index &lt; 9 ? kPow10[index] : 0));</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> Grisu2(<span class="keywordtype">double</span> value, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span>* length, <span class="keywordtype">int</span>* K) {</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> DiyFp v(value);</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; DiyFp w_m, w_p;</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; v.NormalizedBoundaries(&amp;w_m, &amp;w_p);</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">const</span> DiyFp c_mk = GetCachedPower(w_p.e, K);</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> DiyFp W = v.Normalize() * c_mk;</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; DiyFp Wp = w_p * c_mk;</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; DiyFp Wm = w_m * c_mk;</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; Wm.f++;</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; Wp.f--;</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; DigitGen(W, Wp, Wp.f - Wm.f, buffer, length, K);</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;}</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span>* WriteExponent(<span class="keywordtype">int</span> K, <span class="keywordtype">char</span>* buffer) {</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (K &lt; 0) {</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; *buffer++ = <span class="charliteral">&#39;-&#39;</span>;</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; K = -K;</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">if</span> (K &gt;= 100) {</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; *buffer++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(K / 100));</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; K %= 100;</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* d = GetDigitsLut() + K * 2;</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; *buffer++ = d[0];</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; *buffer++ = d[1];</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (K &gt;= 10) {</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* d = GetDigitsLut() + K * 2;</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; *buffer++ = d[0];</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; *buffer++ = d[1];</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; *buffer++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(K));</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">return</span> buffer;</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;}</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span>* Prettify(<span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> k, <span class="keywordtype">int</span> maxDecimalPlaces) {</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> kk = length + k; <span class="comment">// 10^(kk-1) &lt;= v &lt; 10^kk</span></div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">if</span> (0 &lt;= k &amp;&amp; kk &lt;= 21) {</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// 1234e7 -&gt; 12340000000</span></div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = length; i &lt; kk; i++)</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; buffer[i] = <span class="charliteral">&#39;0&#39;</span>;</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; buffer[kk] = <span class="charliteral">&#39;.&#39;</span>;</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; buffer[kk + 1] = <span class="charliteral">&#39;0&#39;</span>;</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> &amp;buffer[kk + 2];</div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (0 &lt; kk &amp;&amp; kk &lt;= 21) {</div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="comment">// 1234e-2 -&gt; 12.34</span></div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; std::memmove(&amp;buffer[kk + 1], &amp;buffer[kk], static_cast&lt;size_t&gt;(length - kk));</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; buffer[kk] = <span class="charliteral">&#39;.&#39;</span>;</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span> (0 &gt; k + maxDecimalPlaces) {</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="comment">// When maxDecimalPlaces = 2, 1.2345 -&gt; 1.23, 1.102 -&gt; 1.1</span></div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="comment">// Remove extra trailing zeros (at least one) after truncation.</span></div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = kk + maxDecimalPlaces; i &gt; kk + 1; i--)</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span> (buffer[i] != <span class="charliteral">&#39;0&#39;</span>)</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> &amp;buffer[i + 1];</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> &amp;buffer[kk + 2]; <span class="comment">// Reserve one zero</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> &amp;buffer[length + 1];</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (-6 &lt; kk &amp;&amp; kk &lt;= 0) {</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// 1234e-6 -&gt; 0.001234</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> offset = 2 - kk;</div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; std::memmove(&amp;buffer[offset], &amp;buffer[0], static_cast&lt;size_t&gt;(length));</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; buffer[0] = <span class="charliteral">&#39;0&#39;</span>;</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; buffer[1] = <span class="charliteral">&#39;.&#39;</span>;</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 2; i &lt; offset; i++)</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; buffer[i] = <span class="charliteral">&#39;0&#39;</span>;</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (length - kk &gt; maxDecimalPlaces) {</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// When maxDecimalPlaces = 2, 0.123 -&gt; 0.12, 0.102 -&gt; 0.1</span></div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="comment">// Remove extra trailing zeros (at least one) after truncation.</span></div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = maxDecimalPlaces + 1; i &gt; 2; i--)</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span> (buffer[i] != <span class="charliteral">&#39;0&#39;</span>)</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> &amp;buffer[i + 1];</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">return</span> &amp;buffer[3]; <span class="comment">// Reserve one zero</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> &amp;buffer[length + offset];</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (kk &lt; -maxDecimalPlaces) {</div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">// Truncate to zero</span></div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; buffer[0] = <span class="charliteral">&#39;0&#39;</span>;</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; buffer[1] = <span class="charliteral">&#39;.&#39;</span>;</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; buffer[2] = <span class="charliteral">&#39;0&#39;</span>;</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">return</span> &amp;buffer[3];</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (length == 1) {</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="comment">// 1e30</span></div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; buffer[1] = <span class="charliteral">&#39;e&#39;</span>;</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> WriteExponent(kk - 1, &amp;buffer[2]);</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="comment">// 1234e30 -&gt; 1.234e33</span></div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; std::memmove(&amp;buffer[2], &amp;buffer[1], static_cast&lt;size_t&gt;(length - 1));</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; buffer[1] = <span class="charliteral">&#39;.&#39;</span>;</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; buffer[length + 1] = <span class="charliteral">&#39;e&#39;</span>;</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> WriteExponent(kk - 1, &amp;buffer[0 + length + 2]);</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;}</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span>* dtoa(<span class="keywordtype">double</span> value, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> maxDecimalPlaces = 324) {</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(maxDecimalPlaces &gt;= 1);</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; Double d(value);</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span> (d.IsZero()) {</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span> (d.Sign())</div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; *buffer++ = <span class="charliteral">&#39;-&#39;</span>; <span class="comment">// -0.0, Issue #289</span></div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; buffer[0] = <span class="charliteral">&#39;0&#39;</span>;</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; buffer[1] = <span class="charliteral">&#39;.&#39;</span>;</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; buffer[2] = <span class="charliteral">&#39;0&#39;</span>;</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">return</span> &amp;buffer[3];</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (value &lt; 0) {</div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; *buffer++ = <span class="charliteral">&#39;-&#39;</span>;</div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; value = -value;</div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordtype">int</span> length, K;</div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; Grisu2(value, buffer, &amp;length, &amp;K);</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> Prettify(buffer, length, K, maxDecimalPlaces);</div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;}</div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_DTOA_</span></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// This is a C++ header-only implementation of Grisu2 algorithm from the publication:</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Loitsch, Florian. &quot;Printing floating-point numbers quickly and accurately with</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// integers.&quot; ACM Sigplan Notices 45.6 (2010): 233-243.</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_DTOA_</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#define RAPIDJSON_DTOA_</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;itoa.h&quot;</span> <span class="comment">// GetDigitsLut()</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;diyfp.h&quot;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;ieee754.h&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;RAPIDJSON_DIAG_OFF(array-bounds) <span class="comment">// some gcc versions generate wrong warnings https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59124</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> GrisuRound(<span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> len, uint64_t delta, uint64_t rest, uint64_t ten_kappa, uint64_t wp_w) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">while</span> (rest &lt; wp_w &amp;&amp; delta - rest &gt;= ten_kappa &amp;&amp;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; (rest + ten_kappa &lt; wp_w || <span class="comment">/// closer</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"></span> wp_w - rest &gt; rest + ten_kappa - wp_w)) {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; buffer[len - 1]--;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; rest += ten_kappa;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;}</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> CountDecimalDigit32(uint32_t n) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="comment">// Simple pure C++ implementation was faster than __builtin_clz version in this situation.</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span> (n &lt; 10) <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span> (n &lt; 100) <span class="keywordflow">return</span> 2;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span> (n &lt; 1000) <span class="keywordflow">return</span> 3;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span> (n &lt; 10000) <span class="keywordflow">return</span> 4;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span> (n &lt; 100000) <span class="keywordflow">return</span> 5;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">if</span> (n &lt; 1000000) <span class="keywordflow">return</span> 6;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span> (n &lt; 10000000) <span class="keywordflow">return</span> 7;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">if</span> (n &lt; 100000000) <span class="keywordflow">return</span> 8;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// Will not reach 10 digits in DigitGen()</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">//if (n &lt; 1000000000) return 9;</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">//return 10;</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> 9;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> DigitGen(<span class="keyword">const</span> DiyFp&amp; W, <span class="keyword">const</span> DiyFp&amp; Mp, uint64_t delta, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span>* len, <span class="keywordtype">int</span>* K) {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint32_t kPow10[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 };</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> DiyFp one(uint64_t(1) &lt;&lt; -Mp.e, Mp.e);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> DiyFp wp_w = Mp - W;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; uint32_t p1 = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(Mp.f &gt;&gt; -one.e);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; uint64_t p2 = Mp.f &amp; (one.f - 1);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">int</span> kappa = CountDecimalDigit32(p1); <span class="comment">// kappa in [0, 9]</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; *len = 0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">while</span> (kappa &gt; 0) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; uint32_t d = 0;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">switch</span> (kappa) {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">case</span> 9: d = p1 / 100000000; p1 %= 100000000; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">case</span> 8: d = p1 / 10000000; p1 %= 10000000; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">case</span> 7: d = p1 / 1000000; p1 %= 1000000; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">case</span> 6: d = p1 / 100000; p1 %= 100000; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">case</span> 5: d = p1 / 10000; p1 %= 10000; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">case</span> 4: d = p1 / 1000; p1 %= 1000; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">case</span> 3: d = p1 / 100; p1 %= 100; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">case</span> 2: d = p1 / 10; p1 %= 10; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">case</span> 1: d = p1; p1 = 0; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">default</span>:;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (d || *len)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; buffer[(*len)++] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(d));</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; kappa--;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; uint64_t tmp = (<span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(p1) &lt;&lt; -one.e) + p2;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span> (tmp &lt;= delta) {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; *K += kappa;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; GrisuRound(buffer, *len, delta, tmp, static_cast&lt;uint64_t&gt;(kPow10[kappa]) &lt;&lt; -one.e, wp_w.f);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">// kappa = 0</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">for</span> (;;) {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; p2 *= 10;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; delta *= 10;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">char</span> d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(p2 &gt;&gt; -one.e);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">if</span> (d || *len)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; buffer[(*len)++] = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + d);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; p2 &amp;= one.f - 1;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; kappa--;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span> (p2 &lt; delta) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; *K += kappa;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordtype">int</span> index = -kappa;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; GrisuRound(buffer, *len, delta, p2, one.f, wp_w.f * (index &lt; 9 ? kPow10[index] : 0));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;}</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> Grisu2(<span class="keywordtype">double</span> value, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span>* length, <span class="keywordtype">int</span>* K) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">const</span> DiyFp v(value);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; DiyFp w_m, w_p;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; v.NormalizedBoundaries(&amp;w_m, &amp;w_p);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">const</span> DiyFp c_mk = GetCachedPower(w_p.e, K);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">const</span> DiyFp W = v.Normalize() * c_mk;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; DiyFp Wp = w_p * c_mk;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; DiyFp Wm = w_m * c_mk;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; Wm.f++;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; Wp.f--;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; DigitGen(W, Wp, Wp.f - Wm.f, buffer, length, K);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;}</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span>* WriteExponent(<span class="keywordtype">int</span> K, <span class="keywordtype">char</span>* buffer) {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (K &lt; 0) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; *buffer++ = <span class="charliteral">&#39;-&#39;</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; K = -K;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">if</span> (K &gt;= 100) {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; *buffer++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(K / 100));</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; K %= 100;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* d = GetDigitsLut() + K * 2;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; *buffer++ = d[0];</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; *buffer++ = d[1];</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (K &gt;= 10) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* d = GetDigitsLut() + K * 2;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; *buffer++ = d[0];</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; *buffer++ = d[1];</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; *buffer++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(K));</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">return</span> buffer;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;}</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span>* Prettify(<span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> length, <span class="keywordtype">int</span> k, <span class="keywordtype">int</span> maxDecimalPlaces) {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> kk = length + k; <span class="comment">// 10^(kk-1) &lt;= v &lt; 10^kk</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">if</span> (0 &lt;= k &amp;&amp; kk &lt;= 21) {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// 1234e7 -&gt; 12340000000</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = length; i &lt; kk; i++)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; buffer[i] = <span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; buffer[kk] = <span class="charliteral">&#39;.&#39;</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; buffer[kk + 1] = <span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">return</span> &amp;buffer[kk + 2];</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (0 &lt; kk &amp;&amp; kk &lt;= 21) {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="comment">// 1234e-2 -&gt; 12.34</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; std::memmove(&amp;buffer[kk + 1], &amp;buffer[kk], static_cast&lt;size_t&gt;(length - kk));</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; buffer[kk] = <span class="charliteral">&#39;.&#39;</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span> (0 &gt; k + maxDecimalPlaces) {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="comment">// When maxDecimalPlaces = 2, 1.2345 -&gt; 1.23, 1.102 -&gt; 1.1</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="comment">// Remove extra trailing zeros (at least one) after truncation.</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = kk + maxDecimalPlaces; i &gt; kk + 1; i--)</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span> (buffer[i] != <span class="charliteral">&#39;0&#39;</span>)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> &amp;buffer[i + 1];</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> &amp;buffer[kk + 2]; <span class="comment">// Reserve one zero</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> &amp;buffer[length + 1];</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (-6 &lt; kk &amp;&amp; kk &lt;= 0) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// 1234e-6 -&gt; 0.001234</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> offset = 2 - kk;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; std::memmove(&amp;buffer[offset], &amp;buffer[0], static_cast&lt;size_t&gt;(length));</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; buffer[0] = <span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; buffer[1] = <span class="charliteral">&#39;.&#39;</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 2; i &lt; offset; i++)</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; buffer[i] = <span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (length - kk &gt; maxDecimalPlaces) {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="comment">// When maxDecimalPlaces = 2, 0.123 -&gt; 0.12, 0.102 -&gt; 0.1</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="comment">// Remove extra trailing zeros (at least one) after truncation.</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = maxDecimalPlaces + 1; i &gt; 2; i--)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span> (buffer[i] != <span class="charliteral">&#39;0&#39;</span>)</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">return</span> &amp;buffer[i + 1];</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">return</span> &amp;buffer[3]; <span class="comment">// Reserve one zero</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> &amp;buffer[length + offset];</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (kk &lt; -maxDecimalPlaces) {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">// Truncate to zero</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; buffer[0] = <span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; buffer[1] = <span class="charliteral">&#39;.&#39;</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; buffer[2] = <span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">return</span> &amp;buffer[3];</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (length == 1) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="comment">// 1e30</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; buffer[1] = <span class="charliteral">&#39;e&#39;</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">return</span> WriteExponent(kk - 1, &amp;buffer[2]);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="comment">// 1234e30 -&gt; 1.234e33</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; std::memmove(&amp;buffer[2], &amp;buffer[1], static_cast&lt;size_t&gt;(length - 1));</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; buffer[1] = <span class="charliteral">&#39;.&#39;</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; buffer[length + 1] = <span class="charliteral">&#39;e&#39;</span>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> WriteExponent(kk - 1, &amp;buffer[0 + length + 2]);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;}</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span>* dtoa(<span class="keywordtype">double</span> value, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> maxDecimalPlaces = 324) {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(maxDecimalPlaces &gt;= 1);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; Double d(value);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span> (d.IsZero()) {</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span> (d.Sign())</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; *buffer++ = <span class="charliteral">&#39;-&#39;</span>; <span class="comment">// -0.0, Issue #289</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; buffer[0] = <span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; buffer[1] = <span class="charliteral">&#39;.&#39;</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; buffer[2] = <span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">return</span> &amp;buffer[3];</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (value &lt; 0) {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; *buffer++ = <span class="charliteral">&#39;-&#39;</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; value = -value;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordtype">int</span> length, K;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; Grisu2(value, buffer, &amp;length, &amp;K);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> Prettify(buffer, length, K, maxDecimalPlaces);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;}</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_DTOA_</span></div><div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5167ae66a3a40cb9e5e46c75b7477e81.html">internal</a></li><li class="navelem"><b>dtoa.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_8d7584a8244d286291cd37b99676a43b.html">internal</a></li><li class="navelem"><b>dtoa.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/en_8h_source.html b/zh-cn/en_8h_source.html
index 9c50ac06..cd947fb8 100644
--- a/zh-cn/en_8h_source.html
+++ b/zh-cn/en_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/error/en.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('en_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,88 +81,14 @@ $(document).ready(function(){initNavTree('en_8h_source.html','');});
<div class="title">en.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ERROR_EN_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_ERROR_EN_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="error_8h.html">error.h</a>&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_OFF(<span class="keywordflow">switch</span>-<span class="keyword">enum</span>)</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(covered-switch-default)</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">//! Maps error code of parsing into error message.</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> \ingroup RAPIDJSON_ERRORS</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> \param parseErrorCode Error code obtained in parsing.</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> \return the error message.</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> \note User can make a copy of this function for localization.</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> Using switch-case is safer for future modification of error codes.</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79"> 36</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a>* <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">GetParseError_En</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> parseErrorCode) {</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">switch</span> (parseErrorCode) {</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f">kParseErrorNone</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;No error.&quot;</span>);</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286">kParseErrorDocumentEmpty</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;The document is empty.&quot;</span>);</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5">kParseErrorDocumentRootNotSingular</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;The document root must not be followed by other values.&quot;</span>);</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; </div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Invalid value.&quot;</span>);</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; </div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242">kParseErrorObjectMissName</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Missing a name for object member.&quot;</span>);</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c">kParseErrorObjectMissColon</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Missing a colon after a name of object member.&quot;</span>);</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73">kParseErrorObjectMissCommaOrCurlyBracket</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Missing a comma or &#39;}&#39; after an object member.&quot;</span>);</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93">kParseErrorArrayMissCommaOrSquareBracket</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Missing a comma or &#39;]&#39; after an array element.&quot;</span>);</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a23c38bf88b8448555c0eb41e1735bd92">kParseErrorStringUnicodeEscapeInvalidHex</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Incorrect hex digit after \\u escape in string.&quot;</span>);</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386">kParseErrorStringUnicodeSurrogateInvalid</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;The surrogate pair in string is invalid.&quot;</span>);</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a8dd0af5e6103a6503c61c38cb2b0bab9">kParseErrorStringEscapeInvalid</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Invalid escape character in string.&quot;</span>);</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60af7daa91caa53abb881ea231a874a4f40">kParseErrorStringMissQuotationMark</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Missing a closing quotation mark in string.&quot;</span>);</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f">kParseErrorStringInvalidEncoding</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Invalid encoding in string.&quot;</span>);</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805">kParseErrorNumberTooBig</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Number too big to be stored in double.&quot;</span>);</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ac840ece3ba6874fe6f16c01ebb71031f">kParseErrorNumberMissFraction</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Miss fraction part in number.&quot;</span>);</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7">kParseErrorNumberMissExponent</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Miss exponent in number.&quot;</span>);</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Terminate parsing due to Handler error.&quot;</span>);</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24">kParseErrorUnspecificSyntaxError</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Unspecific syntax error.&quot;</span>);</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Unknown error.&quot;</span>);</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ERROR_EN_H_</span></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">rapidjson::kParseErrorValueInvalid</a></div><div class="ttdoc">Invalid value. </div><div class="ttdef"><b>Definition:</b> error.h:70</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ERROR_EN_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_ERROR_EN_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="error_8h.html">error.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_OFF(<span class="keywordflow">switch</span>-<span class="keyword">enum</span>)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(covered-switch-default)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">//! Maps error code of parsing into error message.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> \ingroup RAPIDJSON_ERRORS</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> \param parseErrorCode Error code obtained in parsing.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> \return the error message.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> \note User can make a copy of this function for localization.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> Using switch-case is safer for future modification of error codes.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79"> 36</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a>* <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">GetParseError_En</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> parseErrorCode) {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordflow">switch</span> (parseErrorCode) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f">kParseErrorNone</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;No error.&quot;</span>);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286">kParseErrorDocumentEmpty</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;The document is empty.&quot;</span>);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5">kParseErrorDocumentRootNotSingular</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;The document root must not be followed by other values.&quot;</span>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Invalid value.&quot;</span>);</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242">kParseErrorObjectMissName</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Missing a name for object member.&quot;</span>);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c">kParseErrorObjectMissColon</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Missing a colon after a name of object member.&quot;</span>);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73">kParseErrorObjectMissCommaOrCurlyBracket</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Missing a comma or &#39;}&#39; after an object member.&quot;</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93">kParseErrorArrayMissCommaOrSquareBracket</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Missing a comma or &#39;]&#39; after an array element.&quot;</span>);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a23c38bf88b8448555c0eb41e1735bd92">kParseErrorStringUnicodeEscapeInvalidHex</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Incorrect hex digit after \\u escape in string.&quot;</span>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386">kParseErrorStringUnicodeSurrogateInvalid</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;The surrogate pair in string is invalid.&quot;</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a8dd0af5e6103a6503c61c38cb2b0bab9">kParseErrorStringEscapeInvalid</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Invalid escape character in string.&quot;</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60af7daa91caa53abb881ea231a874a4f40">kParseErrorStringMissQuotationMark</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Missing a closing quotation mark in string.&quot;</span>);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f">kParseErrorStringInvalidEncoding</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Invalid encoding in string.&quot;</span>);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805">kParseErrorNumberTooBig</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Number too big to be stored in double.&quot;</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ac840ece3ba6874fe6f16c01ebb71031f">kParseErrorNumberMissFraction</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Miss fraction part in number.&quot;</span>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7">kParseErrorNumberMissExponent</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Miss exponent in number.&quot;</span>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Terminate parsing due to Handler error.&quot;</span>);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">case</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24">kParseErrorUnspecificSyntaxError</a>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Unspecific syntax error.&quot;</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(<span class="stringliteral">&quot;Unknown error.&quot;</span>);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ERROR_EN_H_</span></div><div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">rapidjson::kParseErrorValueInvalid</a></div><div class="ttdoc">Invalid value. </div><div class="ttdef"><b>Definition:</b> error.h:70</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386">rapidjson::kParseErrorStringUnicodeSurrogateInvalid</a></div><div class="ttdoc">The surrogate pair in string is invalid. </div><div class="ttdef"><b>Definition:</b> error.h:79</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c">rapidjson::kParseErrorObjectMissColon</a></div><div class="ttdoc">Missing a colon after a name of object member. </div><div class="ttdef"><b>Definition:</b> error.h:73</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a23c38bf88b8448555c0eb41e1735bd92"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a23c38bf88b8448555c0eb41e1735bd92">rapidjson::kParseErrorStringUnicodeEscapeInvalidHex</a></div><div class="ttdoc">Incorrect hex digit after \u escape in string. </div><div class="ttdef"><b>Definition:</b> error.h:78</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60ac840ece3ba6874fe6f16c01ebb71031f"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ac840ece3ba6874fe6f16c01ebb71031f">rapidjson::kParseErrorNumberMissFraction</a></div><div class="ttdoc">Miss fraction part in number. </div><div class="ttdef"><b>Definition:</b> error.h:85</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f">rapidjson::kParseErrorNone</a></div><div class="ttdoc">No error. </div><div class="ttdef"><b>Definition:</b> error.h:65</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ga7d3acf640886b1f2552dc8c4cd6dea60"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">rapidjson::ParseErrorCode</a></div><div class="ttdeci">ParseErrorCode</div><div class="ttdoc">Error code of parsing. </div><div class="ttdef"><b>Definition:</b> error.h:64</div></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93">rapidjson::kParseErrorArrayMissCommaOrSquareBracket</a></div><div class="ttdoc">Missing a comma or &#39;]&#39; after an array element. </div><div class="ttdef"><b>Definition:</b> error.h:76</div></div>
+<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93">rapidjson::kParseErrorArrayMissCommaOrSquareBracket</a></div><div class="ttdoc">Missing a comma or &amp;#39;]&amp;#39; after an array element. </div><div class="ttdef"><b>Definition:</b> error.h:76</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5">rapidjson::kParseErrorDocumentRootNotSingular</a></div><div class="ttdoc">The document root must not follow by other values. </div><div class="ttdef"><b>Definition:</b> error.h:68</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24">rapidjson::kParseErrorUnspecificSyntaxError</a></div><div class="ttdoc">Unspecific syntax error. </div><div class="ttdef"><b>Definition:</b> error.h:89</div></div>
<div class="ttc" id="error_8h_html"><div class="ttname"><a href="error_8h.html">error.h</a></div></div>
@@ -174,7 +101,7 @@ $(document).ready(function(){initNavTree('en_8h_source.html','');});
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7">rapidjson::kParseErrorNumberMissExponent</a></div><div class="ttdoc">Miss exponent in number. </div><div class="ttdef"><b>Definition:</b> error.h:86</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gabdaf1a7a4db30fb0e3d927fdf0fabe79"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">rapidjson::GetParseError_En</a></div><div class="ttdeci">const RAPIDJSON_ERROR_CHARTYPE * GetParseError_En(ParseErrorCode parseErrorCode)</div><div class="ttdoc">Maps error code of parsing into error message. </div><div class="ttdef"><b>Definition:</b> en.h:36</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286">rapidjson::kParseErrorDocumentEmpty</a></div><div class="ttdoc">The document is empty. </div><div class="ttdef"><b>Definition:</b> error.h:67</div></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73">rapidjson::kParseErrorObjectMissCommaOrCurlyBracket</a></div><div class="ttdoc">Missing a comma or &#39;}&#39; after an object member. </div><div class="ttdef"><b>Definition:</b> error.h:74</div></div>
+<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73">rapidjson::kParseErrorObjectMissCommaOrCurlyBracket</a></div><div class="ttdoc">Missing a comma or &amp;#39;}&amp;#39; after an object member. </div><div class="ttdef"><b>Definition:</b> error.h:74</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f">rapidjson::kParseErrorStringInvalidEncoding</a></div><div class="ttdoc">Invalid encoding in string. </div><div class="ttdef"><b>Definition:</b> error.h:82</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gabe2e1bd1349e5a7d6c1af78c05a98f0d"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a></div><div class="ttdeci">#define RAPIDJSON_ERROR_STRING(x)</div><div class="ttdoc">Macro for converting string literial to RAPIDJSON_ERROR_CHARTYPE[]. </div><div class="ttdef"><b>Definition:</b> error.h:52</div></div>
</div><!-- fragment --></div><!-- contents -->
@@ -183,7 +110,7 @@ $(document).ready(function(){initNavTree('en_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_fe9dda5e4327cd9afbdccfe35db969bf.html">error</a></li><li class="navelem"><b>en.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5937892b65cdaf02cc4201f920170bd1.html">error</a></li><li class="navelem"><b>en.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/encodedstream_8h_source.html b/zh-cn/encodedstream_8h_source.html
index 6db094ed..6d372a0a 100644
--- a/zh-cn/encodedstream_8h_source.html
+++ b/zh-cn/encodedstream_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/encodedstream.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('encodedstream_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,306 +81,7 @@ $(document).ready(function(){initNavTree('encodedstream_8h_source.html','');});
<div class="title">encodedstream.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ENCODEDSTREAM_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_ENCODEDSTREAM_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;memorystream.h&quot;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">//! Input byte stream wrapper with a statically bound encoding.</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> \tparam Encoding The interpretation of encoding of the stream. Either UTF8, UTF16LE, UTF16BE, UTF32LE, UTF32BE.</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> \tparam InputByteStream Type of input byte stream. For example, FileReadStream.</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_encoded_input_stream.html"> 39</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a> {</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>(InputByteStream&amp; is) : is_(is) { </div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; current_ = Encoding::TakeBOM(is_);</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> current_; }</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; Ch Take() { Ch c = current_; current_ = Encoding::Take(is_); <span class="keywordflow">return</span> c; }</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> is_.Tell(); }</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// Not implemented</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">void</span> Put(Ch) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">void</span> Flush() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); } </div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&amp;);</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&amp;);</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; InputByteStream&amp; is_;</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; Ch current_;</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;};</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">//! Specialized for UTF8 MemoryStream.</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"></span><span class="keyword">template</span> &lt;&gt;</div>
-<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html"> 68</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&lt;<a class="code" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt;&gt;, <a class="code" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a>&gt; {</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">typedef</span> UTF8&lt;&gt;::Ch Ch;</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>(<a class="code" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a>&amp; is) : is_(is) {</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;unsigned char&gt;(is_.Peek()) == 0xEFu) is_.Take();</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;unsigned char&gt;(is_.Peek()) == 0xBBu) is_.Take();</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;unsigned char&gt;(is_.Peek()) == 0xBFu) is_.Take();</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> is_.Peek(); }</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; Ch Take() { <span class="keywordflow">return</span> is_.Take(); }</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> is_.Tell(); }</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">// Not implemented</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">void</span> Put(Ch) {}</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">void</span> Flush() {} </div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; Ch* PutBegin() { <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a>&amp; is_;</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&amp;);</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&amp;);</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;};</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment">//! Output byte stream wrapper with statically bound encoding.</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> \tparam Encoding The interpretation of encoding of the stream. Either UTF8, UTF16LE, UTF16BE, UTF32LE, UTF32BE.</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> \tparam OutputByteStream Type of input byte stream. For example, FileWriteStream.</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_encoded_output_stream.html"> 100</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_encoded_output_stream.html">EncodedOutputStream</a> {</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_output_stream.html">EncodedOutputStream</a>(OutputByteStream&amp; os, <span class="keywordtype">bool</span> putBOM = <span class="keyword">true</span>) : os_(os) { </div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (putBOM)</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; Encoding::PutBOM(os_);</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">void</span> Put(Ch c) { Encoding::Put(os_, c); }</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordtype">void</span> Flush() { os_.Flush(); }</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">// Not implemented</span></div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0;}</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; Ch Take() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0;}</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_output_stream.html">EncodedOutputStream</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_encoded_output_stream.html">EncodedOutputStream</a>&amp;);</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_output_stream.html">EncodedOutputStream</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_encoded_output_stream.html">EncodedOutputStream</a>&amp;);</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; OutputByteStream&amp; os_;</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;};</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="preprocessor">#define RAPIDJSON_ENCODINGS_FUNC(x) UTF8&lt;Ch&gt;::x, UTF16LE&lt;Ch&gt;::x, UTF16BE&lt;Ch&gt;::x, UTF32LE&lt;Ch&gt;::x, UTF32BE&lt;Ch&gt;::x</span></div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment">//! Input stream wrapper with dynamically bound encoding and automatic encoding detection.</span></div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> \tparam CharType Type of character for reading.</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> \tparam InputByteStream type of input byte stream to be wrapped.</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> CharType, <span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_auto_u_t_f_input_stream.html"> 135</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">AutoUTFInputStream</a> {</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> //! Constructor.</span></div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"> \param is input stream to be wrapped.</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> \param type UTF encoding type if it is not detected from the stream.</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_auto_u_t_f_input_stream.html#a5c9f041a3b32bf15bc9be888a8731d35"> 145</a></span>&#160; <a class="code" href="classrapidjson_1_1_auto_u_t_f_input_stream.html#a5c9f041a3b32bf15bc9be888a8731d35">AutoUTFInputStream</a>(InputByteStream&amp; is, <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> type = kUTF8) : is_(&amp;is), type_(type), hasBOM_(false) {</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(type &gt;= <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81">kUTF8</a> &amp;&amp; type &lt;= <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f">kUTF32BE</a>); </div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; DetectType();</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> TakeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Take) };</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; takeFunc_ = f[type_];</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; current_ = takeFunc_(*is_);</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> GetType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> type_; }</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">bool</span> HasBOM()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> hasBOM_; }</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> current_; }</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; Ch Take() { Ch c = current_; current_ = takeFunc_(*is_); <span class="keywordflow">return</span> c; }</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> is_-&gt;Tell(); }</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">// Not implemented</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordtype">void</span> Put(Ch) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordtype">void</span> Flush() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); } </div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; AutoUTFInputStream(<span class="keyword">const</span> AutoUTFInputStream&amp;);</div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; AutoUTFInputStream&amp; operator=(<span class="keyword">const</span> AutoUTFInputStream&amp;);</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="comment">// Detect encoding type with BOM or RFC 4627</span></div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordtype">void</span> DetectType() {</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">// BOM (Byte Order Mark):</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="comment">// 00 00 FE FF UTF-32BE</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="comment">// FF FE 00 00 UTF-32LE</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">// FE FF UTF-16BE</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="comment">// FF FE UTF-16LE</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// EF BB BF UTF-8</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* c = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *<span class="keyword">&gt;</span>(is_-&gt;Peek4());</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span> (!c)</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordtype">unsigned</span> bom = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(c[0] | (c[1] &lt;&lt; 8) | (c[2] &lt;&lt; 16) | (c[3] &lt;&lt; 24));</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; hasBOM_ = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (bom == 0xFFFE0000) { type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f">kUTF32BE</a>; hasBOM_ = <span class="keyword">true</span>; is_-&gt;Take(); is_-&gt;Take(); is_-&gt;Take(); is_-&gt;Take(); }</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bom == 0x0000FEFF) { type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba2ec8c855b2edacca40fa73ad307a66b4">kUTF32LE</a>; hasBOM_ = <span class="keyword">true</span>; is_-&gt;Take(); is_-&gt;Take(); is_-&gt;Take(); is_-&gt;Take(); }</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((bom &amp; 0xFFFF) == 0xFFFE) { type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba52c496755de96eee05275a423b36299d">kUTF16BE</a>; hasBOM_ = <span class="keyword">true</span>; is_-&gt;Take(); is_-&gt;Take(); }</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((bom &amp; 0xFFFF) == 0xFEFF) { type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481">kUTF16LE</a>; hasBOM_ = <span class="keyword">true</span>; is_-&gt;Take(); is_-&gt;Take(); }</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((bom &amp; 0xFFFFFF) == 0xBFBBEF) { type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81">kUTF8</a>; hasBOM_ = <span class="keyword">true</span>; is_-&gt;Take(); is_-&gt;Take(); is_-&gt;Take(); }</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="comment">// RFC 4627: Section 3</span></div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="comment">// &quot;Since the first two characters of a JSON text will always be ASCII</span></div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="comment">// characters [RFC0020], it is possible to determine whether an octet</span></div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="comment">// stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking</span></div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">// at the pattern of nulls in the first four octets.&quot;</span></div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">// 00 00 00 xx UTF-32BE</span></div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">// 00 xx 00 xx UTF-16BE</span></div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="comment">// xx 00 00 00 UTF-32LE</span></div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// xx 00 xx 00 UTF-16LE</span></div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// xx xx xx xx UTF-8</span></div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (!hasBOM_) {</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">int</span> pattern = (c[0] ? 1 : 0) | (c[1] ? 2 : 0) | (c[2] ? 4 : 0) | (c[3] ? 8 : 0);</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">switch</span> (pattern) {</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">case</span> 0x08: type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f">kUTF32BE</a>; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">case</span> 0x0A: type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba52c496755de96eee05275a423b36299d">kUTF16BE</a>; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">case</span> 0x01: type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba2ec8c855b2edacca40fa73ad307a66b4">kUTF32LE</a>; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">case</span> 0x05: type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481">kUTF16LE</a>; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">case</span> 0x0F: type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81">kUTF8</a>; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">break</span>; <span class="comment">// Use type defined by user.</span></div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// Runtime check whether the size of character type is sufficient. It only perform checks with assertion.</span></div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span> (type_ == kUTF16LE || type_ == kUTF16BE) <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">sizeof</span>(Ch) &gt;= 2);</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span> (type_ == kUTF32LE || type_ == kUTF32BE) <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">sizeof</span>(Ch) &gt;= 4);</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keyword">typedef</span> Ch (*TakeFunc)(InputByteStream&amp; is);</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; InputByteStream* is_;</div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> type_;</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; Ch current_;</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; TakeFunc takeFunc_;</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordtype">bool</span> hasBOM_;</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;};</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment">//! Output stream wrapper with dynamically bound encoding and automatic encoding detection.</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment"> \tparam CharType Type of character for writing.</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment"> \tparam OutputByteStream type of output byte stream to be wrapped.</span></div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> CharType, <span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_auto_u_t_f_output_stream.html"> 233</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">AutoUTFOutputStream</a> {</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment"> //! Constructor.</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment"> \param os output stream to be wrapped.</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment"> \param type UTF encoding type.</span></div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment"> \param putBOM Whether to write BOM at the beginning of the stream.</span></div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_auto_u_t_f_output_stream.html#a39c828ee4c5b052df7338ec7fda1a17d"> 244</a></span>&#160; <a class="code" href="classrapidjson_1_1_auto_u_t_f_output_stream.html#a39c828ee4c5b052df7338ec7fda1a17d">AutoUTFOutputStream</a>(OutputByteStream&amp; os, <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> type, <span class="keywordtype">bool</span> putBOM) : os_(&amp;os), type_(type) {</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(type &gt;= <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81">kUTF8</a> &amp;&amp; type &lt;= <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f">kUTF32BE</a>);</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="comment">// Runtime check whether the size of character type is sufficient. It only perform checks with assertion.</span></div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">if</span> (type_ == <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481">kUTF16LE</a> || type_ == <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba52c496755de96eee05275a423b36299d">kUTF16BE</a>) <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">sizeof</span>(Ch) &gt;= 2);</div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (type_ == <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba2ec8c855b2edacca40fa73ad307a66b4">kUTF32LE</a> || type_ == <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f">kUTF32BE</a>) <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">sizeof</span>(Ch) &gt;= 4);</div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> PutFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Put) };</div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; putFunc_ = f[type_];</div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span> (putBOM)</div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; PutBOM();</div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> GetType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> type_; }</div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordtype">void</span> Put(Ch c) { putFunc_(*os_, c); }</div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordtype">void</span> Flush() { os_-&gt;Flush(); } </div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">// Not implemented</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0;}</div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; Ch Take() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0;}</div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; AutoUTFOutputStream(<span class="keyword">const</span> AutoUTFOutputStream&amp;);</div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; AutoUTFOutputStream&amp; operator=(<span class="keyword">const</span> AutoUTFOutputStream&amp;);</div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordtype">void</span> PutBOM() { </div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">typedef</span> void (*PutBOMFunc)(OutputByteStream&amp;);</div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> PutBOMFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(PutBOM) };</div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; f[type_](*os_);</div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keyword">typedef</span> void (*PutFunc)(OutputByteStream&amp;, Ch);</div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; OutputByteStream* os_;</div>
-<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> type_;</div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; PutFunc putFunc_;</div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;};</div>
-<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="preprocessor">#undef RAPIDJSON_ENCODINGS_FUNC</span></div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div>
-<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div>
-<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_FILESTREAM_H_</span></div>
-<div class="ttc" id="namespacerapidjson_html_a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481"><div class="ttname"><a href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481">rapidjson::kUTF16LE</a></div><div class="ttdoc">UTF-16 little endian. </div><div class="ttdef"><b>Definition:</b> encodings.h:605</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ENCODEDSTREAM_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_ENCODEDSTREAM_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;memorystream.h&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">//! Input byte stream wrapper with a statically bound encoding.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> \tparam Encoding The interpretation of encoding of the stream. Either UTF8, UTF16LE, UTF16BE, UTF32LE, UTF32BE.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> \tparam InputByteStream Type of input byte stream. For example, FileReadStream.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_encoded_input_stream.html"> 39</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a> {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>(InputByteStream&amp; is) : is_(is) { </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; current_ = Encoding::TakeBOM(is_);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> current_; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; Ch Take() { Ch c = current_; current_ = Encoding::Take(is_); <span class="keywordflow">return</span> c; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> is_.Tell(); }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// Not implemented</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordtype">void</span> Put(Ch) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">void</span> Flush() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); } </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&amp;);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&amp;);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; InputByteStream&amp; is_;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; Ch current_;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;};</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">//! Specialized for UTF8 MemoryStream.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"></span><span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html"> 68</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&lt;<a class="code" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt;&gt;, <a class="code" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a>&gt; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">typedef</span> UTF8&lt;&gt;::Ch Ch;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>(<a class="code" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a>&amp; is) : is_(is) {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;unsigned char&gt;(is_.Peek()) == 0xEFu) is_.Take();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;unsigned char&gt;(is_.Peek()) == 0xBBu) is_.Take();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;unsigned char&gt;(is_.Peek()) == 0xBFu) is_.Take();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> is_.Peek(); }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; Ch Take() { <span class="keywordflow">return</span> is_.Take(); }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> is_.Tell(); }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="comment">// Not implemented</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">void</span> Put(Ch) {}</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordtype">void</span> Flush() {} </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; Ch* PutBegin() { <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a>&amp; is_;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&amp;);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&amp;);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;};</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment">//! Output byte stream wrapper with statically bound encoding.</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> \tparam Encoding The interpretation of encoding of the stream. Either UTF8, UTF16LE, UTF16BE, UTF32LE, UTF32BE.</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> \tparam OutputByteStream Type of input byte stream. For example, FileWriteStream.</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_encoded_output_stream.html"> 100</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_encoded_output_stream.html">EncodedOutputStream</a> {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_output_stream.html">EncodedOutputStream</a>(OutputByteStream&amp; os, <span class="keywordtype">bool</span> putBOM = <span class="keyword">true</span>) : os_(os) { </div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">if</span> (putBOM)</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; Encoding::PutBOM(os_);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">void</span> Put(Ch c) { Encoding::Put(os_, c); }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordtype">void</span> Flush() { os_.Flush(); }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">// Not implemented</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0;}</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; Ch Take() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0;}</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_output_stream.html">EncodedOutputStream</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_encoded_output_stream.html">EncodedOutputStream</a>&amp;);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="classrapidjson_1_1_encoded_output_stream.html">EncodedOutputStream</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_encoded_output_stream.html">EncodedOutputStream</a>&amp;);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; OutputByteStream&amp; os_;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;};</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="preprocessor">#define RAPIDJSON_ENCODINGS_FUNC(x) UTF8&lt;Ch&gt;::x, UTF16LE&lt;Ch&gt;::x, UTF16BE&lt;Ch&gt;::x, UTF32LE&lt;Ch&gt;::x, UTF32BE&lt;Ch&gt;::x</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment">//! Input stream wrapper with dynamically bound encoding and automatic encoding detection.</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> \tparam CharType Type of character for reading.</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> \tparam InputByteStream type of input byte stream to be wrapped.</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> CharType, <span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_auto_u_t_f_input_stream.html"> 135</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">AutoUTFInputStream</a> {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> //! Constructor.</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"> \param is input stream to be wrapped.</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> \param type UTF encoding type if it is not detected from the stream.</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_auto_u_t_f_input_stream.html#a5c9f041a3b32bf15bc9be888a8731d35"> 145</a></span>&#160; <a class="code" href="classrapidjson_1_1_auto_u_t_f_input_stream.html#a5c9f041a3b32bf15bc9be888a8731d35">AutoUTFInputStream</a>(InputByteStream&amp; is, <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> type = kUTF8) : is_(&amp;is), type_(type), hasBOM_(false) {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(type &gt;= <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81">kUTF8</a> &amp;&amp; type &lt;= <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f">kUTF32BE</a>); </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; DetectType();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> TakeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Take) };</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; takeFunc_ = f[type_];</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; current_ = takeFunc_(*is_);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> GetType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> type_; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordtype">bool</span> HasBOM()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> hasBOM_; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> current_; }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; Ch Take() { Ch c = current_; current_ = takeFunc_(*is_); <span class="keywordflow">return</span> c; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> is_-&gt;Tell(); }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="comment">// Not implemented</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordtype">void</span> Put(Ch) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordtype">void</span> Flush() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); } </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">AutoUTFInputStream</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">AutoUTFInputStream</a>&amp;);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">AutoUTFInputStream</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">AutoUTFInputStream</a>&amp;);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="comment">// Detect encoding type with BOM or RFC 4627</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordtype">void</span> DetectType() {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="comment">// BOM (Byte Order Mark):</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="comment">// 00 00 FE FF UTF-32BE</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="comment">// FF FE 00 00 UTF-32LE</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">// FE FF UTF-16BE</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="comment">// FF FE UTF-16LE</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// EF BB BF UTF-8</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* c = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *<span class="keyword">&gt;</span>(is_-&gt;Peek4());</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">if</span> (!c)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordtype">unsigned</span> bom = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(c[0] | (c[1] &lt;&lt; 8) | (c[2] &lt;&lt; 16) | (c[3] &lt;&lt; 24));</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; hasBOM_ = <span class="keyword">false</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (bom == 0xFFFE0000) { type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f">kUTF32BE</a>; hasBOM_ = <span class="keyword">true</span>; is_-&gt;Take(); is_-&gt;Take(); is_-&gt;Take(); is_-&gt;Take(); }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bom == 0x0000FEFF) { type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba2ec8c855b2edacca40fa73ad307a66b4">kUTF32LE</a>; hasBOM_ = <span class="keyword">true</span>; is_-&gt;Take(); is_-&gt;Take(); is_-&gt;Take(); is_-&gt;Take(); }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((bom &amp; 0xFFFF) == 0xFFFE) { type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba52c496755de96eee05275a423b36299d">kUTF16BE</a>; hasBOM_ = <span class="keyword">true</span>; is_-&gt;Take(); is_-&gt;Take(); }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((bom &amp; 0xFFFF) == 0xFEFF) { type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481">kUTF16LE</a>; hasBOM_ = <span class="keyword">true</span>; is_-&gt;Take(); is_-&gt;Take(); }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((bom &amp; 0xFFFFFF) == 0xBFBBEF) { type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81">kUTF8</a>; hasBOM_ = <span class="keyword">true</span>; is_-&gt;Take(); is_-&gt;Take(); is_-&gt;Take(); }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="comment">// RFC 4627: Section 3</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="comment">// &quot;Since the first two characters of a JSON text will always be ASCII</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="comment">// characters [RFC0020], it is possible to determine whether an octet</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="comment">// stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="comment">// at the pattern of nulls in the first four octets.&quot;</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">// 00 00 00 xx UTF-32BE</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">// 00 xx 00 xx UTF-16BE</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="comment">// xx 00 00 00 UTF-32LE</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// xx 00 xx 00 UTF-16LE</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="comment">// xx xx xx xx UTF-8</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (!hasBOM_) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">int</span> pattern = (c[0] ? 1 : 0) | (c[1] ? 2 : 0) | (c[2] ? 4 : 0) | (c[3] ? 8 : 0);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">switch</span> (pattern) {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">case</span> 0x08: type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f">kUTF32BE</a>; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">case</span> 0x0A: type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba52c496755de96eee05275a423b36299d">kUTF16BE</a>; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">case</span> 0x01: type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba2ec8c855b2edacca40fa73ad307a66b4">kUTF32LE</a>; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">case</span> 0x05: type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481">kUTF16LE</a>; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">case</span> 0x0F: type_ = <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81">kUTF8</a>; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">break</span>; <span class="comment">// Use type defined by user.</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// Runtime check whether the size of character type is sufficient. It only perform checks with assertion.</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span> (type_ == <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481">kUTF16LE</a> || type_ == <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba52c496755de96eee05275a423b36299d">kUTF16BE</a>) <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">sizeof</span>(Ch) &gt;= 2);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span> (type_ == <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba2ec8c855b2edacca40fa73ad307a66b4">kUTF32LE</a> || type_ == <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f">kUTF32BE</a>) <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">sizeof</span>(Ch) &gt;= 4);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keyword">typedef</span> Ch (*TakeFunc)(InputByteStream&amp; is);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; InputByteStream* is_;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> type_;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; Ch current_;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; TakeFunc takeFunc_;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordtype">bool</span> hasBOM_;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;};</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment">//! Output stream wrapper with dynamically bound encoding and automatic encoding detection.</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment"> \tparam CharType Type of character for writing.</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment"> \tparam OutputByteStream type of output byte stream to be wrapped.</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> CharType, <span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_auto_u_t_f_output_stream.html"> 233</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">AutoUTFOutputStream</a> {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment"> //! Constructor.</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment"> \param os output stream to be wrapped.</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment"> \param type UTF encoding type.</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment"> \param putBOM Whether to write BOM at the beginning of the stream.</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_auto_u_t_f_output_stream.html#a39c828ee4c5b052df7338ec7fda1a17d"> 244</a></span>&#160; <a class="code" href="classrapidjson_1_1_auto_u_t_f_output_stream.html#a39c828ee4c5b052df7338ec7fda1a17d">AutoUTFOutputStream</a>(OutputByteStream&amp; os, <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> type, <span class="keywordtype">bool</span> putBOM) : os_(&amp;os), type_(type) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(type &gt;= <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81">kUTF8</a> &amp;&amp; type &lt;= <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f">kUTF32BE</a>);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="comment">// Runtime check whether the size of character type is sufficient. It only perform checks with assertion.</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">if</span> (type_ == <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481">kUTF16LE</a> || type_ == <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba52c496755de96eee05275a423b36299d">kUTF16BE</a>) <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">sizeof</span>(Ch) &gt;= 2);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (type_ == <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba2ec8c855b2edacca40fa73ad307a66b4">kUTF32LE</a> || type_ == <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f">kUTF32BE</a>) <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">sizeof</span>(Ch) &gt;= 4);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> PutFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Put) };</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; putFunc_ = f[type_];</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span> (putBOM)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; PutBOM();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> GetType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> type_; }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordtype">void</span> Put(Ch c) { putFunc_(*os_, c); }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordtype">void</span> Flush() { os_-&gt;Flush(); } </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="comment">// Not implemented</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0;}</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; Ch Take() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0;}</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">AutoUTFOutputStream</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">AutoUTFOutputStream</a>&amp;);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">AutoUTFOutputStream</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">AutoUTFOutputStream</a>&amp;);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordtype">void</span> PutBOM() { </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">typedef</span> void (*PutBOMFunc)(OutputByteStream&amp;);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> PutBOMFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(PutBOM) };</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; f[type_](*os_);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keyword">typedef</span> void (*PutFunc)(OutputByteStream&amp;, Ch);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; OutputByteStream* os_;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> type_;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; PutFunc putFunc_;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;};</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="preprocessor">#undef RAPIDJSON_ENCODINGS_FUNC</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_FILESTREAM_H_</span></div><div class="ttc" id="namespacerapidjson_html_a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481"><div class="ttname"><a href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481">rapidjson::kUTF16LE</a></div><div class="ttdoc">UTF-16 little endian. </div><div class="ttdef"><b>Definition:</b> encodings.h:605</div></div>
<div class="ttc" id="classrapidjson_1_1_auto_u_t_f_output_stream_html_a39c828ee4c5b052df7338ec7fda1a17d"><div class="ttname"><a href="classrapidjson_1_1_auto_u_t_f_output_stream.html#a39c828ee4c5b052df7338ec7fda1a17d">rapidjson::AutoUTFOutputStream::AutoUTFOutputStream</a></div><div class="ttdeci">AutoUTFOutputStream(OutputByteStream &amp;os, UTFType type, bool putBOM)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> encodedstream.h:244</div></div>
<div class="ttc" id="namespacerapidjson_html_a4aacabc0f8cea1cd628f466d890773eba2ec8c855b2edacca40fa73ad307a66b4"><div class="ttname"><a href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba2ec8c855b2edacca40fa73ad307a66b4">rapidjson::kUTF32LE</a></div><div class="ttdoc">UTF-32 little endian. </div><div class="ttdef"><b>Definition:</b> encodings.h:607</div></div>
<div class="ttc" id="rapidjson_8h_html_af95188da1d8eb6d4b148fe9ce71cd7c4"><div class="ttname"><a href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_STATIC_ASSERT(x)</div><div class="ttdoc">(Internal) macro to check for conditions at compile-time </div><div class="ttdef"><b>Definition:</b> rapidjson.h:450</div></div>
@@ -401,7 +103,7 @@ $(document).ready(function(){initNavTree('encodedstream_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>encodedstream.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>encodedstream.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/encodings_8h_source.html b/zh-cn/encodings_8h_source.html
index 90402778..a6e8a482 100644
--- a/zh-cn/encodings_8h_source.html
+++ b/zh-cn/encodings_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/encodings.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('encodings_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,723 +81,7 @@ $(document).ready(function(){initNavTree('encodings_8h_source.html','');});
<div class="title">encodings.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ENCODINGS_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_ENCODINGS_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rapidjson_8h.html">rapidjson.h</a>&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_OFF(4244) <span class="comment">// conversion from &#39;type1&#39; to &#39;type2&#39;, possible loss of data</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(4702) <span class="comment">// unreachable code</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#elif defined(__GNUC__)</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;RAPIDJSON_DIAG_OFF(overflow)</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span><span class="comment">// Encoding</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">/*! \class rapidjson::Encoding</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> \brief Concept for encoding of Unicode characters.</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">\code</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">concept Encoding {</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> typename Ch; //! Type of character. A &quot;character&quot; is actually a code unit in unicode&#39;s definition.</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> enum { supportUnicode = 1 }; // or 0 if not supporting unicode</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> //! \brief Encode a Unicode codepoint to an output stream.</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> //! \param os Output stream.</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> //! \param codepoint An unicode codepoint, ranging from 0x0 to 0x10FFFF inclusively.</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span> template&lt;typename OutputStream&gt;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; static void Encode(OutputStream&amp; os, unsigned codepoint);</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> //! \brief Decode a Unicode codepoint from an input stream.</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> //! \param is Input stream.</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> //! \param codepoint Output of the unicode codepoint.</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> //! \return true if a valid codepoint can be decoded from the stream.</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"></span> template &lt;typename InputStream&gt;</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; static bool Decode(InputStream&amp; is, unsigned* codepoint);</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> //! \brief Validate one Unicode codepoint from an encoded stream.</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> //! \param is Input stream to obtain codepoint.</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> //! \param os Output for copying one codepoint.</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> //! \return true if it is valid.</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> //! \note This function just validating and copying the codepoint without actually decode it.</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"></span> template &lt;typename InputStream, typename OutputStream&gt;</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; static bool Validate(InputStream&amp; is, OutputStream&amp; os);</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; // The following functions are deal with byte streams.</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> //! Take a character from input byte stream, skip BOM if exist.</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"></span> template &lt;typename InputByteStream&gt;</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; static CharType TakeBOM(InputByteStream&amp; is);</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> //! Take a character from input byte stream.</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"></span> template &lt;typename InputByteStream&gt;</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; static Ch Take(InputByteStream&amp; is);</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> //! Put BOM to output byte stream.</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"></span> template &lt;typename OutputByteStream&gt;</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; static void PutBOM(OutputByteStream&amp; os);</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> //! Put a character to output byte stream.</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"></span> template &lt;typename OutputByteStream&gt;</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; static void Put(OutputByteStream&amp; os, Ch c);</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;};</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;\endcode</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;*/</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"></span><span class="comment">// UTF8</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">//! UTF-8 encoding.</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"></span><span class="comment">/*! http://en.wikipedia.org/wiki/UTF-8</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> http://tools.ietf.org/html/rfc3629</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> \tparam CharType Code unit for storing 8-bit UTF-8 data. Default is char.</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> \note implements Encoding concept</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">char</span>&gt;</div>
-<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_u_t_f8.html"> 96</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_u_t_f8.html">UTF8</a> {</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">enum</span> { supportUnicode = 1 };</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Encode(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span> (codepoint &lt;= 0x7F) </div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; os.Put(static_cast&lt;Ch&gt;(codepoint &amp; 0xFF));</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (codepoint &lt;= 0x7FF) {</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; os.Put(static_cast&lt;Ch&gt;(0xC0 | ((codepoint &gt;&gt; 6) &amp; 0xFF)));</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; os.Put(static_cast&lt;Ch&gt;(0x80 | ((codepoint &amp; 0x3F))));</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (codepoint &lt;= 0xFFFF) {</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; os.Put(static_cast&lt;Ch&gt;(0xE0 | ((codepoint &gt;&gt; 12) &amp; 0xFF)));</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; os.Put(static_cast&lt;Ch&gt;(0x80 | ((codepoint &gt;&gt; 6) &amp; 0x3F)));</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; os.Put(static_cast&lt;Ch&gt;(0x80 | (codepoint &amp; 0x3F)));</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x10FFFF);</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; os.Put(static_cast&lt;Ch&gt;(0xF0 | ((codepoint &gt;&gt; 18) &amp; 0xFF)));</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; os.Put(static_cast&lt;Ch&gt;(0x80 | ((codepoint &gt;&gt; 12) &amp; 0x3F)));</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; os.Put(static_cast&lt;Ch&gt;(0x80 | ((codepoint &gt;&gt; 6) &amp; 0x3F)));</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; os.Put(static_cast&lt;Ch&gt;(0x80 | (codepoint &amp; 0x3F)));</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> EncodeUnsafe(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">if</span> (codepoint &lt;= 0x7F) </div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(codepoint &amp; 0xFF));</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (codepoint &lt;= 0x7FF) {</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0xC0 | ((codepoint &gt;&gt; 6) &amp; 0xFF)));</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0x80 | ((codepoint &amp; 0x3F))));</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (codepoint &lt;= 0xFFFF) {</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0xE0 | ((codepoint &gt;&gt; 12) &amp; 0xFF)));</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0x80 | ((codepoint &gt;&gt; 6) &amp; 0x3F)));</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0x80 | (codepoint &amp; 0x3F)));</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x10FFFF);</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0xF0 | ((codepoint &gt;&gt; 18) &amp; 0xFF)));</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0x80 | ((codepoint &gt;&gt; 12) &amp; 0x3F)));</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0x80 | ((codepoint &gt;&gt; 6) &amp; 0x3F)));</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0x80 | (codepoint &amp; 0x3F)));</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Decode(InputStream&amp; is, <span class="keywordtype">unsigned</span>* codepoint) {</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="preprocessor">#define COPY() c = is.Take(); *codepoint = (*codepoint &lt;&lt; 6) | (static_cast&lt;unsigned char&gt;(c) &amp; 0x3Fu)</span></div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="preprocessor">#define TRANS(mask) result &amp;= ((GetRange(static_cast&lt;unsigned char&gt;(c)) &amp; mask) != 0)</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="preprocessor">#define TAIL() COPY(); TRANS(0x70)</span></div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">typename</span> InputStream::Ch c = is.Take();</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> (!(c &amp; 0x80)) {</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; *codepoint = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(c);</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> type = GetRange(static_cast&lt;unsigned char&gt;(c));</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (type &gt;= 32) {</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; *codepoint = 0;</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; *codepoint = (0xFFu &gt;&gt; type) &amp; static_cast&lt;unsigned char&gt;(c);</div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordtype">bool</span> result = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">switch</span> (type) {</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">case</span> 2: TAIL(); <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">case</span> 3: TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">case</span> 4: COPY(); TRANS(0x50); TAIL(); <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">case</span> 5: COPY(); TRANS(0x10); TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">case</span> 6: TAIL(); TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">case</span> 10: COPY(); TRANS(0x20); TAIL(); <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">case</span> 11: COPY(); TRANS(0x60); TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="preprocessor">#undef COPY</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="preprocessor">#undef TRANS</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="preprocessor">#undef TAIL</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Validate(InputStream&amp; is, OutputStream&amp; os) {</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="preprocessor">#define COPY() os.Put(c = is.Take())</span></div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="preprocessor">#define TRANS(mask) result &amp;= ((GetRange(static_cast&lt;unsigned char&gt;(c)) &amp; mask) != 0)</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="preprocessor">#define TAIL() COPY(); TRANS(0x70)</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; Ch c;</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; COPY();</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (!(c &amp; 0x80))</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordtype">bool</span> result = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">switch</span> (GetRange(static_cast&lt;unsigned char&gt;(c))) {</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">case</span> 2: TAIL(); <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">case</span> 3: TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">case</span> 4: COPY(); TRANS(0x50); TAIL(); <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">case</span> 5: COPY(); TRANS(0x10); TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">case</span> 6: TAIL(); TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">case</span> 10: COPY(); TRANS(0x20); TAIL(); <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">case</span> 11: COPY(); TRANS(0x60); TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="preprocessor">#undef COPY</span></div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="preprocessor">#undef TRANS</span></div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="preprocessor">#undef TAIL</span></div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> GetRange(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c) {</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="comment">// Referring to DFA of http://bjoern.hoehrmann.de/utf-8/decoder/dfa/</span></div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="comment">// With new mapping 1 -&gt; 0x10, 7 -&gt; 0x20, 9 -&gt; 0x40, such that AND operation can test multiple types.</span></div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> type[] = {</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; 10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3, 11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8,</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; };</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> type[c];</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keyword">static</span> CharType TakeBOM(InputByteStream&amp; is) {</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keyword">typename</span> InputByteStream::Ch c = Take(is);</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;unsigned char&gt;(c) != 0xEFu) <span class="keywordflow">return</span> c;</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; c = is.Take();</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;unsigned char&gt;(c) != 0xBBu) <span class="keywordflow">return</span> c;</div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; c = is.Take();</div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;unsigned char&gt;(c) != 0xBFu) <span class="keywordflow">return</span> c;</div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; c = is.Take();</div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> c;</div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keyword">static</span> Ch Take(InputByteStream&amp; is) {</div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(is.Take());</div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> PutBOM(OutputByteStream&amp; os) {</div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xEFu));</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xBBu));</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xBFu));</div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Put(OutputByteStream&amp; os, Ch c) {</div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(c));</div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;};</div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment"></span><span class="comment">// UTF16</span></div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment">//! UTF-16 encoding.</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment"></span><span class="comment">/*! http://en.wikipedia.org/wiki/UTF-16</span></div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment"> http://tools.ietf.org/html/rfc2781</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment"> \tparam CharType Type for storing 16-bit UTF-16 data. Default is wchar_t. C++11 may use char16_t instead.</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> \note implements Encoding concept</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"> \note For in-memory access, no need to concern endianness. The code units and code points are represented by CPU&#39;s endianness.</span></div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"> For streaming, use UTF16LE and UTF16BE, which handle endianness.</span></div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">wchar_t</span>&gt;</div>
-<div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_u_t_f16.html"> 269</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_u_t_f16.html">UTF16</a> {</div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(Ch) &gt;= 2);</div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">enum</span> { supportUnicode = 1 };</div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Encode(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputStream::Ch) &gt;= 2);</div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">if</span> (codepoint &lt;= 0xFFFF) {</div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt; 0xD800 || codepoint &gt; 0xDFFF); <span class="comment">// Code point itself cannot be surrogate pair </span></div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; os.Put(static_cast&lt;typename OutputStream::Ch&gt;(codepoint));</div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x10FFFF);</div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordtype">unsigned</span> v = codepoint - 0x10000;</div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; os.Put(static_cast&lt;typename OutputStream::Ch&gt;((v &gt;&gt; 10) | 0xD800));</div>
-<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; os.Put(static_cast&lt;typename OutputStream::Ch&gt;((v &amp; 0x3FF) | 0xDC00));</div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div>
-<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> EncodeUnsafe(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputStream::Ch) &gt;= 2);</div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span> (codepoint &lt;= 0xFFFF) {</div>
-<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt; 0xD800 || codepoint &gt; 0xDFFF); <span class="comment">// Code point itself cannot be surrogate pair </span></div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;typename OutputStream::Ch&gt;(codepoint));</div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x10FFFF);</div>
-<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordtype">unsigned</span> v = codepoint - 0x10000;</div>
-<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;typename OutputStream::Ch&gt;((v &gt;&gt; 10) | 0xD800));</div>
-<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;typename OutputStream::Ch&gt;((v &amp; 0x3FF) | 0xDC00));</div>
-<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div>
-<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div>
-<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div>
-<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Decode(InputStream&amp; is, <span class="keywordtype">unsigned</span>* codepoint) {</div>
-<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputStream::Ch) &gt;= 2);</div>
-<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">typename</span> InputStream::Ch c = is.Take();</div>
-<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span> (c &lt; 0xD800 || c &gt; 0xDFFF) {</div>
-<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; *codepoint = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(c);</div>
-<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div>
-<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &lt;= 0xDBFF) {</div>
-<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; *codepoint = (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(c) &amp; 0x3FF) &lt;&lt; 10;</div>
-<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; c = is.Take();</div>
-<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; *codepoint |= (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(c) &amp; 0x3FF);</div>
-<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; *codepoint += 0x10000;</div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> c &gt;= 0xDC00 &amp;&amp; c &lt;= 0xDFFF;</div>
-<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div>
-<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div>
-<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div>
-<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Validate(InputStream&amp; is, OutputStream&amp; os) {</div>
-<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputStream::Ch) &gt;= 2);</div>
-<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputStream::Ch) &gt;= 2);</div>
-<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keyword">typename</span> InputStream::Ch c;</div>
-<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; os.Put(static_cast&lt;typename OutputStream::Ch&gt;(c = is.Take()));</div>
-<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (c &lt; 0xD800 || c &gt; 0xDFFF)</div>
-<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &lt;= 0xDBFF) {</div>
-<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; os.Put(c = is.Take());</div>
-<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> c &gt;= 0xDC00 &amp;&amp; c &lt;= 0xDFFF;</div>
-<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div>
-<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div>
-<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;};</div>
-<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment">//! UTF-16 little endian encoding.</span></div>
-<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">wchar_t</span>&gt;</div>
-<div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_u_t_f16_l_e.html"> 342</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_u_t_f16_l_e.html">UTF16LE</a> : <a class="code" href="structrapidjson_1_1_u_t_f16.html">UTF16</a>&lt;CharType&gt; {</div>
-<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keyword">static</span> CharType TakeBOM(InputByteStream&amp; is) {</div>
-<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; CharType c = Take(is);</div>
-<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>uint16_t<span class="keyword">&gt;</span>(c) == 0xFEFFu ? Take(is) : c;</div>
-<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div>
-<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div>
-<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keyword">static</span> CharType Take(InputByteStream&amp; is) {</div>
-<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordtype">unsigned</span> c = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take());</div>
-<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; c |= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 8;</div>
-<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>CharType<span class="keyword">&gt;</span>(c);</div>
-<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div>
-<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div>
-<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> PutBOM(OutputByteStream&amp; os) {</div>
-<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFFu));</div>
-<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFEu));</div>
-<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; }</div>
-<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</div>
-<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Put(OutputByteStream&amp; os, CharType c) {</div>
-<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(static_cast&lt;unsigned&gt;(c) &amp; 0xFFu));</div>
-<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((static_cast&lt;unsigned&gt;(c) &gt;&gt; 8) &amp; 0xFFu));</div>
-<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div>
-<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;};</div>
-<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="comment">//! UTF-16 big endian encoding.</span></div>
-<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">wchar_t</span>&gt;</div>
-<div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_u_t_f16_b_e.html"> 375</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_u_t_f16_b_e.html">UTF16BE</a> : <a class="code" href="structrapidjson_1_1_u_t_f16.html">UTF16</a>&lt;CharType&gt; {</div>
-<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keyword">static</span> CharType TakeBOM(InputByteStream&amp; is) {</div>
-<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; CharType c = Take(is);</div>
-<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>uint16_t<span class="keyword">&gt;</span>(c) == 0xFEFFu ? Take(is) : c;</div>
-<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div>
-<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;</div>
-<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keyword">static</span> CharType Take(InputByteStream&amp; is) {</div>
-<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordtype">unsigned</span> c = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 8;</div>
-<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; c |= <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take());</div>
-<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>CharType<span class="keyword">&gt;</span>(c);</div>
-<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div>
-<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div>
-<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> PutBOM(OutputByteStream&amp; os) {</div>
-<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFEu));</div>
-<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFFu));</div>
-<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div>
-<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;</div>
-<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Put(OutputByteStream&amp; os, CharType c) {</div>
-<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((static_cast&lt;unsigned&gt;(c) &gt;&gt; 8) &amp; 0xFFu));</div>
-<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(static_cast&lt;unsigned&gt;(c) &amp; 0xFFu));</div>
-<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div>
-<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;};</div>
-<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="comment"></span><span class="comment">// UTF32</span></div>
-<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="comment">//! UTF-32 encoding. </span></div>
-<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="comment"></span><span class="comment">/*! http://en.wikipedia.org/wiki/UTF-32</span></div>
-<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="comment"> \tparam CharType Type for storing 32-bit UTF-32 data. Default is unsigned. C++11 may use char32_t instead.</span></div>
-<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="comment"> \note implements Encoding concept</span></div>
-<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="comment"> \note For in-memory access, no need to concern endianness. The code units and code points are represented by CPU&#39;s endianness.</span></div>
-<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="comment"> For streaming, use UTF32LE and UTF32BE, which handle endianness.</span></div>
-<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">unsigned</span>&gt;</div>
-<div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_u_t_f32.html"> 418</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_u_t_f32.html">UTF32</a> {</div>
-<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div>
-<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(Ch) &gt;= 4);</div>
-<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;</div>
-<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keyword">enum</span> { supportUnicode = 1 };</div>
-<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div>
-<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Encode(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div>
-<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputStream::Ch) &gt;= 4);</div>
-<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x10FFFF);</div>
-<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; os.Put(codepoint);</div>
-<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div>
-<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div>
-<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> EncodeUnsafe(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div>
-<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputStream::Ch) &gt;= 4);</div>
-<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x10FFFF);</div>
-<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, codepoint);</div>
-<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div>
-<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;</div>
-<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Decode(InputStream&amp; is, <span class="keywordtype">unsigned</span>* codepoint) {</div>
-<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputStream::Ch) &gt;= 4);</div>
-<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; Ch c = is.Take();</div>
-<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; *codepoint = c;</div>
-<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">return</span> c &lt;= 0x10FFFF;</div>
-<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div>
-<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div>
-<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Validate(InputStream&amp; is, OutputStream&amp; os) {</div>
-<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputStream::Ch) &gt;= 4);</div>
-<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; Ch c;</div>
-<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; os.Put(c = is.Take());</div>
-<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">return</span> c &lt;= 0x10FFFF;</div>
-<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div>
-<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;};</div>
-<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="comment">//! UTF-32 little endian enocoding.</span></div>
-<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">unsigned</span>&gt;</div>
-<div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_u_t_f32_l_e.html"> 457</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_u_t_f32_l_e.html">UTF32LE</a> : <a class="code" href="structrapidjson_1_1_u_t_f32.html">UTF32</a>&lt;CharType&gt; {</div>
-<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keyword">static</span> CharType TakeBOM(InputByteStream&amp; is) {</div>
-<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; CharType c = Take(is);</div>
-<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(c) == 0x0000FEFFu ? Take(is) : c;</div>
-<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div>
-<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;</div>
-<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keyword">static</span> CharType Take(InputByteStream&amp; is) {</div>
-<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordtype">unsigned</span> c = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take());</div>
-<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; c |= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 8;</div>
-<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; c |= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 16;</div>
-<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; c |= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 24;</div>
-<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>CharType<span class="keyword">&gt;</span>(c);</div>
-<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div>
-<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div>
-<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> PutBOM(OutputByteStream&amp; os) {</div>
-<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFFu));</div>
-<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFEu));</div>
-<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0x00u));</div>
-<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0x00u));</div>
-<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div>
-<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div>
-<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Put(OutputByteStream&amp; os, CharType c) {</div>
-<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(c &amp; 0xFFu));</div>
-<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((c &gt;&gt; 8) &amp; 0xFFu));</div>
-<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((c &gt;&gt; 16) &amp; 0xFFu));</div>
-<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((c &gt;&gt; 24) &amp; 0xFFu));</div>
-<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div>
-<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;};</div>
-<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="comment">//! UTF-32 big endian encoding.</span></div>
-<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">unsigned</span>&gt;</div>
-<div class="line"><a name="l00496"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_u_t_f32_b_e.html"> 496</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_u_t_f32_b_e.html">UTF32BE</a> : <a class="code" href="structrapidjson_1_1_u_t_f32.html">UTF32</a>&lt;CharType&gt; {</div>
-<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keyword">static</span> CharType TakeBOM(InputByteStream&amp; is) {</div>
-<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; CharType c = Take(is);</div>
-<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(c) == 0x0000FEFFu ? Take(is) : c; </div>
-<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div>
-<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;</div>
-<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keyword">static</span> CharType Take(InputByteStream&amp; is) {</div>
-<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordtype">unsigned</span> c = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 24;</div>
-<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; c |= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 16;</div>
-<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; c |= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 8;</div>
-<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; c |= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take()));</div>
-<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>CharType<span class="keyword">&gt;</span>(c);</div>
-<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div>
-<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;</div>
-<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> PutBOM(OutputByteStream&amp; os) {</div>
-<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0x00u));</div>
-<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0x00u));</div>
-<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFEu));</div>
-<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFFu));</div>
-<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</div>
-<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;</div>
-<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Put(OutputByteStream&amp; os, CharType c) {</div>
-<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((c &gt;&gt; 24) &amp; 0xFFu));</div>
-<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((c &gt;&gt; 16) &amp; 0xFFu));</div>
-<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((c &gt;&gt; 8) &amp; 0xFFu));</div>
-<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(c &amp; 0xFFu));</div>
-<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div>
-<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;};</div>
-<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="comment"></span><span class="comment">// ASCII</span></div>
-<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="comment">//! ASCII encoding.</span></div>
-<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="comment"></span><span class="comment">/*! http://en.wikipedia.org/wiki/ASCII</span></div>
-<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="comment"> \tparam CharType Code unit for storing 7-bit ASCII data. Default is char.</span></div>
-<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="comment"> \note implements Encoding concept</span></div>
-<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">char</span>&gt;</div>
-<div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_a_s_c_i_i.html"> 542</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_a_s_c_i_i.html">ASCII</a> {</div>
-<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div>
-<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;</div>
-<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keyword">enum</span> { supportUnicode = 0 };</div>
-<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;</div>
-<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Encode(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div>
-<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x7F);</div>
-<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; os.Put(static_cast&lt;Ch&gt;(codepoint &amp; 0xFF));</div>
-<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; }</div>
-<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;</div>
-<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> EncodeUnsafe(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div>
-<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x7F);</div>
-<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(codepoint &amp; 0xFF));</div>
-<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</div>
-<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;</div>
-<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Decode(InputStream&amp; is, <span class="keywordtype">unsigned</span>* codepoint) {</div>
-<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; uint8_t c = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take());</div>
-<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; *codepoint = c;</div>
-<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">return</span> c &lt;= 0X7F;</div>
-<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; }</div>
-<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div>
-<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Validate(InputStream&amp; is, OutputStream&amp; os) {</div>
-<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; uint8_t c = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take());</div>
-<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; os.Put(static_cast&lt;typename OutputStream::Ch&gt;(c));</div>
-<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">return</span> c &lt;= 0x7F;</div>
-<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; }</div>
-<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div>
-<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keyword">static</span> CharType TakeBOM(InputByteStream&amp; is) {</div>
-<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; uint8_t c = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(Take(is));</div>
-<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c);</div>
-<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; }</div>
-<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;</div>
-<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div>
-<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keyword">static</span> Ch Take(InputByteStream&amp; is) {</div>
-<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(is.Take());</div>
-<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div>
-<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;</div>
-<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> PutBOM(OutputByteStream&amp; os) {</div>
-<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; (void)os;</div>
-<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; }</div>
-<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div>
-<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div>
-<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Put(OutputByteStream&amp; os, Ch c) {</div>
-<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div>
-<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(c));</div>
-<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; }</div>
-<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;};</div>
-<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="comment"></span><span class="comment">// AutoUTF</span></div>
-<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="comment">//! Runtime-specified UTF encoding type of a stream.</span></div>
-<div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb"> 603</a></span>&#160;<span class="comment"></span><span class="keyword">enum</span> <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> {</div>
-<div class="line"><a name="l00604"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81"> 604</a></span>&#160; <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81">kUTF8</a> = 0, <span class="comment">//!&lt; UTF-8.</span></div>
-<div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481"> 605</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481">kUTF16LE</a> = 1, <span class="comment">//!&lt; UTF-16 little endian.</span></div>
-<div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba52c496755de96eee05275a423b36299d"> 606</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba52c496755de96eee05275a423b36299d">kUTF16BE</a> = 2, <span class="comment">//!&lt; UTF-16 big endian.</span></div>
-<div class="line"><a name="l00607"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba2ec8c855b2edacca40fa73ad307a66b4"> 607</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba2ec8c855b2edacca40fa73ad307a66b4">kUTF32LE</a> = 3, <span class="comment">//!&lt; UTF-32 little endian.</span></div>
-<div class="line"><a name="l00608"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f"> 608</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f">kUTF32BE</a> = 4 <span class="comment">//!&lt; UTF-32 big endian.</span></div>
-<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;<span class="comment"></span>};</div>
-<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="comment">//! Dynamically select encoding according to stream&#39;s runtime-specified UTF encoding type.</span></div>
-<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="comment"></span><span class="comment">/*! \note This class can be used with AutoUTFInputtStream and AutoUTFOutputStream, which provides GetType().</span></div>
-<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div>
-<div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_auto_u_t_f.html"> 615</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_auto_u_t_f.html">AutoUTF</a> {</div>
-<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div>
-<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;</div>
-<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keyword">enum</span> { supportUnicode = 1 };</div>
-<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div>
-<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;<span class="preprocessor">#define RAPIDJSON_ENCODINGS_FUNC(x) UTF8&lt;Ch&gt;::x, UTF16LE&lt;Ch&gt;::x, UTF16BE&lt;Ch&gt;::x, UTF32LE&lt;Ch&gt;::x, UTF32BE&lt;Ch&gt;::x</span></div>
-<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div>
-<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> Encode(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div>
-<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keyword">typedef</span> void (*EncodeFunc)(OutputStream&amp;, unsigned);</div>
-<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> EncodeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Encode) };</div>
-<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; (*f[os.GetType()])(os, codepoint);</div>
-<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; }</div>
-<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;</div>
-<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> EncodeUnsafe(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div>
-<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keyword">typedef</span> void (*EncodeFunc)(OutputStream&amp;, unsigned);</div>
-<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> EncodeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(EncodeUnsafe) };</div>
-<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; (*f[os.GetType()])(os, codepoint);</div>
-<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; }</div>
-<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;</div>
-<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> Decode(InputStream&amp; is, <span class="keywordtype">unsigned</span>* codepoint) {</div>
-<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keyword">typedef</span> bool (*DecodeFunc)(InputStream&amp;, <span class="keywordtype">unsigned</span>*);</div>
-<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> DecodeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Decode) };</div>
-<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">return</span> (*f[is.GetType()])(is, codepoint);</div>
-<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div>
-<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;</div>
-<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> Validate(InputStream&amp; is, OutputStream&amp; os) {</div>
-<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keyword">typedef</span> bool (*ValidateFunc)(InputStream&amp;, OutputStream&amp;);</div>
-<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> ValidateFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Validate) };</div>
-<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">return</span> (*f[is.GetType()])(is, os);</div>
-<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div>
-<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;</div>
-<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="preprocessor">#undef RAPIDJSON_ENCODINGS_FUNC</span></div>
-<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;};</div>
-<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;<span class="comment"></span><span class="comment">// Transcoder</span></div>
-<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;<span class="comment">//! Encoding conversion.</span></div>
-<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> TargetEncoding&gt;</div>
-<div class="line"><a name="l00658"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_transcoder.html"> 658</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_transcoder.html">Transcoder</a> {<span class="comment"></span></div>
-<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;<span class="comment"> //! Take one Unicode codepoint from source encoding, convert it to target encoding and put it to the output stream.</span></div>
-<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;<span class="comment"></span> <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00661"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_transcoder.html#a3a1de7069d3cf7f1d4f4e2f96ceb7664"> 661</a></span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> <a class="code" href="structrapidjson_1_1_transcoder.html#a3a1de7069d3cf7f1d4f4e2f96ceb7664">Transcode</a>(InputStream&amp; is, OutputStream&amp; os) {</div>
-<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div>
-<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">if</span> (!SourceEncoding::Decode(is, &amp;codepoint))</div>
-<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; TargetEncoding::Encode(os, codepoint);</div>
-<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; }</div>
-<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;</div>
-<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> TranscodeUnsafe(InputStream&amp; is, OutputStream&amp; os) {</div>
-<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div>
-<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">if</span> (!SourceEncoding::Decode(is, &amp;codepoint))</div>
-<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; TargetEncoding::EncodeUnsafe(os, codepoint);</div>
-<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div>
-<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="comment"> //! Validate one Unicode codepoint from an encoded stream.</span></div>
-<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="comment"></span> <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00680"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_transcoder.html#ae9178e512e99394a38785e73927140da"> 680</a></span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> <a class="code" href="structrapidjson_1_1_transcoder.html#ae9178e512e99394a38785e73927140da">Validate</a>(InputStream&amp; is, OutputStream&amp; os) {</div>
-<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">return</span> Transcode(is, os); <span class="comment">// Since source/target encoding is different, must transcode.</span></div>
-<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; }</div>
-<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;};</div>
-<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;</div>
-<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;<span class="comment">// Forward declaration.</span></div>
-<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stream&gt;</div>
-<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> PutUnsafe(Stream&amp; stream, <span class="keyword">typename</span> Stream::Ch c);</div>
-<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="comment">//! Specialization of Transcoder with same source and target encoding.</span></div>
-<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Encoding&gt;</div>
-<div class="line"><a name="l00691"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_transcoder_3_01_encoding_00_01_encoding_01_4.html"> 691</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_transcoder.html">Transcoder</a>&lt;<a class="code" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="code" href="classrapidjson_1_1_encoding.html">Encoding</a>&gt; {</div>
-<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> Transcode(InputStream&amp; is, OutputStream&amp; os) {</div>
-<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; os.Put(is.Take()); <span class="comment">// Just copy one code unit. This semantic is different from primary template class.</span></div>
-<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; }</div>
-<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; </div>
-<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> TranscodeUnsafe(InputStream&amp; is, OutputStream&amp; os) {</div>
-<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, is.Take()); <span class="comment">// Just copy one code unit. This semantic is different from primary template class.</span></div>
-<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; }</div>
-<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; </div>
-<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> Validate(InputStream&amp; is, OutputStream&amp; os) {</div>
-<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">return</span> Encoding::Validate(is, os); <span class="comment">// source/target encoding are the same</span></div>
-<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; }</div>
-<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;};</div>
-<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;</div>
-<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;</div>
-<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;<span class="preprocessor">#if defined(__GNUC__) || defined(_MSC_VER)</span></div>
-<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div>
-<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ENCODINGS_H_</span></div>
-<div class="ttc" id="structrapidjson_1_1_transcoder_html"><div class="ttname"><a href="structrapidjson_1_1_transcoder.html">rapidjson::Transcoder</a></div><div class="ttdoc">Encoding conversion. </div><div class="ttdef"><b>Definition:</b> encodings.h:658</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ENCODINGS_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_ENCODINGS_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rapidjson_8h.html">rapidjson.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_OFF(4244) <span class="comment">// conversion from &#39;type1&#39; to &#39;type2&#39;, possible loss of data</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(4702) <span class="comment">// unreachable code</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#elif defined(__GNUC__)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;RAPIDJSON_DIAG_OFF(overflow)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span><span class="comment">// Encoding</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">/*! \class rapidjson::Encoding</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> \brief Concept for encoding of Unicode characters.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">\code</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">concept Encoding {</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> typename Ch; //! Type of character. A &quot;character&quot; is actually a code unit in unicode&#39;s definition.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> enum { supportUnicode = 1 }; // or 0 if not supporting unicode</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> //! \brief Encode a Unicode codepoint to an output stream.</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> //! \param os Output stream.</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> //! \param codepoint An unicode codepoint, ranging from 0x0 to 0x10FFFF inclusively.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span> template&lt;typename OutputStream&gt;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; static void Encode(OutputStream&amp; os, unsigned codepoint);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> //! \brief Decode a Unicode codepoint from an input stream.</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> //! \param is Input stream.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> //! \param codepoint Output of the unicode codepoint.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> //! \return true if a valid codepoint can be decoded from the stream.</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"></span> template &lt;typename InputStream&gt;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; static bool Decode(InputStream&amp; is, unsigned* codepoint);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> //! \brief Validate one Unicode codepoint from an encoded stream.</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> //! \param is Input stream to obtain codepoint.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> //! \param os Output for copying one codepoint.</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> //! \return true if it is valid.</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> //! \note This function just validating and copying the codepoint without actually decode it.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"></span> template &lt;typename InputStream, typename OutputStream&gt;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; static bool Validate(InputStream&amp; is, OutputStream&amp; os);</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; // The following functions are deal with byte streams.</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"> //! Take a character from input byte stream, skip BOM if exist.</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"></span> template &lt;typename InputByteStream&gt;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; static CharType TakeBOM(InputByteStream&amp; is);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> //! Take a character from input byte stream.</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"></span> template &lt;typename InputByteStream&gt;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; static Ch Take(InputByteStream&amp; is);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> //! Put BOM to output byte stream.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"></span> template &lt;typename OutputByteStream&gt;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; static void PutBOM(OutputByteStream&amp; os);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> //! Put a character to output byte stream.</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"></span> template &lt;typename OutputByteStream&gt;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; static void Put(OutputByteStream&amp; os, Ch c);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;};</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;\endcode</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;*/</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"></span><span class="comment">// UTF8</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">//! UTF-8 encoding.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"></span><span class="comment">/*! http://en.wikipedia.org/wiki/UTF-8</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> http://tools.ietf.org/html/rfc3629</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> \tparam CharType Code unit for storing 8-bit UTF-8 data. Default is char.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> \note implements Encoding concept</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">char</span>&gt;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_u_t_f8.html"> 96</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_u_t_f8.html">UTF8</a> {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">enum</span> { supportUnicode = 1 };</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Encode(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">if</span> (codepoint &lt;= 0x7F) </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; os.Put(static_cast&lt;Ch&gt;(codepoint &amp; 0xFF));</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (codepoint &lt;= 0x7FF) {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; os.Put(static_cast&lt;Ch&gt;(0xC0 | ((codepoint &gt;&gt; 6) &amp; 0xFF)));</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; os.Put(static_cast&lt;Ch&gt;(0x80 | ((codepoint &amp; 0x3F))));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (codepoint &lt;= 0xFFFF) {</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; os.Put(static_cast&lt;Ch&gt;(0xE0 | ((codepoint &gt;&gt; 12) &amp; 0xFF)));</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; os.Put(static_cast&lt;Ch&gt;(0x80 | ((codepoint &gt;&gt; 6) &amp; 0x3F)));</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; os.Put(static_cast&lt;Ch&gt;(0x80 | (codepoint &amp; 0x3F)));</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x10FFFF);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; os.Put(static_cast&lt;Ch&gt;(0xF0 | ((codepoint &gt;&gt; 18) &amp; 0xFF)));</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; os.Put(static_cast&lt;Ch&gt;(0x80 | ((codepoint &gt;&gt; 12) &amp; 0x3F)));</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; os.Put(static_cast&lt;Ch&gt;(0x80 | ((codepoint &gt;&gt; 6) &amp; 0x3F)));</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; os.Put(static_cast&lt;Ch&gt;(0x80 | (codepoint &amp; 0x3F)));</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> EncodeUnsafe(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">if</span> (codepoint &lt;= 0x7F) </div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(codepoint &amp; 0xFF));</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (codepoint &lt;= 0x7FF) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0xC0 | ((codepoint &gt;&gt; 6) &amp; 0xFF)));</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0x80 | ((codepoint &amp; 0x3F))));</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (codepoint &lt;= 0xFFFF) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0xE0 | ((codepoint &gt;&gt; 12) &amp; 0xFF)));</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0x80 | ((codepoint &gt;&gt; 6) &amp; 0x3F)));</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0x80 | (codepoint &amp; 0x3F)));</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x10FFFF);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0xF0 | ((codepoint &gt;&gt; 18) &amp; 0xFF)));</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0x80 | ((codepoint &gt;&gt; 12) &amp; 0x3F)));</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0x80 | ((codepoint &gt;&gt; 6) &amp; 0x3F)));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(0x80 | (codepoint &amp; 0x3F)));</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Decode(InputStream&amp; is, <span class="keywordtype">unsigned</span>* codepoint) {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="preprocessor">#define COPY() c = is.Take(); *codepoint = (*codepoint &lt;&lt; 6) | (static_cast&lt;unsigned char&gt;(c) &amp; 0x3Fu)</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="preprocessor">#define TRANS(mask) result &amp;= ((GetRange(static_cast&lt;unsigned char&gt;(c)) &amp; mask) != 0)</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="preprocessor">#define TAIL() COPY(); TRANS(0x70)</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">typename</span> InputStream::Ch c = is.Take();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> (!(c &amp; 0x80)) {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; *codepoint = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(c);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> type = GetRange(static_cast&lt;unsigned char&gt;(c));</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">if</span> (type &gt;= 32) {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; *codepoint = 0;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; *codepoint = (0xFFu &gt;&gt; type) &amp; static_cast&lt;unsigned char&gt;(c);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordtype">bool</span> result = <span class="keyword">true</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">switch</span> (type) {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">case</span> 2: TAIL(); <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">case</span> 3: TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">case</span> 4: COPY(); TRANS(0x50); TAIL(); <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">case</span> 5: COPY(); TRANS(0x10); TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">case</span> 6: TAIL(); TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">case</span> 10: COPY(); TRANS(0x20); TAIL(); <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">case</span> 11: COPY(); TRANS(0x60); TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="preprocessor">#undef COPY</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="preprocessor">#undef TRANS</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="preprocessor">#undef TAIL</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Validate(InputStream&amp; is, OutputStream&amp; os) {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="preprocessor">#define COPY() os.Put(c = is.Take())</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="preprocessor">#define TRANS(mask) result &amp;= ((GetRange(static_cast&lt;unsigned char&gt;(c)) &amp; mask) != 0)</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="preprocessor">#define TAIL() COPY(); TRANS(0x70)</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; Ch c;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; COPY();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (!(c &amp; 0x80))</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordtype">bool</span> result = <span class="keyword">true</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">switch</span> (GetRange(static_cast&lt;unsigned char&gt;(c))) {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">case</span> 2: TAIL(); <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">case</span> 3: TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">case</span> 4: COPY(); TRANS(0x50); TAIL(); <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">case</span> 5: COPY(); TRANS(0x10); TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">case</span> 6: TAIL(); TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">case</span> 10: COPY(); TRANS(0x20); TAIL(); <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">case</span> 11: COPY(); TRANS(0x60); TAIL(); TAIL(); <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">default</span>: <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="preprocessor">#undef COPY</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="preprocessor">#undef TRANS</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="preprocessor">#undef TAIL</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> GetRange(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c) {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="comment">// Referring to DFA of http://bjoern.hoehrmann.de/utf-8/decoder/dfa/</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="comment">// With new mapping 1 -&gt; 0x10, 7 -&gt; 0x20, 9 -&gt; 0x40, such that AND operation can test multiple types.</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> type[] = {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; 10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3, 11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8,</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; };</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> type[c];</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keyword">static</span> CharType TakeBOM(InputByteStream&amp; is) {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keyword">typename</span> InputByteStream::Ch c = Take(is);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;unsigned char&gt;(c) != 0xEFu) <span class="keywordflow">return</span> c;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; c = is.Take();</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;unsigned char&gt;(c) != 0xBBu) <span class="keywordflow">return</span> c;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; c = is.Take();</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;unsigned char&gt;(c) != 0xBFu) <span class="keywordflow">return</span> c;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; c = is.Take();</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> c;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keyword">static</span> Ch Take(InputByteStream&amp; is) {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(is.Take());</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> PutBOM(OutputByteStream&amp; os) {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xEFu));</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xBBu));</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xBFu));</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Put(OutputByteStream&amp; os, Ch c) {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(c));</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;};</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment"></span><span class="comment">// UTF16</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment">//! UTF-16 encoding.</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment"></span><span class="comment">/*! http://en.wikipedia.org/wiki/UTF-16</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment"> http://tools.ietf.org/html/rfc2781</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment"> \tparam CharType Type for storing 16-bit UTF-16 data. Default is wchar_t. C++11 may use char16_t instead.</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> \note implements Encoding concept</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"> \note For in-memory access, no need to concern endianness. The code units and code points are represented by CPU&#39;s endianness.</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"> For streaming, use UTF16LE and UTF16BE, which handle endianness.</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">wchar_t</span>&gt;</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_u_t_f16.html"> 269</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_u_t_f16.html">UTF16</a> {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(Ch) &gt;= 2);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">enum</span> { supportUnicode = 1 };</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Encode(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputStream::Ch) &gt;= 2);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">if</span> (codepoint &lt;= 0xFFFF) {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt; 0xD800 || codepoint &gt; 0xDFFF); <span class="comment">// Code point itself cannot be surrogate pair </span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; os.Put(static_cast&lt;typename OutputStream::Ch&gt;(codepoint));</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x10FFFF);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordtype">unsigned</span> v = codepoint - 0x10000;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; os.Put(static_cast&lt;typename OutputStream::Ch&gt;((v &gt;&gt; 10) | 0xD800));</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; os.Put(static_cast&lt;typename OutputStream::Ch&gt;((v &amp; 0x3FF) | 0xDC00));</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> EncodeUnsafe(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputStream::Ch) &gt;= 2);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span> (codepoint &lt;= 0xFFFF) {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt; 0xD800 || codepoint &gt; 0xDFFF); <span class="comment">// Code point itself cannot be surrogate pair </span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;typename OutputStream::Ch&gt;(codepoint));</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x10FFFF);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordtype">unsigned</span> v = codepoint - 0x10000;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;typename OutputStream::Ch&gt;((v &gt;&gt; 10) | 0xD800));</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;typename OutputStream::Ch&gt;((v &amp; 0x3FF) | 0xDC00));</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Decode(InputStream&amp; is, <span class="keywordtype">unsigned</span>* codepoint) {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputStream::Ch) &gt;= 2);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keyword">typename</span> InputStream::Ch c = is.Take();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span> (c &lt; 0xD800 || c &gt; 0xDFFF) {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; *codepoint = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(c);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &lt;= 0xDBFF) {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; *codepoint = (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(c) &amp; 0x3FF) &lt;&lt; 10;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; c = is.Take();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; *codepoint |= (<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(c) &amp; 0x3FF);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; *codepoint += 0x10000;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> c &gt;= 0xDC00 &amp;&amp; c &lt;= 0xDFFF;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Validate(InputStream&amp; is, OutputStream&amp; os) {</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputStream::Ch) &gt;= 2);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputStream::Ch) &gt;= 2);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keyword">typename</span> InputStream::Ch c;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; os.Put(static_cast&lt;typename OutputStream::Ch&gt;(c = is.Take()));</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (c &lt; 0xD800 || c &gt; 0xDFFF)</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &lt;= 0xDBFF) {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; os.Put(c = is.Take());</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keywordflow">return</span> c &gt;= 0xDC00 &amp;&amp; c &lt;= 0xDFFF;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;};</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment">//! UTF-16 little endian encoding.</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">wchar_t</span>&gt;</div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_u_t_f16_l_e.html"> 342</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_u_t_f16_l_e.html">UTF16LE</a> : <a class="code" href="structrapidjson_1_1_u_t_f16.html">UTF16</a>&lt;CharType&gt; {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keyword">static</span> CharType TakeBOM(InputByteStream&amp; is) {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; CharType c = Take(is);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>uint16_t<span class="keyword">&gt;</span>(c) == 0xFEFFu ? Take(is) : c;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keyword">static</span> CharType Take(InputByteStream&amp; is) {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordtype">unsigned</span> c = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take());</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; c |= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 8;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>CharType<span class="keyword">&gt;</span>(c);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> PutBOM(OutputByteStream&amp; os) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFFu));</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFEu));</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; }</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Put(OutputByteStream&amp; os, CharType c) {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(static_cast&lt;unsigned&gt;(c) &amp; 0xFFu));</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((static_cast&lt;unsigned&gt;(c) &gt;&gt; 8) &amp; 0xFFu));</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;};</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="comment">//! UTF-16 big endian encoding.</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">wchar_t</span>&gt;</div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_u_t_f16_b_e.html"> 375</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_u_t_f16_b_e.html">UTF16BE</a> : <a class="code" href="structrapidjson_1_1_u_t_f16.html">UTF16</a>&lt;CharType&gt; {</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keyword">static</span> CharType TakeBOM(InputByteStream&amp; is) {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; CharType c = Take(is);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>uint16_t<span class="keyword">&gt;</span>(c) == 0xFEFFu ? Take(is) : c;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keyword">static</span> CharType Take(InputByteStream&amp; is) {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keywordtype">unsigned</span> c = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 8;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; c |= <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take());</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>CharType<span class="keyword">&gt;</span>(c);</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> PutBOM(OutputByteStream&amp; os) {</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFEu));</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFFu));</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Put(OutputByteStream&amp; os, CharType c) {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((static_cast&lt;unsigned&gt;(c) &gt;&gt; 8) &amp; 0xFFu));</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(static_cast&lt;unsigned&gt;(c) &amp; 0xFFu));</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;};</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="comment"></span><span class="comment">// UTF32</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="comment">//! UTF-32 encoding. </span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="comment"></span><span class="comment">/*! http://en.wikipedia.org/wiki/UTF-32</span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="comment"> \tparam CharType Type for storing 32-bit UTF-32 data. Default is unsigned. C++11 may use char32_t instead.</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="comment"> \note implements Encoding concept</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="comment"> \note For in-memory access, no need to concern endianness. The code units and code points are represented by CPU&#39;s endianness.</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="comment"> For streaming, use UTF32LE and UTF32BE, which handle endianness.</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">unsigned</span>&gt;</div><div class="line"><a name="l00418"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_u_t_f32.html"> 418</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_u_t_f32.html">UTF32</a> {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(Ch) &gt;= 4);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keyword">enum</span> { supportUnicode = 1 };</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Encode(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputStream::Ch) &gt;= 4);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x10FFFF);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; os.Put(codepoint);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> EncodeUnsafe(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputStream::Ch) &gt;= 4);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x10FFFF);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, codepoint);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Decode(InputStream&amp; is, <span class="keywordtype">unsigned</span>* codepoint) {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputStream::Ch) &gt;= 4);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; Ch c = is.Take();</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; *codepoint = c;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">return</span> c &lt;= 0x10FFFF;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; }</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Validate(InputStream&amp; is, OutputStream&amp; os) {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputStream::Ch) &gt;= 4);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; Ch c;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; os.Put(c = is.Take());</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">return</span> c &lt;= 0x10FFFF;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; }</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;};</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="comment">//! UTF-32 little endian enocoding.</span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">unsigned</span>&gt;</div><div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_u_t_f32_l_e.html"> 457</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_u_t_f32_l_e.html">UTF32LE</a> : <a class="code" href="structrapidjson_1_1_u_t_f32.html">UTF32</a>&lt;CharType&gt; {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keyword">static</span> CharType TakeBOM(InputByteStream&amp; is) {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; CharType c = Take(is);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(c) == 0x0000FEFFu ? Take(is) : c;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; }</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keyword">static</span> CharType Take(InputByteStream&amp; is) {</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordtype">unsigned</span> c = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take());</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; c |= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 8;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; c |= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 16;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; c |= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 24;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>CharType<span class="keyword">&gt;</span>(c);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; }</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> PutBOM(OutputByteStream&amp; os) {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFFu));</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFEu));</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0x00u));</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0x00u));</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Put(OutputByteStream&amp; os, CharType c) {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(c &amp; 0xFFu));</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((c &gt;&gt; 8) &amp; 0xFFu));</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((c &gt;&gt; 16) &amp; 0xFFu));</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((c &gt;&gt; 24) &amp; 0xFFu));</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;};</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="comment">//! UTF-32 big endian encoding.</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">unsigned</span>&gt;</div><div class="line"><a name="l00496"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_u_t_f32_b_e.html"> 496</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_u_t_f32_b_e.html">UTF32BE</a> : <a class="code" href="structrapidjson_1_1_u_t_f32.html">UTF32</a>&lt;CharType&gt; {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keyword">static</span> CharType TakeBOM(InputByteStream&amp; is) {</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; CharType c = Take(is);</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(c) == 0x0000FEFFu ? Take(is) : c; </div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; }</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keyword">static</span> CharType Take(InputByteStream&amp; is) {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordtype">unsigned</span> c = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 24;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; c |= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 16;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; c |= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take())) &lt;&lt; 8;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; c |= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take()));</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>CharType<span class="keyword">&gt;</span>(c);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; }</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> PutBOM(OutputByteStream&amp; os) {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0x00u));</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0x00u));</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFEu));</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(0xFFu));</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; }</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Put(OutputByteStream&amp; os, CharType c) {</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((c &gt;&gt; 24) &amp; 0xFFu));</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((c &gt;&gt; 16) &amp; 0xFFu));</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;((c &gt;&gt; 8) &amp; 0xFFu));</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(c &amp; 0xFFu));</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; }</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;};</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="comment"></span><span class="comment">// ASCII</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="comment">//! ASCII encoding.</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="comment"></span><span class="comment">/*! http://en.wikipedia.org/wiki/ASCII</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="comment"> \tparam CharType Code unit for storing 7-bit ASCII data. Default is char.</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="comment"> \note implements Encoding concept</span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">char</span>&gt;</div><div class="line"><a name="l00542"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_a_s_c_i_i.html"> 542</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_a_s_c_i_i.html">ASCII</a> {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keyword">enum</span> { supportUnicode = 0 };</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Encode(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x7F);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; os.Put(static_cast&lt;Ch&gt;(codepoint &amp; 0xFF));</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; }</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> EncodeUnsafe(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &lt;= 0x7F);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(os, static_cast&lt;Ch&gt;(codepoint &amp; 0xFF));</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; }</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Decode(InputStream&amp; is, <span class="keywordtype">unsigned</span>* codepoint) {</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; uint8_t c = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take());</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; *codepoint = c;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">return</span> c &lt;= 0X7F;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; }</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> Validate(InputStream&amp; is, OutputStream&amp; os) {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; uint8_t c = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(is.Take());</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; os.Put(static_cast&lt;typename OutputStream::Ch&gt;(c));</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">return</span> c &lt;= 0x7F;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; }</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keyword">static</span> CharType TakeBOM(InputByteStream&amp; is) {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; uint8_t c = <span class="keyword">static_cast&lt;</span>uint8_t<span class="keyword">&gt;</span>(Take(is));</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c);</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; }</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputByteStream&gt;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keyword">static</span> Ch Take(InputByteStream&amp; is) {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> InputByteStream::Ch) == 1);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(is.Take());</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> PutBOM(OutputByteStream&amp; os) {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; (void)os;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputByteStream&gt;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> Put(OutputByteStream&amp; os, Ch c) {</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(<span class="keyword">typename</span> OutputByteStream::Ch) == 1);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; os.Put(static_cast&lt;typename OutputByteStream::Ch&gt;(c));</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; }</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;};</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="comment"></span><span class="comment">// AutoUTF</span></div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="comment">//! Runtime-specified UTF encoding type of a stream.</span></div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb"> 603</a></span>&#160;<span class="comment"></span><span class="keyword">enum</span> <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> {</div><div class="line"><a name="l00604"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81"> 604</a></span>&#160; <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81">kUTF8</a> = 0, <span class="comment">//!&lt; UTF-8.</span></div><div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481"> 605</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481">kUTF16LE</a> = 1, <span class="comment">//!&lt; UTF-16 little endian.</span></div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba52c496755de96eee05275a423b36299d"> 606</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba52c496755de96eee05275a423b36299d">kUTF16BE</a> = 2, <span class="comment">//!&lt; UTF-16 big endian.</span></div><div class="line"><a name="l00607"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba2ec8c855b2edacca40fa73ad307a66b4"> 607</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba2ec8c855b2edacca40fa73ad307a66b4">kUTF32LE</a> = 3, <span class="comment">//!&lt; UTF-32 little endian.</span></div><div class="line"><a name="l00608"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f"> 608</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f">kUTF32BE</a> = 4 <span class="comment">//!&lt; UTF-32 big endian.</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;<span class="comment"></span>};</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="comment">//! Dynamically select encoding according to stream&#39;s runtime-specified UTF encoding type.</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="comment"></span><span class="comment">/*! \note This class can be used with AutoUTFInputtStream and AutoUTFOutputStream, which provides GetType().</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div><div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_auto_u_t_f.html"> 615</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_auto_u_t_f.html">AutoUTF</a> {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keyword">enum</span> { supportUnicode = 1 };</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;<span class="preprocessor">#define RAPIDJSON_ENCODINGS_FUNC(x) UTF8&lt;Ch&gt;::x, UTF16LE&lt;Ch&gt;::x, UTF16BE&lt;Ch&gt;::x, UTF32LE&lt;Ch&gt;::x, UTF32BE&lt;Ch&gt;::x</span></div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> Encode(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keyword">typedef</span> void (*EncodeFunc)(OutputStream&amp;, unsigned);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> EncodeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Encode) };</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; (*f[os.GetType()])(os, codepoint);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; }</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> EncodeUnsafe(OutputStream&amp; os, <span class="keywordtype">unsigned</span> codepoint) {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keyword">typedef</span> void (*EncodeFunc)(OutputStream&amp;, unsigned);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> EncodeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(EncodeUnsafe) };</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; (*f[os.GetType()])(os, codepoint);</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; }</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> Decode(InputStream&amp; is, <span class="keywordtype">unsigned</span>* codepoint) {</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keyword">typedef</span> bool (*DecodeFunc)(InputStream&amp;, <span class="keywordtype">unsigned</span>*);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> DecodeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Decode) };</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">return</span> (*f[is.GetType()])(is, codepoint);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> Validate(InputStream&amp; is, OutputStream&amp; os) {</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keyword">typedef</span> bool (*ValidateFunc)(InputStream&amp;, OutputStream&amp;);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> ValidateFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Validate) };</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">return</span> (*f[is.GetType()])(is, os);</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="preprocessor">#undef RAPIDJSON_ENCODINGS_FUNC</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;};</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;<span class="comment"></span><span class="comment">// Transcoder</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;<span class="comment">//! Encoding conversion.</span></div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> TargetEncoding&gt;</div><div class="line"><a name="l00658"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_transcoder.html"> 658</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_transcoder.html">Transcoder</a> {<span class="comment"></span></div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;<span class="comment"> //! Take one Unicode codepoint from source encoding, convert it to target encoding and put it to the output stream.</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;<span class="comment"></span> <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00661"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_transcoder.html#a3a1de7069d3cf7f1d4f4e2f96ceb7664"> 661</a></span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> <a class="code" href="structrapidjson_1_1_transcoder.html#a3a1de7069d3cf7f1d4f4e2f96ceb7664">Transcode</a>(InputStream&amp; is, OutputStream&amp; os) {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">if</span> (!SourceEncoding::Decode(is, &amp;codepoint))</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; TargetEncoding::Encode(os, codepoint);</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; }</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> TranscodeUnsafe(InputStream&amp; is, OutputStream&amp; os) {</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">if</span> (!SourceEncoding::Decode(is, &amp;codepoint))</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; TargetEncoding::EncodeUnsafe(os, codepoint);</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="comment"> //! Validate one Unicode codepoint from an encoded stream.</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="comment"></span> <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00680"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_transcoder.html#ae9178e512e99394a38785e73927140da"> 680</a></span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> <a class="code" href="structrapidjson_1_1_transcoder.html#ae9178e512e99394a38785e73927140da">Validate</a>(InputStream&amp; is, OutputStream&amp; os) {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">return</span> Transcode(is, os); <span class="comment">// Since source/target encoding is different, must transcode.</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; }</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;};</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;<span class="comment">// Forward declaration.</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stream&gt;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(<a class="code" href="classrapidjson_1_1_stream.html">Stream</a>&amp; stream, <span class="keyword">typename</span> Stream::Ch c);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="comment">//! Specialization of Transcoder with same source and target encoding.</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Encoding&gt;</div><div class="line"><a name="l00691"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_transcoder_3_01_encoding_00_01_encoding_01_4.html"> 691</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_transcoder.html">Transcoder</a>&lt;<a class="code" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="code" href="classrapidjson_1_1_encoding.html">Encoding</a>&gt; {</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> Transcode(InputStream&amp; is, OutputStream&amp; os) {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; os.Put(is.Take()); <span class="comment">// Just copy one code unit. This semantic is different from primary template class.</span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; }</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; </div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> TranscodeUnsafe(InputStream&amp; is, OutputStream&amp; os) {</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; PutUnsafe(os, is.Take()); <span class="comment">// Just copy one code unit. This semantic is different from primary template class.</span></div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; }</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; </div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> Validate(InputStream&amp; is, OutputStream&amp; os) {</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">return</span> Encoding::Validate(is, os); <span class="comment">// source/target encoding are the same</span></div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; }</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;};</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;<span class="preprocessor">#if defined(__GNUC__) || defined(_MSC_VER)</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ENCODINGS_H_</span></div><div class="ttc" id="structrapidjson_1_1_transcoder_html"><div class="ttname"><a href="structrapidjson_1_1_transcoder.html">rapidjson::Transcoder</a></div><div class="ttdoc">Encoding conversion. </div><div class="ttdef"><b>Definition:</b> encodings.h:658</div></div>
<div class="ttc" id="structrapidjson_1_1_u_t_f16_l_e_html"><div class="ttname"><a href="structrapidjson_1_1_u_t_f16_l_e.html">rapidjson::UTF16LE</a></div><div class="ttdoc">UTF-16 little endian encoding. </div><div class="ttdef"><b>Definition:</b> encodings.h:342</div></div>
<div class="ttc" id="namespacerapidjson_html_a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481"><div class="ttname"><a href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481">rapidjson::kUTF16LE</a></div><div class="ttdoc">UTF-16 little endian. </div><div class="ttdef"><b>Definition:</b> encodings.h:605</div></div>
<div class="ttc" id="structrapidjson_1_1_u_t_f16_b_e_html"><div class="ttname"><a href="structrapidjson_1_1_u_t_f16_b_e.html">rapidjson::UTF16BE</a></div><div class="ttdoc">UTF-16 big endian encoding. </div><div class="ttdef"><b>Definition:</b> encodings.h:375</div></div>
@@ -807,7 +92,8 @@ $(document).ready(function(){initNavTree('encodings_8h_source.html','');});
<div class="ttc" id="classrapidjson_1_1_encoding_html"><div class="ttname"><a href="classrapidjson_1_1_encoding.html">rapidjson::Encoding</a></div><div class="ttdoc">Concept for encoding of Unicode characters. </div></div>
<div class="ttc" id="structrapidjson_1_1_u_t_f32_html"><div class="ttname"><a href="structrapidjson_1_1_u_t_f32.html">rapidjson::UTF32</a></div><div class="ttdoc">UTF-32 encoding. </div><div class="ttdef"><b>Definition:</b> encodings.h:418</div></div>
<div class="ttc" id="namespacerapidjson_html_a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81"><div class="ttname"><a href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81">rapidjson::kUTF8</a></div><div class="ttdoc">UTF-8. </div><div class="ttdef"><b>Definition:</b> encodings.h:604</div></div>
-<div class="ttc" id="structrapidjson_1_1_auto_u_t_f_html"><div class="ttname"><a href="structrapidjson_1_1_auto_u_t_f.html">rapidjson::AutoUTF</a></div><div class="ttdoc">Dynamically select encoding according to stream&#39;s runtime-specified UTF encoding type. </div><div class="ttdef"><b>Definition:</b> encodings.h:615</div></div>
+<div class="ttc" id="classrapidjson_1_1_stream_html"><div class="ttname"><a href="classrapidjson_1_1_stream.html">rapidjson::Stream</a></div><div class="ttdoc">Concept for reading and writing characters. </div></div>
+<div class="ttc" id="structrapidjson_1_1_auto_u_t_f_html"><div class="ttname"><a href="structrapidjson_1_1_auto_u_t_f.html">rapidjson::AutoUTF</a></div><div class="ttdoc">Dynamically select encoding according to stream&amp;#39;s runtime-specified UTF encoding type. </div><div class="ttdef"><b>Definition:</b> encodings.h:615</div></div>
<div class="ttc" id="namespacerapidjson_html_a4aacabc0f8cea1cd628f466d890773eba52c496755de96eee05275a423b36299d"><div class="ttname"><a href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba52c496755de96eee05275a423b36299d">rapidjson::kUTF16BE</a></div><div class="ttdoc">UTF-16 big endian. </div><div class="ttdef"><b>Definition:</b> encodings.h:606</div></div>
<div class="ttc" id="rapidjson_8h_html"><div class="ttname"><a href="rapidjson_8h.html">rapidjson.h</a></div><div class="ttdoc">common definitions and configuration </div></div>
<div class="ttc" id="structrapidjson_1_1_u_t_f8_html"><div class="ttname"><a href="structrapidjson_1_1_u_t_f8.html">rapidjson::UTF8</a></div><div class="ttdoc">UTF-8 encoding. </div><div class="ttdef"><b>Definition:</b> encodings.h:96</div></div>
@@ -825,7 +111,7 @@ $(document).ready(function(){initNavTree('encodings_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>encodings.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>encodings.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/error_8h.html b/zh-cn/error_8h.html
index 55f16ed4..103ad72f 100644
--- a/zh-cn/error_8h.html
+++ b/zh-cn/error_8h.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/error/error.h 文件参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('error_8h.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -113,10 +114,9 @@ $(document).ready(function(){initNavTree('error_8h.html','');});
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
类型定义</h2></td></tr>
-<tr class="memitem:ga4e77e464ec8abe1111ee581fc2cb00de"><td class="memItemLeft" align="right" valign="top">typedef const <br class="typebreak" />
-<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a> *(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga4e77e464ec8abe1111ee581fc2cb00de">rapidjson::GetParseErrorFunc</a> )(ParseErrorCode)</td></tr>
-<tr class="memdesc:ga4e77e464ec8abe1111ee581fc2cb00de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function pointer type of GetParseError(). <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga4e77e464ec8abe1111ee581fc2cb00de">更多...</a><br /></td></tr>
-<tr class="separator:ga4e77e464ec8abe1111ee581fc2cb00de"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac1bee7fdafeba5a85c27943fcde12882"><td class="memItemLeft" align="right" valign="top">typedef const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a> *(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gac1bee7fdafeba5a85c27943fcde12882">rapidjson::GetParseErrorFunc</a>) (ParseErrorCode)</td></tr>
+<tr class="memdesc:gac1bee7fdafeba5a85c27943fcde12882"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function pointer type of GetParseError(). <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gac1bee7fdafeba5a85c27943fcde12882">更多...</a><br /></td></tr>
+<tr class="separator:gac1bee7fdafeba5a85c27943fcde12882"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
枚举</h2></td></tr>
@@ -144,8 +144,8 @@ $(document).ready(function(){initNavTree('error_8h.html','');});
&#160;&#160;<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">rapidjson::kParseErrorTermination</a>,
<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24">rapidjson::kParseErrorUnspecificSyntaxError</a>
<br />
- }</td></tr>
-<tr class="memdesc:ga7d3acf640886b1f2552dc8c4cd6dea60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error code of parsing. <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">更多...</a><br /></td></tr>
+ }<tr class="memdesc:ga7d3acf640886b1f2552dc8c4cd6dea60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error code of parsing. <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">更多...</a><br /></td></tr>
+</td></tr>
<tr class="separator:ga7d3acf640886b1f2552dc8c4cd6dea60"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
@@ -154,7 +154,7 @@ $(document).ready(function(){initNavTree('error_8h.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_fe9dda5e4327cd9afbdccfe35db969bf.html">error</a></li><li class="navelem"><a class="el" href="error_8h.html">error.h</a></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5937892b65cdaf02cc4201f920170bd1.html">error</a></li><li class="navelem"><a class="el" href="error_8h.html">error.h</a></li>
</ul>
</div>
</body>
diff --git a/zh-cn/error_8h.js b/zh-cn/error_8h.js
index 6fbc9b3d..c06f29f4 100644
--- a/zh-cn/error_8h.js
+++ b/zh-cn/error_8h.js
@@ -2,7 +2,7 @@ var error_8h =
[
[ "RAPIDJSON_ERROR_CHARTYPE", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c", null ],
[ "RAPIDJSON_ERROR_STRING", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d", null ],
- [ "GetParseErrorFunc", "error_8h.html#ga4e77e464ec8abe1111ee581fc2cb00de", null ],
+ [ "GetParseErrorFunc", "error_8h.html#gac1bee7fdafeba5a85c27943fcde12882", null ],
[ "ParseErrorCode", "error_8h.html#ga7d3acf640886b1f2552dc8c4cd6dea60", [
[ "kParseErrorNone", "error_8h.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f", null ],
[ "kParseErrorDocumentEmpty", "error_8h.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286", null ],
diff --git a/zh-cn/error_8h_source.html b/zh-cn/error_8h_source.html
index 7e574de6..5722f2ca 100644
--- a/zh-cn/error_8h_source.html
+++ b/zh-cn/error_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/error/error.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('error_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,168 +81,7 @@ $(document).ready(function(){initNavTree('error_8h_source.html','');});
<div class="title">error.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="error_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ERROR_ERROR_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_ERROR_ERROR_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">/*! \file error.h */</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">/*! \defgroup RAPIDJSON_ERRORS RapidJSON error handling */</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_ERROR_CHARTYPE</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">//! Character type of error messages.</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span><span class="comment">/*! \ingroup RAPIDJSON_ERRORS</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> The default character type is \c char.</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> On Windows, user can define this macro as \c TCHAR for supporting both</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> unicode/non-unicode settings.</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ERROR_CHARTYPE</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c"> 39</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_ERROR_CHARTYPE char</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_ERROR_STRING</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">//! Macro for converting string literial to \ref RAPIDJSON_ERROR_CHARTYPE[].</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"></span><span class="comment">/*! \ingroup RAPIDJSON_ERRORS</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> By default this conversion macro does nothing.</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> On Windows, user can define this macro as \c _T(x) for supporting both</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> unicode/non-unicode settings.</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ERROR_STRING</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d"> 52</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_ERROR_STRING(x) x</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"></span><span class="comment">// ParseErrorCode</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment">//! Error code of parsing.</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"></span><span class="comment">/*! \ingroup RAPIDJSON_ERRORS</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> \see GenericReader::Parse, GenericReader::GetParseErrorCode</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60"> 64</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> {</div>
-<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f"> 65</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f">kParseErrorNone</a> = 0, <span class="comment">//!&lt; No error.</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286"> 67</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286">kParseErrorDocumentEmpty</a>, <span class="comment">//!&lt; The document is empty.</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5"> 68</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5">kParseErrorDocumentRootNotSingular</a>, <span class="comment">//!&lt; The document root must not follow by other values.</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57"> 70</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, <span class="comment">//!&lt; Invalid value.</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242"> 72</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242">kParseErrorObjectMissName</a>, <span class="comment">//!&lt; Missing a name for object member.</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c"> 73</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c">kParseErrorObjectMissColon</a>, <span class="comment">//!&lt; Missing a colon after a name of object member.</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73"> 74</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73">kParseErrorObjectMissCommaOrCurlyBracket</a>, <span class="comment">//!&lt; Missing a comma or &#39;}&#39; after an object member.</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93"> 76</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93">kParseErrorArrayMissCommaOrSquareBracket</a>, <span class="comment">//!&lt; Missing a comma or &#39;]&#39; after an array element.</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a23c38bf88b8448555c0eb41e1735bd92"> 78</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a23c38bf88b8448555c0eb41e1735bd92">kParseErrorStringUnicodeEscapeInvalidHex</a>, <span class="comment">//!&lt; Incorrect hex digit after \\u escape in string.</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386"> 79</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386">kParseErrorStringUnicodeSurrogateInvalid</a>, <span class="comment">//!&lt; The surrogate pair in string is invalid.</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a8dd0af5e6103a6503c61c38cb2b0bab9"> 80</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a8dd0af5e6103a6503c61c38cb2b0bab9">kParseErrorStringEscapeInvalid</a>, <span class="comment">//!&lt; Invalid escape character in string.</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60af7daa91caa53abb881ea231a874a4f40"> 81</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60af7daa91caa53abb881ea231a874a4f40">kParseErrorStringMissQuotationMark</a>, <span class="comment">//!&lt; Missing a closing quotation mark in string.</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f"> 82</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f">kParseErrorStringInvalidEncoding</a>, <span class="comment">//!&lt; Invalid encoding in string.</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805"> 84</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805">kParseErrorNumberTooBig</a>, <span class="comment">//!&lt; Number too big to be stored in double.</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ac840ece3ba6874fe6f16c01ebb71031f"> 85</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ac840ece3ba6874fe6f16c01ebb71031f">kParseErrorNumberMissFraction</a>, <span class="comment">//!&lt; Miss fraction part in number.</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7"> 86</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7">kParseErrorNumberMissExponent</a>, <span class="comment">//!&lt; Miss exponent in number.</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50"> 88</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, <span class="comment">//!&lt; Parsing was terminated.</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24"> 89</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24">kParseErrorUnspecificSyntaxError</a> <span class="comment">//!&lt; Unspecific syntax error.</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"></span>};</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment">//! Result of parsing (wraps ParseErrorCode)</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> \ingroup RAPIDJSON_ERRORS</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> \code</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> Document doc;</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> ParseResult ok = doc.Parse(&quot;[42]&quot;);</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> if (!ok) {</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> fprintf(stderr, &quot;JSON parse error: %s (%u)&quot;,</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> GetParseError_En(ok.Code()), ok.Offset());</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> exit(EXIT_FAILURE);</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> }</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> \endcode</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> \see GenericReader::Parse, GenericDocument::Parse</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html"> 106</a></span>&#160;<span class="keyword">struct </span><a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> {<span class="comment"></span></div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> //!! Unspecified boolean type</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a59558cbb7ba917a1c3924d83ed2da0d9"> 108</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> bool (<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a>::*BooleanType)() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="keyword">public</span>:<span class="comment"></span></div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> //! Default constructor, no error.</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0f03679d5fa2736d9e351541e767fac1"> 111</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0f03679d5fa2736d9e351541e767fac1">ParseResult</a>() : code_(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f">kParseErrorNone</a>), offset_(0) {}<span class="comment"></span></div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> //! Constructor to set an error.</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ad15710045513f13ba526753c4a2cb59b"> 113</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ad15710045513f13ba526753c4a2cb59b">ParseResult</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code, <span class="keywordtype">size_t</span> offset) : code_(code), offset_(offset) {}</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> //! Get the error code.</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a51cfd45c07e28aa4fdd78b55d86f0591"> 116</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a51cfd45c07e28aa4fdd78b55d86f0591">Code</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> code_; }<span class="comment"></span></div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> //! Get the error offset, if \ref IsError(), 0 otherwise.</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a056e5792c1554fbc05b5f1cc168d82ae"> 118</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a056e5792c1554fbc05b5f1cc168d82ae">Offset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> offset_; }</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> //! Explicit conversion to \c bool, returns \c true, iff !\ref IsError().</span></div>
-<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a1743018526769d9b5b782fd7cffc9838"> 121</a></span>&#160;<span class="comment"></span> <span class="keyword">operator</span> BooleanType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !IsError() ? &amp;ParseResult::IsError : NULL; }<span class="comment"></span></div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> //! Whether the result is an error.</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a5ab5548c7a7776f4da20eac09fe57c1b"> 123</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a5ab5548c7a7776f4da20eac09fe57c1b">IsError</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> code_ != <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f">kParseErrorNone</a>; }</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a>&amp; that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> code_ == that.code_; }</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">bool</span> operator==(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> code_ == code; }</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator==(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code, <span class="keyword">const</span> ParseResult &amp; err) { <span class="keywordflow">return</span> code == err.code_; }</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> ParseResult&amp; that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == that); }</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">bool</span> operator!=(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == code); }</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator!=(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code, <span class="keyword">const</span> ParseResult &amp; err) { <span class="keywordflow">return</span> err != code; }</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> //! Reset error code.</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f"> 134</a></span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f">Clear</a>() { Set(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f">kParseErrorNone</a>); }<span class="comment"></span></div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> //! Update error code and offset.</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a40c0bd4d6c535c57acbb5c2e656bea38"> 136</a></span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a40c0bd4d6c535c57acbb5c2e656bea38">Set</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code, <span class="keywordtype">size_t</span> offset = 0) { code_ = code; offset_ = offset; }</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code_;</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordtype">size_t</span> offset_;</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;};</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment">//! Function pointer type of GetParseError().</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"></span><span class="comment">/*! \ingroup RAPIDJSON_ERRORS</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> This is the prototype for \c GetParseError_X(), where \c X is a locale.</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"> User can dynamically change locale in runtime, e.g.:</span></div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment">\code</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment"> GetParseErrorFunc GetParseError = GetParseError_En; // or whatever</span></div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment"> const RAPIDJSON_ERROR_CHARTYPE* s = GetParseError(document.GetParseErrorCode());</span></div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment">\endcode</span></div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga4e77e464ec8abe1111ee581fc2cb00de"> 153</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a>* (*GetParseErrorFunc)(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a>);</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ERROR_ERROR_H_</span></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">rapidjson::kParseErrorValueInvalid</a></div><div class="ttdoc">Invalid value. </div><div class="ttdef"><b>Definition:</b> error.h:70</div></div>
+<a href="error_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ERROR_ERROR_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_ERROR_ERROR_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">/*! \file error.h */</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">/*! \defgroup RAPIDJSON_ERRORS RapidJSON error handling */</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_ERROR_CHARTYPE</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">//! Character type of error messages.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span><span class="comment">/*! \ingroup RAPIDJSON_ERRORS</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> The default character type is \c char.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> On Windows, user can define this macro as \c TCHAR for supporting both</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> unicode/non-unicode settings.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ERROR_CHARTYPE</span></div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c"> 39</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_ERROR_CHARTYPE char</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_ERROR_STRING</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">//! Macro for converting string literial to \ref RAPIDJSON_ERROR_CHARTYPE[].</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"></span><span class="comment">/*! \ingroup RAPIDJSON_ERRORS</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> By default this conversion macro does nothing.</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> On Windows, user can define this macro as \c _T(x) for supporting both</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> unicode/non-unicode settings.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ERROR_STRING</span></div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d"> 52</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_ERROR_STRING(x) x</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"></span><span class="comment">// ParseErrorCode</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment">//! Error code of parsing.</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"></span><span class="comment">/*! \ingroup RAPIDJSON_ERRORS</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> \see GenericReader::Parse, GenericReader::GetParseErrorCode</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60"> 64</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> {</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f"> 65</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f">kParseErrorNone</a> = 0, <span class="comment">//!&lt; No error.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286"> 67</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286">kParseErrorDocumentEmpty</a>, <span class="comment">//!&lt; The document is empty.</span></div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5"> 68</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5">kParseErrorDocumentRootNotSingular</a>, <span class="comment">//!&lt; The document root must not follow by other values.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57"> 70</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, <span class="comment">//!&lt; Invalid value.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242"> 72</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242">kParseErrorObjectMissName</a>, <span class="comment">//!&lt; Missing a name for object member.</span></div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c"> 73</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c">kParseErrorObjectMissColon</a>, <span class="comment">//!&lt; Missing a colon after a name of object member.</span></div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73"> 74</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73">kParseErrorObjectMissCommaOrCurlyBracket</a>, <span class="comment">//!&lt; Missing a comma or &#39;}&#39; after an object member.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93"> 76</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93">kParseErrorArrayMissCommaOrSquareBracket</a>, <span class="comment">//!&lt; Missing a comma or &#39;]&#39; after an array element.</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a23c38bf88b8448555c0eb41e1735bd92"> 78</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a23c38bf88b8448555c0eb41e1735bd92">kParseErrorStringUnicodeEscapeInvalidHex</a>, <span class="comment">//!&lt; Incorrect hex digit after \\u escape in string.</span></div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386"> 79</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386">kParseErrorStringUnicodeSurrogateInvalid</a>, <span class="comment">//!&lt; The surrogate pair in string is invalid.</span></div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a8dd0af5e6103a6503c61c38cb2b0bab9"> 80</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a8dd0af5e6103a6503c61c38cb2b0bab9">kParseErrorStringEscapeInvalid</a>, <span class="comment">//!&lt; Invalid escape character in string.</span></div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60af7daa91caa53abb881ea231a874a4f40"> 81</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60af7daa91caa53abb881ea231a874a4f40">kParseErrorStringMissQuotationMark</a>, <span class="comment">//!&lt; Missing a closing quotation mark in string.</span></div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f"> 82</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f">kParseErrorStringInvalidEncoding</a>, <span class="comment">//!&lt; Invalid encoding in string.</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805"> 84</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805">kParseErrorNumberTooBig</a>, <span class="comment">//!&lt; Number too big to be stored in double.</span></div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ac840ece3ba6874fe6f16c01ebb71031f"> 85</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ac840ece3ba6874fe6f16c01ebb71031f">kParseErrorNumberMissFraction</a>, <span class="comment">//!&lt; Miss fraction part in number.</span></div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7"> 86</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7">kParseErrorNumberMissExponent</a>, <span class="comment">//!&lt; Miss exponent in number.</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50"> 88</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, <span class="comment">//!&lt; Parsing was terminated.</span></div><div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24"> 89</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24">kParseErrorUnspecificSyntaxError</a> <span class="comment">//!&lt; Unspecific syntax error.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"></span>};</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment">//! Result of parsing (wraps ParseErrorCode)</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> \ingroup RAPIDJSON_ERRORS</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> \code</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> Document doc;</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> ParseResult ok = doc.Parse(&quot;[42]&quot;);</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> if (!ok) {</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> fprintf(stderr, &quot;JSON parse error: %s (%u)&quot;,</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> GetParseError_En(ok.Code()), ok.Offset());</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> exit(EXIT_FAILURE);</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> }</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> \endcode</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> \see GenericReader::Parse, GenericDocument::Parse</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html"> 106</a></span>&#160;<span class="keyword">struct </span><a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> {<span class="comment"></span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> //!! Unspecified boolean type</span></div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#aff2daa285445bba8f76578ea274e34a3"> 108</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> bool (<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a>::*BooleanType)() <span class="keyword">const</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="keyword">public</span>:<span class="comment"></span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> //! Default constructor, no error.</span></div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0f03679d5fa2736d9e351541e767fac1"> 111</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0f03679d5fa2736d9e351541e767fac1">ParseResult</a>() : code_(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f">kParseErrorNone</a>), offset_(0) {}<span class="comment"></span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> //! Constructor to set an error.</span></div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ad15710045513f13ba526753c4a2cb59b"> 113</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ad15710045513f13ba526753c4a2cb59b">ParseResult</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code, <span class="keywordtype">size_t</span> offset) : code_(code), offset_(offset) {}</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> //! Get the error code.</span></div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a3c6a1f7b7dc21363a255eb10a3c0e00e"> 116</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a3c6a1f7b7dc21363a255eb10a3c0e00e">Code</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> code_; }<span class="comment"></span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> //! Get the error offset, if \ref IsError(), 0 otherwise.</span></div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a85036788b0cfd1c676900de6f8260bd6"> 118</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a85036788b0cfd1c676900de6f8260bd6">Offset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> offset_; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> //! Explicit conversion to \c bool, returns \c true, iff !\ref IsError().</span></div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#af0936ace1dc9b674e9afb75ec6145b32"> 121</a></span>&#160;<span class="comment"></span> <span class="keyword">operator</span> BooleanType()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !IsError() ? &amp;ParseResult::IsError : NULL; }<span class="comment"></span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> //! Whether the result is an error.</span></div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ab6d87c6ce9c849f35e902fbe23f485c4"> 123</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ab6d87c6ce9c849f35e902fbe23f485c4">IsError</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> code_ != <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f">kParseErrorNone</a>; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a>&amp; that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> code_ == that.code_; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordtype">bool</span> operator==(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> code_ == code; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator==(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code, <span class="keyword">const</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> &amp; err) { <span class="keywordflow">return</span> code == err.code_; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a>&amp; that)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == that); }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">bool</span> operator!=(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == code); }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">friend</span> <span class="keywordtype">bool</span> operator!=(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code, <span class="keyword">const</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> &amp; err) { <span class="keywordflow">return</span> err != code; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> //! Reset error code.</span></div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f"> 134</a></span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f">Clear</a>() { Set(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f">kParseErrorNone</a>); }<span class="comment"></span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> //! Update error code and offset.</span></div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a40c0bd4d6c535c57acbb5c2e656bea38"> 136</a></span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a40c0bd4d6c535c57acbb5c2e656bea38">Set</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code, <span class="keywordtype">size_t</span> offset = 0) { code_ = code; offset_ = offset; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code_;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordtype">size_t</span> offset_;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;};</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment">//! Function pointer type of GetParseError().</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"></span><span class="comment">/*! \ingroup RAPIDJSON_ERRORS</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> This is the prototype for \c GetParseError_X(), where \c X is a locale.</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"> User can dynamically change locale in runtime, e.g.:</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment">\code</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment"> GetParseErrorFunc GetParseError = GetParseError_En; // or whatever</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment"> const RAPIDJSON_ERROR_CHARTYPE* s = GetParseError(document.GetParseErrorCode());</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment">\endcode</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gac1bee7fdafeba5a85c27943fcde12882"> 153</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a>* (*GetParseErrorFunc)(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a>);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ERROR_ERROR_H_</span></div><div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">rapidjson::kParseErrorValueInvalid</a></div><div class="ttdoc">Invalid value. </div><div class="ttdef"><b>Definition:</b> error.h:70</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386">rapidjson::kParseErrorStringUnicodeSurrogateInvalid</a></div><div class="ttdoc">The surrogate pair in string is invalid. </div><div class="ttdef"><b>Definition:</b> error.h:79</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ad15710045513f13ba526753c4a2cb59b"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ad15710045513f13ba526753c4a2cb59b">rapidjson::ParseResult::ParseResult</a></div><div class="ttdeci">ParseResult(ParseErrorCode code, size_t offset)</div><div class="ttdoc">Constructor to set an error. </div><div class="ttdef"><b>Definition:</b> error.h:113</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c">rapidjson::kParseErrorObjectMissColon</a></div><div class="ttdoc">Missing a colon after a name of object member. </div><div class="ttdef"><b>Definition:</b> error.h:73</div></div>
@@ -250,24 +90,24 @@ $(document).ready(function(){initNavTree('error_8h_source.html','');});
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f">rapidjson::kParseErrorNone</a></div><div class="ttdoc">No error. </div><div class="ttdef"><b>Definition:</b> error.h:65</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ga7d3acf640886b1f2552dc8c4cd6dea60"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">rapidjson::ParseErrorCode</a></div><div class="ttdeci">ParseErrorCode</div><div class="ttdoc">Error code of parsing. </div><div class="ttdef"><b>Definition:</b> error.h:64</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_a17c9f7f81675283393222658d613000f"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f">rapidjson::ParseResult::Clear</a></div><div class="ttdeci">void Clear()</div><div class="ttdoc">Reset error code. </div><div class="ttdef"><b>Definition:</b> error.h:134</div></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93">rapidjson::kParseErrorArrayMissCommaOrSquareBracket</a></div><div class="ttdoc">Missing a comma or &#39;]&#39; after an array element. </div><div class="ttdef"><b>Definition:</b> error.h:76</div></div>
+<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93">rapidjson::kParseErrorArrayMissCommaOrSquareBracket</a></div><div class="ttdoc">Missing a comma or &amp;#39;]&amp;#39; after an array element. </div><div class="ttdef"><b>Definition:</b> error.h:76</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5">rapidjson::kParseErrorDocumentRootNotSingular</a></div><div class="ttdoc">The document root must not follow by other values. </div><div class="ttdef"><b>Definition:</b> error.h:68</div></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_a5ab5548c7a7776f4da20eac09fe57c1b"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a5ab5548c7a7776f4da20eac09fe57c1b">rapidjson::ParseResult::IsError</a></div><div class="ttdeci">bool IsError() const </div><div class="ttdoc">Whether the result is an error. </div><div class="ttdef"><b>Definition:</b> error.h:123</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24">rapidjson::kParseErrorUnspecificSyntaxError</a></div><div class="ttdoc">Unspecific syntax error. </div><div class="ttdef"><b>Definition:</b> error.h:89</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60af7daa91caa53abb881ea231a874a4f40"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60af7daa91caa53abb881ea231a874a4f40">rapidjson::kParseErrorStringMissQuotationMark</a></div><div class="ttdoc">Missing a closing quotation mark in string. </div><div class="ttdef"><b>Definition:</b> error.h:81</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a8dd0af5e6103a6503c61c38cb2b0bab9"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a8dd0af5e6103a6503c61c38cb2b0bab9">rapidjson::kParseErrorStringEscapeInvalid</a></div><div class="ttdoc">Invalid escape character in string. </div><div class="ttdef"><b>Definition:</b> error.h:80</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ga7e4636fd48d0148f102b8a13f0539d8c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a></div><div class="ttdeci">#define RAPIDJSON_ERROR_CHARTYPE</div><div class="ttdoc">Character type of error messages. </div><div class="ttdef"><b>Definition:</b> error.h:39</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_structrapidjson_1_1_parse_result"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">rapidjson::ParseResult</a></div><div class="ttdoc">Result of parsing (wraps ParseErrorCode) </div><div class="ttdef"><b>Definition:</b> error.h:106</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242">rapidjson::kParseErrorObjectMissName</a></div><div class="ttdoc">Missing a name for object member. </div><div class="ttdef"><b>Definition:</b> error.h:72</div></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_a51cfd45c07e28aa4fdd78b55d86f0591"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a51cfd45c07e28aa4fdd78b55d86f0591">rapidjson::ParseResult::Code</a></div><div class="ttdeci">ParseErrorCode Code() const </div><div class="ttdoc">Get the error code. </div><div class="ttdef"><b>Definition:</b> error.h:116</div></div>
+<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ab6d87c6ce9c849f35e902fbe23f485c4"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ab6d87c6ce9c849f35e902fbe23f485c4">rapidjson::ParseResult::IsError</a></div><div class="ttdeci">bool IsError() const</div><div class="ttdoc">Whether the result is an error. </div><div class="ttdef"><b>Definition:</b> error.h:123</div></div>
+<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_a85036788b0cfd1c676900de6f8260bd6"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a85036788b0cfd1c676900de6f8260bd6">rapidjson::ParseResult::Offset</a></div><div class="ttdeci">size_t Offset() const</div><div class="ttdoc">Get the error offset, if IsError(), 0 otherwise. </div><div class="ttdef"><b>Definition:</b> error.h:118</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">rapidjson::kParseErrorTermination</a></div><div class="ttdoc">Parsing was terminated. </div><div class="ttdef"><b>Definition:</b> error.h:88</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805">rapidjson::kParseErrorNumberTooBig</a></div><div class="ttdoc">Number too big to be stored in double. </div><div class="ttdef"><b>Definition:</b> error.h:84</div></div>
+<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_a3c6a1f7b7dc21363a255eb10a3c0e00e"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a3c6a1f7b7dc21363a255eb10a3c0e00e">rapidjson::ParseResult::Code</a></div><div class="ttdeci">ParseErrorCode Code() const</div><div class="ttdoc">Get the error code. </div><div class="ttdef"><b>Definition:</b> error.h:116</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7">rapidjson::kParseErrorNumberMissExponent</a></div><div class="ttdoc">Miss exponent in number. </div><div class="ttdef"><b>Definition:</b> error.h:86</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_a0f03679d5fa2736d9e351541e767fac1"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0f03679d5fa2736d9e351541e767fac1">rapidjson::ParseResult::ParseResult</a></div><div class="ttdeci">ParseResult()</div><div class="ttdoc">Default constructor, no error. </div><div class="ttdef"><b>Definition:</b> error.h:111</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286">rapidjson::kParseErrorDocumentEmpty</a></div><div class="ttdoc">The document is empty. </div><div class="ttdef"><b>Definition:</b> error.h:67</div></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73">rapidjson::kParseErrorObjectMissCommaOrCurlyBracket</a></div><div class="ttdoc">Missing a comma or &#39;}&#39; after an object member. </div><div class="ttdef"><b>Definition:</b> error.h:74</div></div>
+<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73">rapidjson::kParseErrorObjectMissCommaOrCurlyBracket</a></div><div class="ttdoc">Missing a comma or &amp;#39;}&amp;#39; after an object member. </div><div class="ttdef"><b>Definition:</b> error.h:74</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f">rapidjson::kParseErrorStringInvalidEncoding</a></div><div class="ttdoc">Invalid encoding in string. </div><div class="ttdef"><b>Definition:</b> error.h:82</div></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_a056e5792c1554fbc05b5f1cc168d82ae"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a056e5792c1554fbc05b5f1cc168d82ae">rapidjson::ParseResult::Offset</a></div><div class="ttdeci">size_t Offset() const </div><div class="ttdoc">Get the error offset, if IsError(), 0 otherwise. </div><div class="ttdef"><b>Definition:</b> error.h:118</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_a40c0bd4d6c535c57acbb5c2e656bea38"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a40c0bd4d6c535c57acbb5c2e656bea38">rapidjson::ParseResult::Set</a></div><div class="ttdeci">void Set(ParseErrorCode code, size_t offset=0)</div><div class="ttdoc">Update error code and offset. </div><div class="ttdef"><b>Definition:</b> error.h:136</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
@@ -275,7 +115,7 @@ $(document).ready(function(){initNavTree('error_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_fe9dda5e4327cd9afbdccfe35db969bf.html">error</a></li><li class="navelem"><a class="el" href="error_8h.html">error.h</a></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5937892b65cdaf02cc4201f920170bd1.html">error</a></li><li class="navelem"><a class="el" href="error_8h.html">error.h</a></li>
</ul>
</div>
</body>
diff --git a/zh-cn/filereadstream_8h_source.html b/zh-cn/filereadstream_8h_source.html
index 014e51be..c3332723 100644
--- a/zh-cn/filereadstream_8h_source.html
+++ b/zh-cn/filereadstream_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/filereadstream.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('filereadstream_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,106 +81,7 @@ $(document).ready(function(){initNavTree('filereadstream_8h_source.html','');});
<div class="title">filereadstream.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_FILEREADSTREAM_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_FILEREADSTREAM_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;RAPIDJSON_DIAG_OFF(unreachable-code)</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;RAPIDJSON_DIAG_OFF(missing-noreturn)</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">//! File byte stream for input using fread().</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> \note implements Stream concept</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_file_read_stream.html"> 34</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a> {</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929"> 36</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">char</span> <a class="code" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929">Ch</a>; <span class="comment">//!&lt; Character type (byte).</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> //! Constructor.</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> \param fp File pointer opened for read.</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> \param buffer user-supplied buffer.</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> \param bufferSize size of buffer in bytes. Must &gt;=4 bytes.</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_file_read_stream.html#a72b610ada5d86e8977a2bc1f2f4c0808"> 44</a></span>&#160; <a class="code" href="classrapidjson_1_1_file_read_stream.html#a72b610ada5d86e8977a2bc1f2f4c0808">FileReadStream</a>(std::FILE* fp, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">size_t</span> bufferSize) : fp_(fp), buffer_(buffer), bufferSize_(bufferSize), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) { </div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(fp_ != 0);</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(bufferSize &gt;= 4);</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; Read();</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *current_; }</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; Ch Take() { Ch c = *current_; Read(); <span class="keywordflow">return</span> c; }</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> count_ + <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(current_ - buffer_); }</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// Not implemented</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">void</span> Put(Ch) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">void</span> Flush() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); } </div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="comment">// For encoding detection only.</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> Ch* Peek4()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> (current_ + 4 &lt;= bufferLast_) ? current_ : 0;</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">void</span> Read() {</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span> (current_ &lt; bufferLast_)</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; ++current_;</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!eof_) {</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; count_ += readCount_;</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; readCount_ = fread(buffer_, 1, bufferSize_, fp_);</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; bufferLast_ = buffer_ + readCount_ - 1;</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; current_ = buffer_;</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (readCount_ &lt; bufferSize_) {</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; buffer_[readCount_] = <span class="charliteral">&#39;\0&#39;</span>;</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; ++bufferLast_;</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; eof_ = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; std::FILE* fp_;</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; Ch *buffer_;</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">size_t</span> bufferSize_;</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; Ch *bufferLast_;</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; Ch *current_;</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">size_t</span> readCount_;</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">size_t</span> count_; <span class="comment">//!&lt; Number of characters read</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> eof_;</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;};</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_FILESTREAM_H_</span></div>
-<div class="ttc" id="classrapidjson_1_1_file_read_stream_html_a72b610ada5d86e8977a2bc1f2f4c0808"><div class="ttname"><a href="classrapidjson_1_1_file_read_stream.html#a72b610ada5d86e8977a2bc1f2f4c0808">rapidjson::FileReadStream::FileReadStream</a></div><div class="ttdeci">FileReadStream(std::FILE *fp, char *buffer, size_t bufferSize)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> filereadstream.h:44</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_FILEREADSTREAM_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_FILEREADSTREAM_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;RAPIDJSON_DIAG_OFF(unreachable-code)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;RAPIDJSON_DIAG_OFF(missing-noreturn)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">//! File byte stream for input using fread().</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> \note implements Stream concept</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_file_read_stream.html"> 34</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a> {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929"> 36</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">char</span> <a class="code" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929">Ch</a>; <span class="comment">//!&lt; Character type (byte).</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> //! Constructor.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> \param fp File pointer opened for read.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> \param buffer user-supplied buffer.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> \param bufferSize size of buffer in bytes. Must &gt;=4 bytes.</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_file_read_stream.html#a72b610ada5d86e8977a2bc1f2f4c0808"> 44</a></span>&#160; <a class="code" href="classrapidjson_1_1_file_read_stream.html#a72b610ada5d86e8977a2bc1f2f4c0808">FileReadStream</a>(std::FILE* fp, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">size_t</span> bufferSize) : fp_(fp), buffer_(buffer), bufferSize_(bufferSize), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) { </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(fp_ != 0);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(bufferSize &gt;= 4);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; Read();</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *current_; }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; Ch Take() { Ch c = *current_; Read(); <span class="keywordflow">return</span> c; }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> count_ + <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(current_ - buffer_); }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// Not implemented</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordtype">void</span> Put(Ch) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">void</span> Flush() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); } </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="comment">// For encoding detection only.</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">const</span> Ch* Peek4()<span class="keyword"> const </span>{</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> (current_ + 4 &lt;= bufferLast_) ? current_ : 0;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordtype">void</span> Read() {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span> (current_ &lt; bufferLast_)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; ++current_;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!eof_) {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; count_ += readCount_;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; readCount_ = fread(buffer_, 1, bufferSize_, fp_);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; bufferLast_ = buffer_ + readCount_ - 1;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; current_ = buffer_;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (readCount_ &lt; bufferSize_) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; buffer_[readCount_] = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; ++bufferLast_;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; eof_ = <span class="keyword">true</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; std::FILE* fp_;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; Ch *buffer_;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordtype">size_t</span> bufferSize_;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; Ch *bufferLast_;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; Ch *current_;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">size_t</span> readCount_;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">size_t</span> count_; <span class="comment">//!&lt; Number of characters read</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> eof_;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;};</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_FILESTREAM_H_</span></div><div class="ttc" id="classrapidjson_1_1_file_read_stream_html_a72b610ada5d86e8977a2bc1f2f4c0808"><div class="ttname"><a href="classrapidjson_1_1_file_read_stream.html#a72b610ada5d86e8977a2bc1f2f4c0808">rapidjson::FileReadStream::FileReadStream</a></div><div class="ttdeci">FileReadStream(std::FILE *fp, char *buffer, size_t bufferSize)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> filereadstream.h:44</div></div>
<div class="ttc" id="classrapidjson_1_1_file_read_stream_html"><div class="ttname"><a href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a></div><div class="ttdoc">File byte stream for input using fread(). </div><div class="ttdef"><b>Definition:</b> filereadstream.h:34</div></div>
<div class="ttc" id="classrapidjson_1_1_file_read_stream_html_a4a5f34875b40d22def206c9a09ecd929"><div class="ttname"><a href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929">rapidjson::FileReadStream::Ch</a></div><div class="ttdeci">char Ch</div><div class="ttdoc">Character type (byte). </div><div class="ttdef"><b>Definition:</b> filereadstream.h:36</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
@@ -189,7 +91,7 @@ $(document).ready(function(){initNavTree('filereadstream_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>filereadstream.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>filereadstream.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/files.html b/zh-cn/files.html
index 20523e56..27ffd33e 100644
--- a/zh-cn/files.html
+++ b/zh-cn/files.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 文件列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('files.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -82,12 +83,12 @@ $(document).ready(function(){initNavTree('files.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的文件,并附带简要说明:</div><div class="directory">
<div class="levels">[详情级别 <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span>]</div><table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html" target="_self">include</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span id="img_0_0_" class="iconfopen" onclick="toggleFolder('0_0_')">&#160;</span><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html" target="_self">rapidjson</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_0_" class="arrow" onclick="toggleFolder('0_0_0_')">&#9660;</span><span id="img_0_0_0_" class="iconfopen" onclick="toggleFolder('0_0_0_')">&#160;</span><a class="el" href="dir_fe9dda5e4327cd9afbdccfe35db969bf.html" target="_self">error</a></td><td class="desc"></td></tr>
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html" target="_self">include</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span id="img_0_0_" class="iconfopen" onclick="toggleFolder('0_0_')">&#160;</span><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html" target="_self">rapidjson</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_0_" class="arrow" onclick="toggleFolder('0_0_0_')">&#9660;</span><span id="img_0_0_0_" class="iconfopen" onclick="toggleFolder('0_0_0_')">&#160;</span><a class="el" href="dir_5937892b65cdaf02cc4201f920170bd1.html" target="_self">error</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="en_8h_source.html"><span class="icondoc"></span></a><b>en.h</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_1_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="error_8h_source.html"><span class="icondoc"></span></a><a class="el" href="error_8h.html" target="_self">error.h</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_1_" class="arrow" onclick="toggleFolder('0_0_1_')">&#9660;</span><span id="img_0_0_1_" class="iconfopen" onclick="toggleFolder('0_0_1_')">&#160;</span><a class="el" href="dir_5167ae66a3a40cb9e5e46c75b7477e81.html" target="_self">internal</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_1_" class="arrow" onclick="toggleFolder('0_0_1_')">&#9660;</span><span id="img_0_0_1_" class="iconfopen" onclick="toggleFolder('0_0_1_')">&#160;</span><a class="el" href="dir_8d7584a8244d286291cd37b99676a43b.html" target="_self">internal</a></td><td class="desc"></td></tr>
<tr id="row_0_0_1_0_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="biginteger_8h_source.html"><span class="icondoc"></span></a><b>biginteger.h</b></td><td class="desc"></td></tr>
<tr id="row_0_0_1_1_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="diyfp_8h_source.html"><span class="icondoc"></span></a><b>diyfp.h</b></td><td class="desc"></td></tr>
<tr id="row_0_0_1_2_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="dtoa_8h_source.html"><span class="icondoc"></span></a><b>dtoa.h</b></td><td class="desc"></td></tr>
diff --git a/zh-cn/files.js b/zh-cn/files.js
index 64136833..93d774e0 100644
--- a/zh-cn/files.js
+++ b/zh-cn/files.js
@@ -1,4 +1,4 @@
var files =
[
- [ "include", "dir_2e777bb85672ca91d8484c1593fb1d89.html", "dir_2e777bb85672ca91d8484c1593fb1d89" ]
+ [ "include", "dir_d44c64559bbebec7f509842c48db8b23.html", "dir_d44c64559bbebec7f509842c48db8b23" ]
]; \ No newline at end of file
diff --git a/zh-cn/filewritestream_8h_source.html b/zh-cn/filewritestream_8h_source.html
index 38b9d1d4..a56a7fd5 100644
--- a/zh-cn/filewritestream_8h_source.html
+++ b/zh-cn/filewritestream_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/filewritestream.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('filewritestream_8h_source.html','');})
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,111 +81,7 @@ $(document).ready(function(){initNavTree('filewritestream_8h_source.html','');})
<div class="title">filewritestream.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_FILEWRITESTREAM_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_FILEWRITESTREAM_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(unreachable-code)</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">//! Wrapper of C file stream for input using fread().</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> \note implements Stream concept</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_file_write_stream.html"> 32</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a> {</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_file_write_stream.html#afc606cc81f6c3709d81bf99b30566330"> 34</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">char</span> <a class="code" href="classrapidjson_1_1_file_write_stream.html#afc606cc81f6c3709d81bf99b30566330">Ch</a>; <span class="comment">//!&lt; Character type. Only support char.</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a>(std::FILE* fp, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">size_t</span> bufferSize) : fp_(fp), buffer_(buffer), bufferEnd_(buffer + bufferSize), current_(buffer_) { </div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(fp_ != 0);</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">void</span> Put(<span class="keywordtype">char</span> c) { </div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">if</span> (current_ &gt;= bufferEnd_)</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; Flush();</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; *current_++ = c;</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">void</span> PutN(<span class="keywordtype">char</span> c, <span class="keywordtype">size_t</span> n) {</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">size_t</span> avail = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(bufferEnd_ - current_);</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">while</span> (n &gt; avail) {</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; std::memset(current_, c, avail);</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; current_ += avail;</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; Flush();</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; n -= avail;</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; avail = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(bufferEnd_ - current_);</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (n &gt; 0) {</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; std::memset(current_, c, n);</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; current_ += n;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">void</span> Flush() {</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">if</span> (current_ != buffer_) {</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">size_t</span> result = fwrite(buffer_, 1, static_cast&lt;size_t&gt;(current_ - buffer_), fp_);</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (result &lt; static_cast&lt;size_t&gt;(current_ - buffer_)) {</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">// failure deliberately ignored at this time</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="comment">// added to avoid warn_unused_result build errors</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; current_ = buffer_;</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Not implemented</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">char</span> Peek()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">char</span> Take() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">char</span>* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">size_t</span> PutEnd(<span class="keywordtype">char</span>*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">// Prohibit copy constructor &amp; assignment operator.</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; FileWriteStream(<span class="keyword">const</span> FileWriteStream&amp;);</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; FileWriteStream&amp; operator=(<span class="keyword">const</span> FileWriteStream&amp;);</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; std::FILE* fp_;</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordtype">char</span> *buffer_;</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">char</span> *bufferEnd_;</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">char</span> *current_;</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;};</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment">//! Implement specialized version of PutN() with memset() for better performance.</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;&gt;</div>
-<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a"> 94</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">PutN</a>(<a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a>&amp; stream, <span class="keywordtype">char</span> c, <span class="keywordtype">size_t</span> n) {</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; stream.PutN(c, n);</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;}</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_FILESTREAM_H_</span></div>
-<div class="ttc" id="classrapidjson_1_1_file_write_stream_html"><div class="ttname"><a href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a></div><div class="ttdoc">Wrapper of C file stream for input using fread(). </div><div class="ttdef"><b>Definition:</b> filewritestream.h:32</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_FILEWRITESTREAM_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_FILEWRITESTREAM_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;cstdio&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(unreachable-code)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">//! Wrapper of C file stream for input using fread().</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> \note implements Stream concept</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_file_write_stream.html"> 32</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a> {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_file_write_stream.html#afc606cc81f6c3709d81bf99b30566330"> 34</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">char</span> <a class="code" href="classrapidjson_1_1_file_write_stream.html#afc606cc81f6c3709d81bf99b30566330">Ch</a>; <span class="comment">//!&lt; Character type. Only support char.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a>(std::FILE* fp, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">size_t</span> bufferSize) : fp_(fp), buffer_(buffer), bufferEnd_(buffer + bufferSize), current_(buffer_) { </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(fp_ != 0);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">void</span> Put(<span class="keywordtype">char</span> c) { </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">if</span> (current_ &gt;= bufferEnd_)</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; Flush();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; *current_++ = c;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">PutN</a>(<span class="keywordtype">char</span> c, <span class="keywordtype">size_t</span> n) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">size_t</span> avail = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(bufferEnd_ - current_);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">while</span> (n &gt; avail) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; std::memset(current_, c, avail);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; current_ += avail;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; Flush();</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; n -= avail;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; avail = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(bufferEnd_ - current_);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (n &gt; 0) {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; std::memset(current_, c, n);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; current_ += n;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">void</span> Flush() {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">if</span> (current_ != buffer_) {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">size_t</span> result = fwrite(buffer_, 1, static_cast&lt;size_t&gt;(current_ - buffer_), fp_);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (result &lt; static_cast&lt;size_t&gt;(current_ - buffer_)) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="comment">// failure deliberately ignored at this time</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="comment">// added to avoid warn_unused_result build errors</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; current_ = buffer_;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Not implemented</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">char</span> Peek()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">char</span> Take() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordtype">char</span>* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordtype">size_t</span> PutEnd(<span class="keywordtype">char</span>*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">// Prohibit copy constructor &amp; assignment operator.</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a>&amp;);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a>&amp;);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; std::FILE* fp_;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordtype">char</span> *buffer_;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">char</span> *bufferEnd_;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">char</span> *current_;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;};</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment">//! Implement specialized version of PutN() with memset() for better performance.</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a"> 94</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">PutN</a>(<a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a>&amp; stream, <span class="keywordtype">char</span> c, <span class="keywordtype">size_t</span> n) {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; stream.PutN(c, n);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;}</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_FILESTREAM_H_</span></div><div class="ttc" id="classrapidjson_1_1_file_write_stream_html"><div class="ttname"><a href="classrapidjson_1_1_file_write_stream.html">rapidjson::FileWriteStream</a></div><div class="ttdoc">Wrapper of C file stream for input using fread(). </div><div class="ttdef"><b>Definition:</b> filewritestream.h:32</div></div>
<div class="ttc" id="classrapidjson_1_1_file_write_stream_html_afc606cc81f6c3709d81bf99b30566330"><div class="ttname"><a href="classrapidjson_1_1_file_write_stream.html#afc606cc81f6c3709d81bf99b30566330">rapidjson::FileWriteStream::Ch</a></div><div class="ttdeci">char Ch</div><div class="ttdoc">Character type. Only support char. </div><div class="ttdef"><b>Definition:</b> filewritestream.h:34</div></div>
<div class="ttc" id="namespacerapidjson_html_a1ac13bac5976fc06587e00fc0bcfb32a"><div class="ttname"><a href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">rapidjson::PutN</a></div><div class="ttdeci">void PutN(FileWriteStream &amp;stream, char c, size_t n)</div><div class="ttdoc">Implement specialized version of PutN() with memset() for better performance. </div><div class="ttdef"><b>Definition:</b> filewritestream.h:94</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
@@ -194,7 +91,7 @@ $(document).ready(function(){initNavTree('filewritestream_8h_source.html','');})
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>filewritestream.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>filewritestream.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/ftv2folderclosed.png b/zh-cn/folderclosed.png
index bb8ab35e..bb8ab35e 100644
--- a/zh-cn/ftv2folderclosed.png
+++ b/zh-cn/folderclosed.png
Binary files differ
diff --git a/zh-cn/ftv2folderopen.png b/zh-cn/folderopen.png
index d6c7f676..d6c7f676 100644
--- a/zh-cn/ftv2folderopen.png
+++ b/zh-cn/folderopen.png
Binary files differ
diff --git a/zh-cn/ftv2blank.png b/zh-cn/ftv2blank.png
deleted file mode 100644
index 63c605bb..00000000
--- a/zh-cn/ftv2blank.png
+++ /dev/null
Binary files differ
diff --git a/zh-cn/ftv2lastnode.png b/zh-cn/ftv2lastnode.png
deleted file mode 100644
index 63c605bb..00000000
--- a/zh-cn/ftv2lastnode.png
+++ /dev/null
Binary files differ
diff --git a/zh-cn/ftv2link.png b/zh-cn/ftv2link.png
deleted file mode 100644
index 17edabff..00000000
--- a/zh-cn/ftv2link.png
+++ /dev/null
Binary files differ
diff --git a/zh-cn/ftv2mlastnode.png b/zh-cn/ftv2mlastnode.png
deleted file mode 100644
index 0b63f6d3..00000000
--- a/zh-cn/ftv2mlastnode.png
+++ /dev/null
Binary files differ
diff --git a/zh-cn/ftv2mnode.png b/zh-cn/ftv2mnode.png
deleted file mode 100644
index 0b63f6d3..00000000
--- a/zh-cn/ftv2mnode.png
+++ /dev/null
Binary files differ
diff --git a/zh-cn/ftv2node.png b/zh-cn/ftv2node.png
deleted file mode 100644
index 63c605bb..00000000
--- a/zh-cn/ftv2node.png
+++ /dev/null
Binary files differ
diff --git a/zh-cn/ftv2plastnode.png b/zh-cn/ftv2plastnode.png
deleted file mode 100644
index c6ee22f9..00000000
--- a/zh-cn/ftv2plastnode.png
+++ /dev/null
Binary files differ
diff --git a/zh-cn/ftv2pnode.png b/zh-cn/ftv2pnode.png
deleted file mode 100644
index c6ee22f9..00000000
--- a/zh-cn/ftv2pnode.png
+++ /dev/null
Binary files differ
diff --git a/zh-cn/ftv2vertline.png b/zh-cn/ftv2vertline.png
deleted file mode 100644
index 63c605bb..00000000
--- a/zh-cn/ftv2vertline.png
+++ /dev/null
Binary files differ
diff --git a/zh-cn/functions.html b/zh-cn/functions.html
index 664b151f..46171662 100644
--- a/zh-cn/functions.html
+++ b/zh-cn/functions.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,9 +79,9 @@ $(document).ready(function(){initNavTree('functions.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
+<h3><a id="index_a"></a>- a -</h3><ul>
<li>Accept()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>AddMember()
: <a class="el" href="classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
@@ -90,7 +91,7 @@ $(document).ready(function(){initNavTree('functions.html','');});
, <a class="el" href="classrapidjson_1_1_generic_value.html#a5d47340c96346c5028fee4c9068d783d">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>Append()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a64f7bb98da73976b59597cdde96a40b8">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a7cb5eda2af1722e52efa591c4103ebec">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>AutoUTFInputStream()
: <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html#a5c9f041a3b32bf15bc9be888a8731d35">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>
diff --git a/zh-cn/functions_~.html b/zh-cn/functions_0x7e.html
index 5a8b7131..d4266827 100644
--- a/zh-cn/functions_~.html
+++ b/zh-cn/functions_0x7e.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -58,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('functions_~.html','');});
+$(document).ready(function(){initNavTree('functions_0x7e.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_~.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_~.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_~"></a>- ~ -</h3><ul>
+<h3><a id="index_0x7e"></a>- ~ -</h3><ul>
<li>~GenericPointer()
: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a0e144b9956a5272c13ceff3b9306e748">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
diff --git a/zh-cn/functions_b.html b/zh-cn/functions_b.html
index b9ac2b31..8ee5f8cc 100644
--- a/zh-cn/functions_b.html
+++ b/zh-cn/functions_b.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_b.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_b.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
+<h3><a id="index_b"></a>- b -</h3><ul>
<li>Begin()
: <a class="el" href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
@@ -86,7 +87,7 @@ $(document).ready(function(){initNavTree('functions_b.html','');});
: <a class="el" href="structrapidjson_1_1_memory_stream.html#a1cc586e50fbfc0bd5994977b42243b93">rapidjson::MemoryStream</a>
</li>
<li>BooleanType
-: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a59558cbb7ba917a1c3924d83ed2da0d9">rapidjson::ParseResult</a>
+: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#aff2daa285445bba8f76578ea274e34a3">rapidjson::ParseResult</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/zh-cn/functions_c.html b/zh-cn/functions_c.html
index 9339cd54..1724513d 100644
--- a/zh-cn/functions_c.html
+++ b/zh-cn/functions_c.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_c.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,10 +79,10 @@ $(document).ready(function(){initNavTree('functions_c.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<h3><a id="index_c"></a>- c -</h3><ul>
<li>Capacity()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a6cbb8a305fdc40beb83bee2b99ac5b59">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a7433671a5129289939c3a4f24d173b6e">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#a812e5c07f74a90566e7636330740eb6a">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#acdf0fc08cbcd940205a0a6289f1c58bd">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a>
</li>
<li>Ch
: <a class="el" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929">rapidjson::FileReadStream</a>
@@ -98,7 +99,7 @@ $(document).ready(function(){initNavTree('functions_c.html','');});
, <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f">rapidjson::ParseResult</a>
</li>
<li>Code()
-: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a51cfd45c07e28aa4fdd78b55d86f0591">rapidjson::ParseResult</a>
+: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a3c6a1f7b7dc21363a255eb10a3c0e00e">rapidjson::ParseResult</a>
</li>
<li>ConstIterator
: <a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>
@@ -113,7 +114,7 @@ $(document).ready(function(){initNavTree('functions_c.html','');});
: <a class="el" href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>Create()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a3733a6d6cf2a3a13f2a59b109b56d800">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/zh-cn/functions_d.html b/zh-cn/functions_d.html
index 668d27ca..92cb769c 100644
--- a/zh-cn/functions_d.html
+++ b/zh-cn/functions_d.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_d.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_d.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
+<h3><a id="index_d"></a>- d -</h3><ul>
<li>DifferenceType
: <a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>
</li>
diff --git a/zh-cn/functions_dup.js b/zh-cn/functions_dup.js
index c80745b7..95c3d9bd 100644
--- a/zh-cn/functions_dup.js
+++ b/zh-cn/functions_dup.js
@@ -20,5 +20,5 @@ var functions_dup =
[ "t", "functions_t.html", null ],
[ "v", "functions_v.html", null ],
[ "w", "functions_w.html", null ],
- [ "~", "functions_~.html", null ]
+ [ "~", "functions_0x7e.html", null ]
]; \ No newline at end of file
diff --git a/zh-cn/functions_e.html b/zh-cn/functions_e.html
index 569bc5fd..cba71f4e 100644
--- a/zh-cn/functions_e.html
+++ b/zh-cn/functions_e.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_e.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,9 +79,9 @@ $(document).ready(function(){initNavTree('functions_e.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
+<h3><a id="index_e"></a>- e -</h3><ul>
<li>Empty()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a08bf77a430b865404c57a93d8f0f6d3d">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#ad08a62c65a793ab1d0abe7eac03776fd">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>EncodingType
: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
@@ -93,7 +94,7 @@ $(document).ready(function(){initNavTree('functions_e.html','');});
: <a class="el" href="structrapidjson_1_1_memory_stream.html#a47f45298891e8156121b4017954fabe8">rapidjson::MemoryStream</a>
</li>
<li>Erase()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#aec10492caf6e853935d9a360bbe73713">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a923a1100c029a28e25894708bdce784c">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
, <a class="el" href="classrapidjson_1_1_generic_value.html#a916f443e02f9379d8fbde49a4d440f61">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>EraseMember()
diff --git a/zh-cn/functions_f.html b/zh-cn/functions_f.html
index 84665e74..4e24263c 100644
--- a/zh-cn/functions_f.html
+++ b/zh-cn/functions_f.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_f.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_f.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
+<h3><a id="index_f"></a>- f -</h3><ul>
<li>FileReadStream()
: <a class="el" href="classrapidjson_1_1_file_read_stream.html#a72b610ada5d86e8977a2bc1f2f4c0808">rapidjson::FileReadStream</a>
</li>
diff --git a/zh-cn/functions_func.html b/zh-cn/functions_func.html
index 8eab49b4..e9fe2363 100644
--- a/zh-cn/functions_func.html
+++ b/zh-cn/functions_func.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,15 +79,15 @@ $(document).ready(function(){initNavTree('functions_func.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
+<h3><a id="index_a"></a>- a -</h3><ul>
<li>Accept()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>AddMember()
: <a class="el" href="classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>Append()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#ad0bd4948e56dce4b75b39f744050322c">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a4aadec8f0efe9a7ac42ac4906a5f676d">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>AutoUTFInputStream()
: <a class="el" href="classrapidjson_1_1_auto_u_t_f_input_stream.html#a5c9f041a3b32bf15bc9be888a8731d35">rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;</a>
diff --git a/zh-cn/functions_func.js b/zh-cn/functions_func.js
index 639b1854..7dadb49e 100644
--- a/zh-cn/functions_func.js
+++ b/zh-cn/functions_func.js
@@ -17,5 +17,5 @@ var functions_func =
[ "t", "functions_func_t.html", null ],
[ "v", "functions_func_v.html", null ],
[ "w", "functions_func_w.html", null ],
- [ "~", "functions_func_~.html", null ]
+ [ "~", "functions_func_0x7e.html", null ]
]; \ No newline at end of file
diff --git a/zh-cn/functions_func_~.html b/zh-cn/functions_func_0x7e.html
index 8de873ba..29c64ec0 100644
--- a/zh-cn/functions_func_~.html
+++ b/zh-cn/functions_func_0x7e.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -58,7 +59,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</div>
</div>
<script type="text/javascript">
-$(document).ready(function(){initNavTree('functions_func_~.html','');});
+$(document).ready(function(){initNavTree('functions_func_0x7e.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_~.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_func_~.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_~"></a>- ~ -</h3><ul>
+<h3><a id="index_0x7e"></a>- ~ -</h3><ul>
<li>~GenericPointer()
: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a0e144b9956a5272c13ceff3b9306e748">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
diff --git a/zh-cn/functions_func_b.html b/zh-cn/functions_func_b.html
index 04717eb4..0dd00a71 100644
--- a/zh-cn/functions_func_b.html
+++ b/zh-cn/functions_func_b.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_b.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_func_b.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
+<h3><a id="index_b"></a>- b -</h3><ul>
<li>Begin()
: <a class="el" href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
diff --git a/zh-cn/functions_func_c.html b/zh-cn/functions_func_c.html
index d7040d25..af291de1 100644
--- a/zh-cn/functions_func_c.html
+++ b/zh-cn/functions_func_c.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_c.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,10 +79,10 @@ $(document).ready(function(){initNavTree('functions_func_c.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<h3><a id="index_c"></a>- c -</h3><ul>
<li>Capacity()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a6cbb8a305fdc40beb83bee2b99ac5b59">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a7433671a5129289939c3a4f24d173b6e">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#a812e5c07f74a90566e7636330740eb6a">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#acdf0fc08cbcd940205a0a6289f1c58bd">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a>
</li>
<li>Clear()
: <a class="el" href="classrapidjson_1_1_generic_value.html#aa56b69bac5423622eff6998ce4802106">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
@@ -89,13 +90,13 @@ $(document).ready(function(){initNavTree('functions_func_c.html','');});
, <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f">rapidjson::ParseResult</a>
</li>
<li>Code()
-: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a51cfd45c07e28aa4fdd78b55d86f0591">rapidjson::ParseResult</a>
+: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a3c6a1f7b7dc21363a255eb10a3c0e00e">rapidjson::ParseResult</a>
</li>
<li>CopyFrom()
: <a class="el" href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>Create()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a3733a6d6cf2a3a13f2a59b109b56d800">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/zh-cn/functions_func_d.html b/zh-cn/functions_func_d.html
index 8846e067..5da4e453 100644
--- a/zh-cn/functions_func_d.html
+++ b/zh-cn/functions_func_d.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_d.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_func_d.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
+<h3><a id="index_d"></a>- d -</h3><ul>
<li>Double()
: <a class="el" href="classrapidjson_1_1_writer.html#aff66881798d01e932a0b8b8ef97b0373">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>
</li>
diff --git a/zh-cn/functions_func_e.html b/zh-cn/functions_func_e.html
index 02851712..8506ac30 100644
--- a/zh-cn/functions_func_e.html
+++ b/zh-cn/functions_func_e.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_e.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,15 +79,15 @@ $(document).ready(function(){initNavTree('functions_func_e.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
+<h3><a id="index_e"></a>- e -</h3><ul>
<li>Empty()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a08bf77a430b865404c57a93d8f0f6d3d">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#ad08a62c65a793ab1d0abe7eac03776fd">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>End()
: <a class="el" href="classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>Erase()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#aec10492caf6e853935d9a360bbe73713">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a923a1100c029a28e25894708bdce784c">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
, <a class="el" href="classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>EraseMember()
diff --git a/zh-cn/functions_func_f.html b/zh-cn/functions_func_f.html
index 7e6d5e43..57dc49ef 100644
--- a/zh-cn/functions_func_f.html
+++ b/zh-cn/functions_func_f.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_f.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_func_f.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
+<h3><a id="index_f"></a>- f -</h3><ul>
<li>FileReadStream()
: <a class="el" href="classrapidjson_1_1_file_read_stream.html#a72b610ada5d86e8977a2bc1f2f4c0808">rapidjson::FileReadStream</a>
</li>
diff --git a/zh-cn/functions_func_g.html b/zh-cn/functions_func_g.html
index de3cb39b..f76e148c 100644
--- a/zh-cn/functions_func_g.html
+++ b/zh-cn/functions_func_g.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_g.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_func_g.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
+<h3><a id="index_g"></a>- g -</h3><ul>
<li>GenericDocument()
: <a class="el" href="classrapidjson_1_1_generic_document.html#aa52c3016961f25ecd989d82839bce4e5">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
</li>
@@ -104,67 +105,67 @@ $(document).ready(function(){initNavTree('functions_func_g.html','');});
: <a class="el" href="classrapidjson_1_1_generic_value.html#a852788b35257762cd8d6c4bf5c5d77bc">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>Get()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a309d819cc14e9d2183df4807bc99fea5">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>GetAllocator()
: <a class="el" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
, <a class="el" href="classrapidjson_1_1_generic_pointer.html#acdac4ea8e57920194827be4afb942d97">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>GetBool()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a69d917b47799f63fc588bf294fa71483">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#a78d80b935babeedbfa71914a8fe5baa7">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>GetDouble()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#aa059dee923cc0446752e321ff70936a6">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#aa27d086d265f0ce447b15b15f0a2ed6e">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>GetErrorOffset()
-: <a class="el" href="classrapidjson_1_1_generic_document.html#ab791c05727d83f6834a1b916783dbc06">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_generic_reader.html#ab907a36c410e96154c99797a6a0ce16d">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_document.html#af532179ca5ad5434a5e8af63f5da4c5f">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_generic_reader.html#ab50019e0a715320f83b7610b83dcef8f">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
</li>
<li>GetFloat()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a0eda9834f241e5c5b23161a7ee33758b">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#a573712808dd5d8814c103cf55fd761b4">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>GetInvalidDocumentPointer()
-: <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#af66e4a41d71c89edfabb176af7839f04">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a60dfb4a89593c8d3ca4c89a6202feb52">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
</li>
<li>GetInvalidSchemaKeyword()
-: <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a914628c4d69faea91ada1dee61d25d59">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a03bcd5497a574cffbd066d0aec2b5585">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
</li>
<li>GetInvalidSchemaPointer()
-: <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a8381f8d4dca195449f086ffbd25bb9b7">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a3238efb9d9144c2d6577362d8dc5f61b">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
</li>
<li>GetLength()
-: <a class="el" href="classrapidjson_1_1_generic_string_buffer.html#aefe471aaf1430189bf40ddb3fb7ebca3">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_string_buffer.html#a0a114be213152d570a2d9fde7a28fe11">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>
</li>
<li>GetParseError()
-: <a class="el" href="classrapidjson_1_1_generic_document.html#ad97e64c123ec1e07ea62ab0a9ce80c00">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_document.html#ab94c280c079a6837a24951cb4d8f337b">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
</li>
<li>GetParseErrorCode()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#ac817b123619422f03c44a46978d9fbd0">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_generic_reader.html#a40fd326bad7d7033f096b549cbf159db">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#af649a48d77aa856cddaa748ad6b0d6ac">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_generic_reader.html#a042c621cf745c5ed3a6f5ff9418dd05e">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
</li>
<li>GetParseErrorOffset()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#adc01f1be5f05127f849a2bf10a97e89b">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a75caef2a047c56466f0b599bdda882c9">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>GetRoot()
-: <a class="el" href="classrapidjson_1_1_generic_schema_document.html#af64ea17654ab0f1a91e382d422f91daf">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_schema_document.html#a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a>
</li>
<li>GetSize()
-: <a class="el" href="classrapidjson_1_1_generic_string_buffer.html#a629cedcefa12a8057fad525df8548a88">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_string_buffer.html#a9d830ec37a4ba0fba3b523c90aaf8b42">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>
</li>
<li>GetStackCapacity()
-: <a class="el" href="classrapidjson_1_1_generic_document.html#ac785c064649dea6cfa67207b6bda748e">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_document.html#a153e5a065ca9660673974f9df203be4b">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
</li>
<li>GetStringLength()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>GetTokenCount()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a2949cb104effdf323781ae70ce469ed9">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a791e40c10682b9db0adf2b6e0b8b3d78">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>GetTokens()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a0ee51e6c996d4665b398dae5dbf00bc4">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#ac07c300d43f04dad9caa0cb209cb2853">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>GetWithDefault()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#ad96e263ba29209259fd4abe63d7f4458">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#aaa4e92344cc07e98adb5b9f5b93927b8">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/zh-cn/functions_func_h.html b/zh-cn/functions_func_h.html
index 750bc9c9..ca1d9205 100644
--- a/zh-cn/functions_func_h.html
+++ b/zh-cn/functions_func_h.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_h.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,13 +79,13 @@ $(document).ready(function(){initNavTree('functions_func_h.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
+<h3><a id="index_h"></a>- h -</h3><ul>
<li>HasMember()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#af17b9b6ba6a9fb4e02d2dced5aa0ee0c">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>HasParseError()
-: <a class="el" href="classrapidjson_1_1_generic_document.html#a2ab17089bd6249bf2a7959d56d35cb68">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_generic_reader.html#a46ded2951b8fa395ed421989d66e71fe">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_document.html#a7607bb42b51547e44bfd4cab35d8f20e">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_generic_reader.html#ac42370c3497a0e2b6973110f298e3a59">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/zh-cn/functions_func_i.html b/zh-cn/functions_func_i.html
index 42efec95..ce0ee886 100644
--- a/zh-cn/functions_func_i.html
+++ b/zh-cn/functions_func_i.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_i.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,19 +79,19 @@ $(document).ready(function(){initNavTree('functions_func_i.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<h3><a id="index_i"></a>- i -</h3><ul>
<li>Is()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#ade8d1ca2b8e8afa02cde46e26866440b">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#acc6b1791cca8daef18521918136264b7">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>IsComplete()
-: <a class="el" href="classrapidjson_1_1_writer.html#a0cde8037db76f887cd9c557fd68630c5">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>
+: <a class="el" href="classrapidjson_1_1_writer.html#a190d964d3e62155e87153e858a0b04da">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>
</li>
<li>IsError()
-: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a5ab5548c7a7776f4da20eac09fe57c1b">rapidjson::ParseResult</a>
+: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ab6d87c6ce9c849f35e902fbe23f485c4">rapidjson::ParseResult</a>
</li>
<li>IsValid()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a112f364fe9aeabba2a72e83bcbeb8fda">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#ab520a4ee6df3e23ffb948c8d5ae7bf38">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#ad32a9ad31dbb588edaaf038ab053275b">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
</li>
<li>IterativeParseComplete()
: <a class="el" href="classrapidjson_1_1_generic_reader.html#a60fa11ff60f71b3a466bbd962f35dfdb">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
diff --git a/zh-cn/functions_func_m.html b/zh-cn/functions_func_m.html
index e31a68a5..c3de78e9 100644
--- a/zh-cn/functions_func_m.html
+++ b/zh-cn/functions_func_m.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_m.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,18 +79,18 @@ $(document).ready(function(){initNavTree('functions_func_m.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
+<h3><a id="index_m"></a>- m -</h3><ul>
<li>Malloc()
: <a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a208c29e04b1d748bfe068444b7044344">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a>
</li>
<li>MemberBegin()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a469c0cc3e72f846757fb64fa52fafee5">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#ae89a77887aa3eb1f1f913727cbff6786">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>MemberCount()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#acf5019b9002ebfd66a1191d19e986c7b">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#a8b7e47c57a20d0de0cd19eee799ebd88">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>MemberEnd()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a88d2c5b861cd8a6a14976456dfbc1f64">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>MemoryPoolAllocator()
: <a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#abcc572bdb6902c9d69711540db5098a7">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a>
diff --git a/zh-cn/functions_func_o.html b/zh-cn/functions_func_o.html
index d6a7fbf5..8f0245f9 100644
--- a/zh-cn/functions_func_o.html
+++ b/zh-cn/functions_func_o.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_o.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,36 +79,36 @@ $(document).ready(function(){initNavTree('functions_func_o.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
+<h3><a id="index_o"></a>- o -</h3><ul>
<li>ObjectEmpty()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a1f28a345c9b9c93c76abf695669e4378">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#a1f4835373e05abae52b91e1c6b7ec92c">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>Offset()
-: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a056e5792c1554fbc05b5f1cc168d82ae">rapidjson::ParseResult</a>
+: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a85036788b0cfd1c676900de6f8260bd6">rapidjson::ParseResult</a>
</li>
<li>operator BooleanType()
-: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a1743018526769d9b5b782fd7cffc9838">rapidjson::ParseResult</a>
+: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#af0936ace1dc9b674e9afb75ec6145b32">rapidjson::ParseResult</a>
</li>
<li>operator const Ch *()
-: <a class="el" href="structrapidjson_1_1_generic_string_ref.html#af535787e3593802222f7b3f3096beff0">rapidjson::GenericStringRef&lt; CharType &gt;</a>
+: <a class="el" href="structrapidjson_1_1_generic_string_ref.html#a86d30bb594a41619a7a5ba6c8dcce2bd">rapidjson::GenericStringRef&lt; CharType &gt;</a>
</li>
<li>operator ParseResult()
-: <a class="el" href="classrapidjson_1_1_generic_document.html#a0de48f0c884423b6fcfabc2e93942968">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_document.html#a36d19989c9221b27036675455516a974">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
</li>
<li>operator!=()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a3e74f5b9c9fd3307f6ebac61a7131524">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_generic_value.html#ad7e6ef7acbbfef57485b9f2dee620dbf">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a8ca73989b4f3ffa5154a229f95f1e0c9">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_generic_value.html#ae6fe0576ff0336f6e2b09fe32f3ff809">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>operator-()
-: <a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a6d7cfaef258b0774da1b642907d81060">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_member_iterator.html#abfad2c34a97f82178cbf9464e958e2c2">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>
</li>
<li>operator=()
: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a23194bb6ce6c07c78981344fe80ac3a6">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
, <a class="el" href="classrapidjson_1_1_generic_value.html#ae8bcedd951f50b69786aaaa1828e9fac">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>operator==()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#af0d009a8322a7b61f63a9539ca8bddaf">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_generic_value.html#a7bed9035dd1beeabe6f47e870874e793">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a3bb15fa5592f2bfad6f2c9af7940b952">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_generic_value.html#af03ef6020e188bbfceb018da5cd8becc">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>operator[]()
: <a class="el" href="classrapidjson_1_1_generic_value.html#a8ec7fc7f221306925c7674dccbe02b07">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
diff --git a/zh-cn/functions_func_p.html b/zh-cn/functions_func_p.html
index 74e4dc16..3bddc83f 100644
--- a/zh-cn/functions_func_p.html
+++ b/zh-cn/functions_func_p.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_p.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_func_p.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<h3><a id="index_p"></a>- p -</h3><ul>
<li>Parse()
: <a class="el" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
, <a class="el" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
diff --git a/zh-cn/functions_func_r.html b/zh-cn/functions_func_r.html
index eeb61cef..e76ee6d0 100644
--- a/zh-cn/functions_func_r.html
+++ b/zh-cn/functions_func_r.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_r.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_func_r.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
+<h3><a id="index_r"></a>- r -</h3><ul>
<li>RawNumber()
: <a class="el" href="structrapidjson_1_1_base_reader_handler.html#a0de969fd05528960c2a7de51b2265bf1">rapidjson::BaseReaderHandler&lt; Encoding, Derived &gt;</a>
</li>
diff --git a/zh-cn/functions_func_s.html b/zh-cn/functions_func_s.html
index b5043694..31f40061 100644
--- a/zh-cn/functions_func_s.html
+++ b/zh-cn/functions_func_s.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_s.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,12 +79,12 @@ $(document).ready(function(){initNavTree('functions_func_s.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<h3><a id="index_s"></a>- s -</h3><ul>
<li>SchemaValidatingReader()
: <a class="el" href="classrapidjson_1_1_schema_validating_reader.html#a1e2bcc66cad23376241cd91e8bf8c706">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>
</li>
<li>Set()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#ac19f479c656ddd6a8bd9888a9fb27f96">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#af2f51d68c82136086bed9593719abd1a">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
, <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a40c0bd4d6c535c57acbb5c2e656bea38">rapidjson::ParseResult</a>
</li>
<li>SetArray()
@@ -108,25 +109,25 @@ $(document).ready(function(){initNavTree('functions_func_s.html','');});
: <a class="el" href="classrapidjson_1_1_generic_value.html#a9ba3d9d8a106d5b7e92fb49db897c21b">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>Size()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a2e6e849cfb368a3fa708f8bcf1d56ec9">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#aad83829efa77ad26a23f74d6cab3d781">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#a799a8a2503989f486f3fc7a660266555">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#aa08b368c54e7643fcd23ef55139b9b40">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a>
</li>
<li>String()
: <a class="el" href="classrapidjson_1_1_pretty_writer.html#a363c2280393e27e19bceb8d015c2832c">rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>
, <a class="el" href="classrapidjson_1_1_writer.html#a849e2b675a2b868699a14d45c7396f24">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>
</li>
<li>Stringify()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#ab9166f175517b1bff8c2219ea769e506">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a73073ca3c9e47eba7c27c16151b269ac">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>StringifyUriFragment()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a40413907ac94e218f93625d3a5c8c454">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#ae985c27c1d061b93ba4f8875cfa5f7b5">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>StringRef()
: <a class="el" href="structrapidjson_1_1_generic_string_ref.html#af94951529a5d51e8c4e6e770bb707c1f">rapidjson::GenericStringRef&lt; CharType &gt;</a>
</li>
<li>Swap()
: <a class="el" href="classrapidjson_1_1_generic_document.html#abf1cbab989b856f9d260787b2575750b">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_generic_pointer.html#aaaa5b0ecdfa6af45e7dabc1987c87cac">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_generic_pointer.html#a4690cd1d6c85168ebd2ce0afe186a4fa">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
, <a class="el" href="classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
</ul>
diff --git a/zh-cn/functions_func_t.html b/zh-cn/functions_func_t.html
index 4cd29cd0..8ff1db8b 100644
--- a/zh-cn/functions_func_t.html
+++ b/zh-cn/functions_func_t.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_t.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_func_t.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
+<h3><a id="index_t"></a>- t -</h3><ul>
<li>Transcode()
: <a class="el" href="structrapidjson_1_1_transcoder.html#a3a1de7069d3cf7f1d4f4e2f96ceb7664">rapidjson::Transcoder&lt; SourceEncoding, TargetEncoding &gt;</a>
</li>
diff --git a/zh-cn/functions_func_v.html b/zh-cn/functions_func_v.html
index 8416032a..538acce5 100644
--- a/zh-cn/functions_func_v.html
+++ b/zh-cn/functions_func_v.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_v.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_func_v.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
+<h3><a id="index_v"></a>- v -</h3><ul>
<li>Validate()
: <a class="el" href="structrapidjson_1_1_transcoder.html#ae9178e512e99394a38785e73927140da">rapidjson::Transcoder&lt; SourceEncoding, TargetEncoding &gt;</a>
</li>
diff --git a/zh-cn/functions_func_w.html b/zh-cn/functions_func_w.html
index 544b551e..388936fe 100644
--- a/zh-cn/functions_func_w.html
+++ b/zh-cn/functions_func_w.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_func_w.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_func_w.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
+<h3><a id="index_w"></a>- w -</h3><ul>
<li>Writer()
: <a class="el" href="classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>
</li>
diff --git a/zh-cn/functions_g.html b/zh-cn/functions_g.html
index 7f47c975..423911e9 100644
--- a/zh-cn/functions_g.html
+++ b/zh-cn/functions_g.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_g.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_g.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
+<h3><a id="index_g"></a>- g -</h3><ul>
<li>GenericDocument()
: <a class="el" href="classrapidjson_1_1_generic_document.html#aa52c3016961f25ecd989d82839bce4e5">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
</li>
@@ -104,67 +105,67 @@ $(document).ready(function(){initNavTree('functions_g.html','');});
: <a class="el" href="classrapidjson_1_1_generic_value.html#a852788b35257762cd8d6c4bf5c5d77bc">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>Get()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a309d819cc14e9d2183df4807bc99fea5">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>GetAllocator()
: <a class="el" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
, <a class="el" href="classrapidjson_1_1_generic_pointer.html#acdac4ea8e57920194827be4afb942d97">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>GetBool()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a69d917b47799f63fc588bf294fa71483">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#a78d80b935babeedbfa71914a8fe5baa7">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>GetDouble()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#aa059dee923cc0446752e321ff70936a6">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#aa27d086d265f0ce447b15b15f0a2ed6e">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>GetErrorOffset()
-: <a class="el" href="classrapidjson_1_1_generic_document.html#ab791c05727d83f6834a1b916783dbc06">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_generic_reader.html#ab907a36c410e96154c99797a6a0ce16d">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_document.html#af532179ca5ad5434a5e8af63f5da4c5f">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_generic_reader.html#ab50019e0a715320f83b7610b83dcef8f">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
</li>
<li>GetFloat()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a0eda9834f241e5c5b23161a7ee33758b">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#a573712808dd5d8814c103cf55fd761b4">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>GetInvalidDocumentPointer()
-: <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#af66e4a41d71c89edfabb176af7839f04">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a60dfb4a89593c8d3ca4c89a6202feb52">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
</li>
<li>GetInvalidSchemaKeyword()
-: <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a914628c4d69faea91ada1dee61d25d59">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a03bcd5497a574cffbd066d0aec2b5585">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
</li>
<li>GetInvalidSchemaPointer()
-: <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a8381f8d4dca195449f086ffbd25bb9b7">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#a3238efb9d9144c2d6577362d8dc5f61b">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
</li>
<li>GetLength()
-: <a class="el" href="classrapidjson_1_1_generic_string_buffer.html#aefe471aaf1430189bf40ddb3fb7ebca3">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_string_buffer.html#a0a114be213152d570a2d9fde7a28fe11">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>
</li>
<li>GetParseError()
-: <a class="el" href="classrapidjson_1_1_generic_document.html#ad97e64c123ec1e07ea62ab0a9ce80c00">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_document.html#ab94c280c079a6837a24951cb4d8f337b">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
</li>
<li>GetParseErrorCode()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#ac817b123619422f03c44a46978d9fbd0">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_generic_reader.html#a40fd326bad7d7033f096b549cbf159db">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#af649a48d77aa856cddaa748ad6b0d6ac">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_generic_reader.html#a042c621cf745c5ed3a6f5ff9418dd05e">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
</li>
<li>GetParseErrorOffset()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#adc01f1be5f05127f849a2bf10a97e89b">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a75caef2a047c56466f0b599bdda882c9">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>GetRoot()
-: <a class="el" href="classrapidjson_1_1_generic_schema_document.html#af64ea17654ab0f1a91e382d422f91daf">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_schema_document.html#a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a>
</li>
<li>GetSize()
-: <a class="el" href="classrapidjson_1_1_generic_string_buffer.html#a629cedcefa12a8057fad525df8548a88">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_string_buffer.html#a9d830ec37a4ba0fba3b523c90aaf8b42">rapidjson::GenericStringBuffer&lt; Encoding, Allocator &gt;</a>
</li>
<li>GetStackCapacity()
-: <a class="el" href="classrapidjson_1_1_generic_document.html#ac785c064649dea6cfa67207b6bda748e">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_document.html#a153e5a065ca9660673974f9df203be4b">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
</li>
<li>GetStringLength()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>GetTokenCount()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a2949cb104effdf323781ae70ce469ed9">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a791e40c10682b9db0adf2b6e0b8b3d78">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>GetTokens()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a0ee51e6c996d4665b398dae5dbf00bc4">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#ac07c300d43f04dad9caa0cb209cb2853">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>GetWithDefault()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#ad96e263ba29209259fd4abe63d7f4458">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#aaa4e92344cc07e98adb5b9f5b93927b8">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
</ul>
</div><!-- contents -->
diff --git a/zh-cn/functions_h.html b/zh-cn/functions_h.html
index 036666e3..a89de707 100644
--- a/zh-cn/functions_h.html
+++ b/zh-cn/functions_h.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_h.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,13 +79,13 @@ $(document).ready(function(){initNavTree('functions_h.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_h"></a>- h -</h3><ul>
+<h3><a id="index_h"></a>- h -</h3><ul>
<li>HasMember()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#af17b9b6ba6a9fb4e02d2dced5aa0ee0c">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>HasParseError()
-: <a class="el" href="classrapidjson_1_1_generic_document.html#a2ab17089bd6249bf2a7959d56d35cb68">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_generic_reader.html#a46ded2951b8fa395ed421989d66e71fe">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_document.html#a7607bb42b51547e44bfd4cab35d8f20e">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_generic_reader.html#ac42370c3497a0e2b6973110f298e3a59">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
</li>
<li>head_
: <a class="el" href="structrapidjson_1_1_generic_string_stream.html#a2556705b0a0fd6393862efe6db025b32">rapidjson::GenericStringStream&lt; Encoding &gt;</a>
diff --git a/zh-cn/functions_i.html b/zh-cn/functions_i.html
index 3fd49e9f..b45d707d 100644
--- a/zh-cn/functions_i.html
+++ b/zh-cn/functions_i.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_i.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_i.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<h3><a id="index_i"></a>- i -</h3><ul>
<li>inArray
: <a class="el" href="structrapidjson_1_1_writer_1_1_level.html#a59255e3b1d371161f7c894503cfd6bec">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;::Level</a>
</li>
@@ -86,17 +87,17 @@ $(document).ready(function(){initNavTree('functions_i.html','');});
: <a class="el" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;::Token</a>
</li>
<li>Is()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#ade8d1ca2b8e8afa02cde46e26866440b">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#acc6b1791cca8daef18521918136264b7">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>IsComplete()
-: <a class="el" href="classrapidjson_1_1_writer.html#a0cde8037db76f887cd9c557fd68630c5">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>
+: <a class="el" href="classrapidjson_1_1_writer.html#a190d964d3e62155e87153e858a0b04da">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>
</li>
<li>IsError()
-: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a5ab5548c7a7776f4da20eac09fe57c1b">rapidjson::ParseResult</a>
+: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ab6d87c6ce9c849f35e902fbe23f485c4">rapidjson::ParseResult</a>
</li>
<li>IsValid()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a112f364fe9aeabba2a72e83bcbeb8fda">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#ab520a4ee6df3e23ffb948c8d5ae7bf38">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_generic_schema_validator.html#ad32a9ad31dbb588edaaf038ab053275b">rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;</a>
</li>
<li>IterativeParseComplete()
: <a class="el" href="classrapidjson_1_1_generic_reader.html#a60fa11ff60f71b3a466bbd962f35dfdb">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
diff --git a/zh-cn/functions_k.html b/zh-cn/functions_k.html
index 92bc18d3..17a62403 100644
--- a/zh-cn/functions_k.html
+++ b/zh-cn/functions_k.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_k.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_k.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
+<h3><a id="index_k"></a>- k -</h3><ul>
<li>kNeedFree
: <a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a2606d96e19bcfc9d4bf58aefe55c1b29">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a>
</li>
diff --git a/zh-cn/functions_l.html b/zh-cn/functions_l.html
index 9fe0a152..6077d3f1 100644
--- a/zh-cn/functions_l.html
+++ b/zh-cn/functions_l.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_l.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_l.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_l"></a>- l -</h3><ul>
+<h3><a id="index_l"></a>- l -</h3><ul>
<li>length
: <a class="el" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;::Token</a>
, <a class="el" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">rapidjson::GenericStringRef&lt; CharType &gt;</a>
diff --git a/zh-cn/functions_m.html b/zh-cn/functions_m.html
index 8f35f4de..7c8bb921 100644
--- a/zh-cn/functions_m.html
+++ b/zh-cn/functions_m.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_m.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_m.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_m"></a>- m -</h3><ul>
+<h3><a id="index_m"></a>- m -</h3><ul>
<li>Malloc()
: <a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#a208c29e04b1d748bfe068444b7044344">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a>
</li>
@@ -89,7 +90,7 @@ $(document).ready(function(){initNavTree('functions_m.html','');});
: <a class="el" href="classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>MemberCount()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#acf5019b9002ebfd66a1191d19e986c7b">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#a8b7e47c57a20d0de0cd19eee799ebd88">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>MemberEnd()
: <a class="el" href="classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
diff --git a/zh-cn/functions_n.html b/zh-cn/functions_n.html
index 88dc8128..f79032d8 100644
--- a/zh-cn/functions_n.html
+++ b/zh-cn/functions_n.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_n.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_n.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<h3><a id="index_n"></a>- n -</h3><ul>
<li>name
: <a class="el" href="structrapidjson_1_1_generic_member.html#ae820eaa74b415a9073f3f3855f6c6607">rapidjson::GenericMember&lt; Encoding, Allocator &gt;</a>
, <a class="el" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;::Token</a>
diff --git a/zh-cn/functions_o.html b/zh-cn/functions_o.html
index d39a5e6c..ae024df0 100644
--- a/zh-cn/functions_o.html
+++ b/zh-cn/functions_o.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_o.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,35 +79,35 @@ $(document).ready(function(){initNavTree('functions_o.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
+<h3><a id="index_o"></a>- o -</h3><ul>
<li>ObjectEmpty()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a1f28a345c9b9c93c76abf695669e4378">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#a1f4835373e05abae52b91e1c6b7ec92c">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>Offset()
-: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a056e5792c1554fbc05b5f1cc168d82ae">rapidjson::ParseResult</a>
+: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a85036788b0cfd1c676900de6f8260bd6">rapidjson::ParseResult</a>
</li>
<li>operator BooleanType()
-: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a1743018526769d9b5b782fd7cffc9838">rapidjson::ParseResult</a>
+: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#af0936ace1dc9b674e9afb75ec6145b32">rapidjson::ParseResult</a>
</li>
<li>operator const Ch *()
-: <a class="el" href="structrapidjson_1_1_generic_string_ref.html#af535787e3593802222f7b3f3096beff0">rapidjson::GenericStringRef&lt; CharType &gt;</a>
+: <a class="el" href="structrapidjson_1_1_generic_string_ref.html#a86d30bb594a41619a7a5ba6c8dcce2bd">rapidjson::GenericStringRef&lt; CharType &gt;</a>
</li>
<li>operator ParseResult()
-: <a class="el" href="classrapidjson_1_1_generic_document.html#a0de48f0c884423b6fcfabc2e93942968">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_document.html#a36d19989c9221b27036675455516a974">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
</li>
<li>operator!=()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a3e74f5b9c9fd3307f6ebac61a7131524">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_generic_value.html#ad7e6ef7acbbfef57485b9f2dee620dbf">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a8ca73989b4f3ffa5154a229f95f1e0c9">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_generic_value.html#ae6fe0576ff0336f6e2b09fe32f3ff809">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>operator-()
-: <a class="el" href="classrapidjson_1_1_generic_member_iterator.html#a6d7cfaef258b0774da1b642907d81060">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_member_iterator.html#abfad2c34a97f82178cbf9464e958e2c2">rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;</a>
</li>
<li>operator=()
: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a23194bb6ce6c07c78981344fe80ac3a6">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
, <a class="el" href="classrapidjson_1_1_generic_value.html#ae8bcedd951f50b69786aaaa1828e9fac">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>operator==()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#af0d009a8322a7b61f63a9539ca8bddaf">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a3bb15fa5592f2bfad6f2c9af7940b952">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
, <a class="el" href="classrapidjson_1_1_generic_value.html#aaa465706fda1e1ef4513ce877e0b4b69">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>operator[]()
diff --git a/zh-cn/functions_p.html b/zh-cn/functions_p.html
index 77f63ecb..3c713855 100644
--- a/zh-cn/functions_p.html
+++ b/zh-cn/functions_p.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_p.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_p.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<h3><a id="index_p"></a>- p -</h3><ul>
<li>Parse()
: <a class="el" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
, <a class="el" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a>
diff --git a/zh-cn/functions_r.html b/zh-cn/functions_r.html
index 8cb40106..ef71a220 100644
--- a/zh-cn/functions_r.html
+++ b/zh-cn/functions_r.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_r.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_r.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
+<h3><a id="index_r"></a>- r -</h3><ul>
<li>RawNumber()
: <a class="el" href="structrapidjson_1_1_base_reader_handler.html#a0de969fd05528960c2a7de51b2265bf1">rapidjson::BaseReaderHandler&lt; Encoding, Derived &gt;</a>
</li>
diff --git a/zh-cn/functions_rela.html b/zh-cn/functions_rela.html
index 34159c7b..a0804fec 100644
--- a/zh-cn/functions_rela.html
+++ b/zh-cn/functions_rela.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 相关函数</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_rela.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/functions_s.html b/zh-cn/functions_s.html
index c5cd7b31..b638b33e 100644
--- a/zh-cn/functions_s.html
+++ b/zh-cn/functions_s.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_s.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_s.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<h3><a id="index_s"></a>- s -</h3><ul>
<li>s
: <a class="el" href="structrapidjson_1_1_generic_string_ref.html#a001276ee57cbcbd3c14449045c71e994">rapidjson::GenericStringRef&lt; CharType &gt;</a>
</li>
@@ -86,7 +87,7 @@ $(document).ready(function(){initNavTree('functions_s.html','');});
: <a class="el" href="classrapidjson_1_1_schema_validating_reader.html#a1e2bcc66cad23376241cd91e8bf8c706">rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;</a>
</li>
<li>Set()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#aecea7b5c4786f509e35c3917efa57fce">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
, <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a40c0bd4d6c535c57acbb5c2e656bea38">rapidjson::ParseResult</a>
</li>
<li>SetArray()
@@ -111,8 +112,8 @@ $(document).ready(function(){initNavTree('functions_s.html','');});
: <a class="el" href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>Size()
-: <a class="el" href="classrapidjson_1_1_generic_value.html#a2e6e849cfb368a3fa708f8bcf1d56ec9">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#aad83829efa77ad26a23f74d6cab3d781">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_value.html#a799a8a2503989f486f3fc7a660266555">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_memory_pool_allocator.html#aa08b368c54e7643fcd23ef55139b9b40">rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;</a>
</li>
<li>size_
: <a class="el" href="structrapidjson_1_1_memory_stream.html#a8c8437d59c32168a74226312d9e96ace">rapidjson::MemoryStream</a>
@@ -126,10 +127,10 @@ $(document).ready(function(){initNavTree('functions_s.html','');});
, <a class="el" href="classrapidjson_1_1_writer.html#a849e2b675a2b868699a14d45c7396f24">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>
</li>
<li>Stringify()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#ab9166f175517b1bff8c2219ea769e506">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a73073ca3c9e47eba7c27c16151b269ac">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>StringifyUriFragment()
-: <a class="el" href="classrapidjson_1_1_generic_pointer.html#a40413907ac94e218f93625d3a5c8c454">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+: <a class="el" href="classrapidjson_1_1_generic_pointer.html#ae985c27c1d061b93ba4f8875cfa5f7b5">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>StringRef()
: <a class="el" href="structrapidjson_1_1_generic_string_ref.html#a578c51ab574a50a9c760b9da7c7562f2">rapidjson::GenericStringRef&lt; CharType &gt;</a>
@@ -142,7 +143,7 @@ $(document).ready(function(){initNavTree('functions_s.html','');});
</li>
<li>Swap()
: <a class="el" href="classrapidjson_1_1_generic_document.html#abf1cbab989b856f9d260787b2575750b">rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;</a>
-, <a class="el" href="classrapidjson_1_1_generic_pointer.html#ad9f28da15453d91c3669618a6f48bfcc">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
+, <a class="el" href="classrapidjson_1_1_generic_pointer.html#a29d7ee42eb5646f829aeca6c6989555a">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a>
</li>
<li>swap
: <a class="el" href="classrapidjson_1_1_generic_value.html#a58ecce8a34fc029039b8079de246bdaa">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
diff --git a/zh-cn/functions_t.html b/zh-cn/functions_t.html
index dace0009..93016217 100644
--- a/zh-cn/functions_t.html
+++ b/zh-cn/functions_t.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_t.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_t.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
+<h3><a id="index_t"></a>- t -</h3><ul>
<li>Transcode()
: <a class="el" href="structrapidjson_1_1_transcoder.html#a3a1de7069d3cf7f1d4f4e2f96ceb7664">rapidjson::Transcoder&lt; SourceEncoding, TargetEncoding &gt;</a>
</li>
diff --git a/zh-cn/functions_type.html b/zh-cn/functions_type.html
index b7d2688e..451b7dba 100644
--- a/zh-cn/functions_type.html
+++ b/zh-cn/functions_type.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 类型定义</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_type.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -82,7 +83,7 @@ $(document).ready(function(){initNavTree('functions_type.html','');});
, <a class="el" href="classrapidjson_1_1_generic_value.html#a5d47340c96346c5028fee4c9068d783d">rapidjson::GenericValue&lt; Encoding, Allocator &gt;</a>
</li>
<li>BooleanType
-: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a59558cbb7ba917a1c3924d83ed2da0d9">rapidjson::ParseResult</a>
+: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#aff2daa285445bba8f76578ea274e34a3">rapidjson::ParseResult</a>
</li>
<li>Ch
: <a class="el" href="classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929">rapidjson::FileReadStream</a>
diff --git a/zh-cn/functions_v.html b/zh-cn/functions_v.html
index 01f0e8fb..825257cd 100644
--- a/zh-cn/functions_v.html
+++ b/zh-cn/functions_v.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_v.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_v.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
+<h3><a id="index_v"></a>- v -</h3><ul>
<li>Validate()
: <a class="el" href="structrapidjson_1_1_transcoder.html#ae9178e512e99394a38785e73927140da">rapidjson::Transcoder&lt; SourceEncoding, TargetEncoding &gt;</a>
</li>
diff --git a/zh-cn/functions_vars.html b/zh-cn/functions_vars.html
index 124db6d2..438847d8 100644
--- a/zh-cn/functions_vars.html
+++ b/zh-cn/functions_vars.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员 - 变量</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_vars.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/functions_w.html b/zh-cn/functions_w.html
index 546a28b0..e858f1dc 100644
--- a/zh-cn/functions_w.html
+++ b/zh-cn/functions_w.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('functions_w.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('functions_w.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的类成员,并附带类所属的文件:</div>
-<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
+<h3><a id="index_w"></a>- w -</h3><ul>
<li>Writer()
: <a class="el" href="classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a>
</li>
diff --git a/zh-cn/fwd_8h_source.html b/zh-cn/fwd_8h_source.html
index 5e7f69dd..b4212593 100644
--- a/zh-cn/fwd_8h_source.html
+++ b/zh-cn/fwd_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/fwd.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('fwd_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,160 +81,9 @@ $(document).ready(function(){initNavTree('fwd_8h_source.html','');});
<div class="title">fwd.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_FWD_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_FWD_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rapidjson_8h.html">rapidjson.h</a>&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// encodings.h</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>UTF8;</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>UTF16;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>UTF16BE;</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>UTF16LE;</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>UTF32;</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>UTF32BE;</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>UTF32LE;</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>ASCII;</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>AutoUTF;</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> TargetEncoding&gt;</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">struct </span>Transcoder;</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">// allocators.h</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">class </span>CrtAllocator;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BaseAllocator&gt;</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">class </span>MemoryPoolAllocator;</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">// stream.h</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding&gt;</div>
-<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a021f77051e9f85188fc2f71ff5a15ebc"> 47</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream</a>;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream&lt;UTF8&lt;char&gt;</a> &gt; <a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a>;</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding&gt;</div>
-<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a64e957c8d9d7cd15b193ffc31410038e"> 52</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream</a>;</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream&lt;UTF8&lt;char&gt;</a> &gt; <a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">InsituStringStream</a>;</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">// stringbuffer.h</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21"> 59</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer&lt;UTF8&lt;char&gt;</a>, <a class="code" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a>&gt; <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">StringBuffer</a>;</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment">// filereadstream.h</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a>;</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment">// filewritestream.h</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a>;</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">// memorybuffer.h</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_memory_buffer.html"> 74</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_memory_buffer.html">GenericMemoryBuffer</a>;</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_memory_buffer.html">GenericMemoryBuffer&lt;CrtAllocator&gt;</a> <a class="code" href="structrapidjson_1_1_generic_memory_buffer.html">MemoryBuffer</a>;</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment">// memorystream.h</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a>;</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment">// reader.h</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Derived&gt;</div>
-<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_base_reader_handler.html"> 85</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_base_reader_handler.html">BaseReaderHandler</a>;</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> TargetEncoding, <span class="keyword">typename</span> StackAllocator&gt;</div>
-<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ad5310edd1226f5b3ea82dc0d4d3740c6"> 88</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader</a>;</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader&lt;UTF8&lt;char&gt;</a>, <a class="code" href="structrapidjson_1_1_u_t_f8.html">UTF8&lt;char&gt;</a>, <a class="code" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a>&gt; <a class="code" href="classrapidjson_1_1_generic_reader.html">Reader</a>;</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment">// writer.h</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream, <span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> TargetEncoding, <span class="keyword">typename</span> StackAllocator, <span class="keywordtype">unsigned</span> writeFlags&gt;</div>
-<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html"> 95</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_writer.html">Writer</a>;</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment">// prettywriter.h</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream, <span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> TargetEncoding, <span class="keyword">typename</span> StackAllocator, <span class="keywordtype">unsigned</span> writeFlags&gt;</div>
-<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_pretty_writer.html"> 100</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a>;</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment">// document.h</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt; </div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_member.html">GenericMember</a>;</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Const, <span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>;</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>;</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt; </div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>;</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;UTF8&lt;char&gt;</a>, <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator&lt;CrtAllocator&gt;</a> &gt; <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>;</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator, <span class="keyword">typename</span> StackAllocator&gt;</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>;</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;UTF8&lt;char&gt;</a>, <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator&lt;CrtAllocator&gt;</a>, <a class="code" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a>&gt; <a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a>;</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment">// pointer.h</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueType, <span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374"> 126</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>;</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;Value, CrtAllocator&gt;</a> <a class="code" href="classrapidjson_1_1_generic_pointer.html">Pointer</a>;</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment">// schema.h</span></div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SchemaDocumentType&gt;</div>
-<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html"> 133</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IGenericRemoteSchemaDocumentProvider</a>;</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueT, <span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf"> 136</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>;</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument&lt;Value, CrtAllocator&gt;</a> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">SchemaDocument</a>;</div>
-<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#af91eb8eea47b79d75b23e29fa9c0abb5"> 139</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IGenericRemoteSchemaDocumentProvider&lt;SchemaDocument&gt;</a> <a class="code" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IRemoteSchemaDocumentProvider</a>;</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword">template</span> &lt;</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">typename</span> SchemaDocumentType,</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">typename</span> OutputHandler,</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">typename</span> StateAllocator&gt;</div>
-<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html"> 145</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator</a>;</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator&lt;SchemaDocument, BaseReaderHandler&lt;UTF8&lt;char&gt;</a>, <span class="keywordtype">void</span>&gt;, <a class="code" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a>&gt; <a class="code" href="classrapidjson_1_1_generic_schema_validator.html">SchemaValidator</a>;</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_RAPIDJSONFWD_H_</span></div>
-<div class="ttc" id="structrapidjson_1_1_generic_string_stream_html"><div class="ttname"><a href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream</a></div><div class="ttdoc">Read-only string stream. </div><div class="ttdef"><b>Definition:</b> fwd.h:47</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_FWD_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_FWD_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rapidjson_8h.html">rapidjson.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// encodings.h</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>UTF8;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>UTF16;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>UTF16BE;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>UTF16LE;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>UTF32;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>UTF32BE;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>UTF32LE;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>ASCII;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt; <span class="keyword">struct </span>AutoUTF;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> TargetEncoding&gt;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">struct </span>Transcoder;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">// allocators.h</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">class </span>CrtAllocator;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> BaseAllocator&gt;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">class </span>MemoryPoolAllocator;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">// stream.h</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding&gt;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a021f77051e9f85188fc2f71ff5a15ebc"> 47</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream&lt;UTF8&lt;char&gt;</a> &gt; <a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding&gt;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a64e957c8d9d7cd15b193ffc31410038e"> 52</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream&lt;UTF8&lt;char&gt;</a> &gt; <a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">InsituStringStream</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">// stringbuffer.h</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21"> 59</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer&lt;UTF8&lt;char&gt;</a>, <a class="code" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a>&gt; <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">StringBuffer</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment">// filereadstream.h</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment">// filewritestream.h</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">// memorybuffer.h</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_memory_buffer.html"> 74</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_memory_buffer.html">GenericMemoryBuffer</a>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_memory_buffer.html">GenericMemoryBuffer&lt;CrtAllocator&gt;</a> <a class="code" href="structrapidjson_1_1_generic_memory_buffer.html">MemoryBuffer</a>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment">// memorystream.h</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a>;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment">// reader.h</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Derived&gt;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_base_reader_handler.html"> 85</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_base_reader_handler.html">BaseReaderHandler</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> TargetEncoding, <span class="keyword">typename</span> StackAllocator&gt;</div><div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ad5310edd1226f5b3ea82dc0d4d3740c6"> 88</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader&lt;UTF8&lt;char&gt;</a>, <a class="code" href="structrapidjson_1_1_u_t_f8.html">UTF8&lt;char&gt;</a>, <a class="code" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a>&gt; <a class="code" href="classrapidjson_1_1_generic_reader.html">Reader</a>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment">// writer.h</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream, <span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> TargetEncoding, <span class="keyword">typename</span> StackAllocator, <span class="keywordtype">unsigned</span> writeFlags&gt;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html"> 95</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_writer.html">Writer</a>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment">// prettywriter.h</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream, <span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> TargetEncoding, <span class="keyword">typename</span> StackAllocator, <span class="keywordtype">unsigned</span> writeFlags&gt;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_pretty_writer.html"> 100</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment">// document.h</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt; </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_member.html">GenericMember</a>;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Const, <span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_member_iterator.html">GenericMemberIterator</a>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType&gt;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt; </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue</a>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;UTF8&lt;char&gt;</a>, <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator&lt;CrtAllocator&gt;</a> &gt; <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator, <span class="keyword">typename</span> StackAllocator&gt;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;UTF8&lt;char&gt;</a>, <a class="code" href="classrapidjson_1_1_memory_pool_allocator.html">MemoryPoolAllocator&lt;CrtAllocator&gt;</a>, <a class="code" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a>&gt; <a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment">// pointer.h</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueType, <span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374"> 126</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;Value, CrtAllocator&gt;</a> <a class="code" href="classrapidjson_1_1_generic_pointer.html">Pointer</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment">// schema.h</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SchemaDocumentType&gt;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html"> 133</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IGenericRemoteSchemaDocumentProvider</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueT, <span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf"> 136</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument&lt;Value, CrtAllocator&gt;</a> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">SchemaDocument</a>;</div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#af91eb8eea47b79d75b23e29fa9c0abb5"> 139</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IGenericRemoteSchemaDocumentProvider&lt;SchemaDocument&gt;</a> <a class="code" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IRemoteSchemaDocumentProvider</a>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword">template</span> &lt;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keyword">typename</span> SchemaDocumentType,</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">typename</span> OutputHandler,</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">typename</span> StateAllocator&gt;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html"> 145</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator&lt;SchemaDocument, BaseReaderHandler&lt;UTF8&lt;char&gt;</a>, <span class="keywordtype">void</span>&gt;, <a class="code" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a>&gt; <a class="code" href="classrapidjson_1_1_generic_schema_validator.html">SchemaValidator</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_RAPIDJSONFWD_H_</span></div><div class="ttc" id="structrapidjson_1_1_generic_string_stream_html"><div class="ttname"><a href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream</a></div><div class="ttdoc">Read-only string stream. </div><div class="ttdef"><b>Definition:</b> fwd.h:47</div></div>
<div class="ttc" id="classrapidjson_1_1_file_read_stream_html"><div class="ttname"><a href="classrapidjson_1_1_file_read_stream.html">rapidjson::FileReadStream</a></div><div class="ttdoc">File byte stream for input using fread(). </div><div class="ttdef"><b>Definition:</b> filereadstream.h:34</div></div>
-<div class="ttc" id="namespacerapidjson_html_aa65fc9fb381b2cbc54f98673eadd6505"><div class="ttname"><a href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">rapidjson::Value</a></div><div class="ttdeci">GenericValue&lt; UTF8&lt;&gt; &gt; Value</div><div class="ttdoc">GenericValue with UTF8 encoding. </div><div class="ttdef"><b>Definition:</b> document.h:2076</div></div>
+<div class="ttc" id="namespacerapidjson_html_aa65fc9fb381b2cbc54f98673eadd6505"><div class="ttname"><a href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">rapidjson::Value</a></div><div class="ttdeci">GenericValue&lt; UTF8&lt;&gt; &gt; Value</div><div class="ttdoc">GenericValue with UTF8 encoding </div><div class="ttdef"><b>Definition:</b> document.h:2076</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_reader_html"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html">rapidjson::GenericReader</a></div><div class="ttdoc">SAX-style JSON parser. Use Reader for UTF8 encoding and default allocator. </div><div class="ttdef"><b>Definition:</b> fwd.h:88</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_string_buffer_html"><div class="ttname"><a href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer</a></div><div class="ttdoc">Represents an in-memory output stream. </div><div class="ttdef"><b>Definition:</b> fwd.h:59</div></div>
<div class="ttc" id="classrapidjson_1_1_pretty_writer_html"><div class="ttname"><a href="classrapidjson_1_1_pretty_writer.html">rapidjson::PrettyWriter</a></div><div class="ttdoc">Writer with indentation and spacing. </div><div class="ttdef"><b>Definition:</b> fwd.h:100</div></div>
@@ -246,10 +96,10 @@ $(document).ready(function(){initNavTree('fwd_8h_source.html','');});
<div class="ttc" id="classrapidjson_1_1_generic_schema_document_html"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_document.html">rapidjson::GenericSchemaDocument</a></div><div class="ttdoc">JSON schema document. </div><div class="ttdef"><b>Definition:</b> fwd.h:136</div></div>
<div class="ttc" id="classrapidjson_1_1_i_generic_remote_schema_document_provider_html"><div class="ttname"><a href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">rapidjson::IGenericRemoteSchemaDocumentProvider</a></div><div class="ttdef"><b>Definition:</b> fwd.h:133</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument</a></div><div class="ttdoc">A document for parsing JSON text as DOM. </div><div class="ttdef"><b>Definition:</b> document.h:70</div></div>
-<div class="ttc" id="classrapidjson_1_1_writer_html"><div class="ttname"><a href="classrapidjson_1_1_writer.html">rapidjson::Writer</a></div><div class="ttdoc">JSON writer. </div><div class="ttdef"><b>Definition:</b> fwd.h:95</div></div>
+<div class="ttc" id="classrapidjson_1_1_writer_html"><div class="ttname"><a href="classrapidjson_1_1_writer.html">rapidjson::Writer</a></div><div class="ttdoc">JSON writer </div><div class="ttdef"><b>Definition:</b> fwd.h:95</div></div>
<div class="ttc" id="structrapidjson_1_1_base_reader_handler_html"><div class="ttname"><a href="structrapidjson_1_1_base_reader_handler.html">rapidjson::BaseReaderHandler</a></div><div class="ttdoc">Default implementation of Handler. </div><div class="ttdef"><b>Definition:</b> fwd.h:85</div></div>
<div class="ttc" id="rapidjson_8h_html"><div class="ttname"><a href="rapidjson_8h.html">rapidjson.h</a></div><div class="ttdoc">common definitions and configuration </div></div>
-<div class="ttc" id="namespacerapidjson_html_ace11b5b575baf1cccd5ba5f8586dcdc8"><div class="ttname"><a href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">rapidjson::Document</a></div><div class="ttdeci">GenericDocument&lt; UTF8&lt;&gt; &gt; Document</div><div class="ttdoc">GenericDocument with UTF8 encoding. </div><div class="ttdef"><b>Definition:</b> document.h:2468</div></div>
+<div class="ttc" id="namespacerapidjson_html_ace11b5b575baf1cccd5ba5f8586dcdc8"><div class="ttname"><a href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">rapidjson::Document</a></div><div class="ttdeci">GenericDocument&lt; UTF8&lt;&gt; &gt; Document</div><div class="ttdoc">GenericDocument with UTF8 encoding </div><div class="ttdef"><b>Definition:</b> document.h:2468</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_schema_validator_html"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator</a></div><div class="ttdoc">JSON Schema Validator. </div><div class="ttdef"><b>Definition:</b> fwd.h:145</div></div>
<div class="ttc" id="structrapidjson_1_1_u_t_f8_html"><div class="ttname"><a href="structrapidjson_1_1_u_t_f8.html">rapidjson::UTF8</a></div><div class="ttdoc">UTF-8 encoding. </div><div class="ttdef"><b>Definition:</b> encodings.h:96</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_string_ref_html"><div class="ttname"><a href="structrapidjson_1_1_generic_string_ref.html">rapidjson::GenericStringRef</a></div><div class="ttdoc">Reference to a constant string (not taking a copy) </div><div class="ttdef"><b>Definition:</b> document.h:257</div></div>
@@ -263,7 +113,7 @@ $(document).ready(function(){initNavTree('fwd_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>fwd.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>fwd.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/globals.html b/zh-cn/globals.html
index becd7236..083bb8d0 100644
--- a/zh-cn/globals.html
+++ b/zh-cn/globals.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 文件成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('globals.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/globals_defs.html b/zh-cn/globals_defs.html
index c95f58d3..89e9d108 100644
--- a/zh-cn/globals_defs.html
+++ b/zh-cn/globals_defs.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 文件成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('globals_defs.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html b/zh-cn/group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html
index bc2a48f7..7a456a12 100644
--- a/zh-cn/group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html
+++ b/zh-cn/group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: RapidJSON configuration</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -83,24 +84,24 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
</div><!--header-->
<div class="contents">
-<p>Configuration macros for library features.
+<p>Configuration macros for library features
<a href="#details">更多...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
宏定义</h2></td></tr>
-<tr class="memitem:gaf1ff1685be6cbebb5d4b2ab997776f45"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf1ff1685be6cbebb5d4b2ab997776f45"></a>
+<tr class="memitem:gaf1ff1685be6cbebb5d4b2ab997776f45"><td class="memItemLeft" align="right" valign="top"><a id="gaf1ff1685be6cbebb5d4b2ab997776f45"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf1ff1685be6cbebb5d4b2ab997776f45">RAPIDJSON_MAJOR_VERSION</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gaf1ff1685be6cbebb5d4b2ab997776f45"><td class="mdescLeft">&#160;</td><td class="mdescRight">Major version of RapidJSON in integer. <br /></td></tr>
<tr class="separator:gaf1ff1685be6cbebb5d4b2ab997776f45"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaf9125105c593a636a79f1c2d96835376"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf9125105c593a636a79f1c2d96835376"></a>
+<tr class="memitem:gaf9125105c593a636a79f1c2d96835376"><td class="memItemLeft" align="right" valign="top"><a id="gaf9125105c593a636a79f1c2d96835376"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf9125105c593a636a79f1c2d96835376">RAPIDJSON_MINOR_VERSION</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gaf9125105c593a636a79f1c2d96835376"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minor version of RapidJSON in integer. <br /></td></tr>
<tr class="separator:gaf9125105c593a636a79f1c2d96835376"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaf967d31be43666ce7f53756d73bd1cdf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf967d31be43666ce7f53756d73bd1cdf"></a>
+<tr class="memitem:gaf967d31be43666ce7f53756d73bd1cdf"><td class="memItemLeft" align="right" valign="top"><a id="gaf967d31be43666ce7f53756d73bd1cdf"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf967d31be43666ce7f53756d73bd1cdf">RAPIDJSON_PATCH_VERSION</a>&#160;&#160;&#160;0</td></tr>
<tr class="memdesc:gaf967d31be43666ce7f53756d73bd1cdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Patch version of RapidJSON in integer. <br /></td></tr>
<tr class="separator:gaf967d31be43666ce7f53756d73bd1cdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gad283cfde97d9a32b7d8e8107b11f70a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad283cfde97d9a32b7d8e8107b11f70a6"></a>
+<tr class="memitem:gad283cfde97d9a32b7d8e8107b11f70a6"><td class="memItemLeft" align="right" valign="top"><a id="gad283cfde97d9a32b7d8e8107b11f70a6"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gad283cfde97d9a32b7d8e8107b11f70a6">RAPIDJSON_VERSION_STRING</a>&#160;&#160;&#160;RAPIDJSON_STRINGIFY(<a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf967d31be43666ce7f53756d73bd1cdf">RAPIDJSON_MAJOR_VERSION.RAPIDJSON_MINOR_VERSION.RAPIDJSON_PATCH_VERSION</a>)</td></tr>
<tr class="memdesc:gad283cfde97d9a32b7d8e8107b11f70a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Version of RapidJSON in "&lt;major&gt;.&lt;minor&gt;.&lt;patch&gt;" string format. <br /></td></tr>
<tr class="separator:gad283cfde97d9a32b7d8e8107b11f70a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -108,7 +109,7 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
<tr class="memdesc:ga743a79d3af927391fe3eb5c979136899"><td class="mdescLeft">&#160;</td><td class="mdescRight">provide custom rapidjson namespace <a href="#ga743a79d3af927391fe3eb5c979136899">更多...</a><br /></td></tr>
<tr class="separator:ga743a79d3af927391fe3eb5c979136899"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2f2eef0ee4477f3fe5874703a66e997f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga2f2eef0ee4477f3fe5874703a66e997f">RAPIDJSON_HAS_STDSTRING</a></td></tr>
-<tr class="memdesc:ga2f2eef0ee4477f3fe5874703a66e997f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable RapidJSON support for <code>std::string</code>. <a href="#ga2f2eef0ee4477f3fe5874703a66e997f">更多...</a><br /></td></tr>
+<tr class="memdesc:ga2f2eef0ee4477f3fe5874703a66e997f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable RapidJSON support for <code>std::string</code> <a href="#ga2f2eef0ee4477f3fe5874703a66e997f">更多...</a><br /></td></tr>
<tr class="separator:ga2f2eef0ee4477f3fe5874703a66e997f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f4e50c35dae3b015390daa6d48ce23c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga7f4e50c35dae3b015390daa6d48ce23c">RAPIDJSON_NO_INT64DEFINE</a></td></tr>
<tr class="memdesc:ga7f4e50c35dae3b015390daa6d48ce23c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use external 64-bit integer types. <a href="#ga7f4e50c35dae3b015390daa6d48ce23c">更多...</a><br /></td></tr>
@@ -145,12 +146,14 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
<tr class="separator:ga1975595e2f1dc20a2d4859f340ac88c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<p>Configuration macros for library features. </p>
+<p>Configuration macros for library features </p>
<p>Some RapidJSON features are configurable to adapt the library to a wide variety of platforms, environments and usage scenarios. Most of the features can be configured in terms of overriden or predefined preprocessor macros at compile-time.</p>
<p>Some additional customization is available in the <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html">RapidJSON error handling</a> APIs.</p>
<dl class="section note"><dt>注解</dt><dd>These macros should be given on the compiler command-line (where applicable) to avoid inconsistent values when compiling different translation units of a single application. </dd></dl>
<h2 class="groupheader">宏定义说明</h2>
-<a class="anchor" id="ga93fb983f78208d12c822376e1ea6d185"></a>
+<a id="ga93fb983f78208d12c822376e1ea6d185"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga93fb983f78208d12c822376e1ea6d185">&#9670;&nbsp;</a></span>RAPIDJSON_48BITPOINTER_OPTIMIZATION</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -165,7 +168,9 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
</div>
</div>
-<a class="anchor" id="ga583915242504c7fdb36e826f02f76242"></a>
+<a id="ga583915242504c7fdb36e826f02f76242"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga583915242504c7fdb36e826f02f76242">&#9670;&nbsp;</a></span>RAPIDJSON_ALIGN</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -190,7 +195,9 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
</div>
</div>
-<a class="anchor" id="gabeba18d612187bad2ac62aed9276d47c"></a>
+<a id="gabeba18d612187bad2ac62aed9276d47c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gabeba18d612187bad2ac62aed9276d47c">&#9670;&nbsp;</a></span>RAPIDJSON_ASSERT</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -210,7 +217,9 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
</div>
</div>
-<a class="anchor" id="gaba2445f582142cf918e74c2d22d1aa07"></a>
+<a id="gaba2445f582142cf918e74c2d22d1aa07"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaba2445f582142cf918e74c2d22d1aa07">&#9670;&nbsp;</a></span>RAPIDJSON_ENDIAN</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -229,7 +238,9 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
</div>
</div>
-<a class="anchor" id="ga2f2eef0ee4477f3fe5874703a66e997f"></a>
+<a id="ga2f2eef0ee4477f3fe5874703a66e997f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2f2eef0ee4477f3fe5874703a66e997f">&#9670;&nbsp;</a></span>RAPIDJSON_HAS_STDSTRING</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -239,12 +250,14 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
</table>
</div><div class="memdoc">
-<p>Enable RapidJSON support for <code>std::string</code>. </p>
+<p>Enable RapidJSON support for <code>std::string</code> </p>
<p>By defining this preprocessor symbol to <code>1</code>, several convenience functions for using <a class="el" href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue</a> with <code>std::string</code> are enabled, especially for construction and comparison. </p>
</div>
</div>
-<a class="anchor" id="ga5dc14176a9e71ace282404b0bcda57a1"></a>
+<a id="ga5dc14176a9e71ace282404b0bcda57a1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga5dc14176a9e71ace282404b0bcda57a1">&#9670;&nbsp;</a></span>RAPIDJSON_LIKELY</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -268,7 +281,9 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
</div>
</div>
-<a class="anchor" id="ga743a79d3af927391fe3eb5c979136899"></a>
+<a id="ga743a79d3af927391fe3eb5c979136899"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga743a79d3af927391fe3eb5c979136899">&#9670;&nbsp;</a></span>RAPIDJSON_NAMESPACE</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -281,16 +296,13 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
<p>provide custom rapidjson namespace </p>
<p>In order to avoid symbol clashes and/or "One Definition Rule" errors between multiple inclusions of (different versions of) RapidJSON in a single binary, users can customize the name of the main RapidJSON namespace.</p>
<p>In case of a single nesting level, defining <code>RAPIDJSON_NAMESPACE</code> to a custom name (e.g. <code>MyRapidJSON</code>) is sufficient. If multiple levels are needed, both RAPIDJSON_NAMESPACE_BEGIN and RAPIDJSON_NAMESPACE_END need to be defined as well:</p>
-<div class="fragment"><div class="line"><span class="comment">// in some .cpp file</span></div>
-<div class="line"><span class="preprocessor">#define RAPIDJSON_NAMESPACE my::rapidjson</span></div>
-<div class="line"><span class="preprocessor">#define RAPIDJSON_NAMESPACE_BEGIN namespace my { namespace rapidjson {</span></div>
-<div class="line"><span class="preprocessor">#define RAPIDJSON_NAMESPACE_END } }</span></div>
-<div class="line"><span class="preprocessor">#include &quot;rapidjson/...&quot;</span></div>
-</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="namespacerapidjson.html" title="main RapidJSON namespace ">rapidjson</a> </dd></dl>
+<div class="fragment"><div class="line"><span class="comment">// in some .cpp file</span></div><div class="line"><span class="preprocessor">#define RAPIDJSON_NAMESPACE my::rapidjson</span></div><div class="line"><span class="preprocessor">#define RAPIDJSON_NAMESPACE_BEGIN namespace my { namespace rapidjson {</span></div><div class="line"><span class="preprocessor">#define RAPIDJSON_NAMESPACE_END } }</span></div><div class="line"><span class="preprocessor">#include &quot;rapidjson/...&quot;</span></div></div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="namespacerapidjson.html" title="main RapidJSON namespace ">rapidjson</a> </dd></dl>
</div>
</div>
-<a class="anchor" id="ga7f4e50c35dae3b015390daa6d48ce23c"></a>
+<a id="ga7f4e50c35dae3b015390daa6d48ce23c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7f4e50c35dae3b015390daa6d48ce23c">&#9670;&nbsp;</a></span>RAPIDJSON_NO_INT64DEFINE</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -306,7 +318,9 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
</div>
</div>
-<a class="anchor" id="ga250603aa9e2a12429b25ba0c8108ad4f"></a>
+<a id="ga250603aa9e2a12429b25ba0c8108ad4f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga250603aa9e2a12429b25ba0c8108ad4f">&#9670;&nbsp;</a></span>RAPIDJSON_NO_SIZETYPEDEFINE</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -317,14 +331,13 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
</div><div class="memdoc">
<p>User-provided <code>SizeType</code> definition. </p>
-<p>In order to avoid using 32-bit size types for indexing strings and arrays, define this preprocessor symbol and provide the type <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84" title="Size type (for string lengths, array sizes, etc.) ">rapidjson::SizeType</a> before including RapidJSON: </p><div class="fragment"><div class="line"><span class="preprocessor">#define RAPIDJSON_NO_SIZETYPEDEFINE</span></div>
-<div class="line"><span class="keyword">namespace </span>rapidjson { typedef ::std::size_t <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>; }</div>
-<div class="line"><span class="preprocessor">#include &quot;rapidjson/...&quot;</span></div>
-</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84" title="Size type (for string lengths, array sizes, etc.) ">rapidjson::SizeType</a> </dd></dl>
+<p>In order to avoid using 32-bit size types for indexing strings and arrays, define this preprocessor symbol and provide the type <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84" title="Size type (for string lengths, array sizes, etc.) ">rapidjson::SizeType</a> before including RapidJSON: </p><div class="fragment"><div class="line"><span class="preprocessor">#define RAPIDJSON_NO_SIZETYPEDEFINE</span></div><div class="line"><span class="keyword">namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a> { typedef ::std::size_t <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>; }</div><div class="line"><span class="preprocessor">#include &quot;rapidjson/...&quot;</span></div></div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84" title="Size type (for string lengths, array sizes, etc.) ">rapidjson::SizeType</a> </dd></dl>
</div>
</div>
-<a class="anchor" id="ga77005e892e6601599beaf421b0395c31"></a>
+<a id="ga77005e892e6601599beaf421b0395c31"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga77005e892e6601599beaf421b0395c31">&#9670;&nbsp;</a></span>RAPIDJSON_PARSE_DEFAULT_FLAGS</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -339,7 +352,9 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
</div>
</div>
-<a class="anchor" id="ga0ccf72f3ebc4b3306ab669f95ca5c64b"></a>
+<a id="ga0ccf72f3ebc4b3306ab669f95ca5c64b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga0ccf72f3ebc4b3306ab669f95ca5c64b">&#9670;&nbsp;</a></span>RAPIDJSON_SIMD</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -351,18 +366,15 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
<p>Enable SSE2/SSE4.2/Neon optimization. </p>
<p>RapidJSON supports optimized implementations for some parsing operations based on the SSE2, SSE4.2 or NEon SIMD extensions on modern Intel or ARM compatible processors.</p>
-<p>To enable these optimizations, three different symbols can be defined; </p><div class="fragment"><div class="line"><span class="comment">// Enable SSE2 optimization.</span></div>
-<div class="line"><span class="preprocessor">#define RAPIDJSON_SSE2</span></div>
-<div class="line"></div>
-<div class="line"><span class="comment">// Enable SSE4.2 optimization.</span></div>
-<div class="line"><span class="preprocessor">#define RAPIDJSON_SSE42</span></div>
-</div><!-- fragment --><p>Enable ARM Neon optimization. #define RAPIDJSON_NEON </p>
+<p>To enable these optimizations, three different symbols can be defined; </p><div class="fragment"><div class="line"><span class="comment">// Enable SSE2 optimization.</span></div><div class="line"><span class="preprocessor">#define RAPIDJSON_SSE2</span></div><div class="line"></div><div class="line"><span class="comment">// Enable SSE4.2 optimization.</span></div><div class="line"><span class="preprocessor">#define RAPIDJSON_SSE42</span></div></div><!-- fragment --><p>Enable ARM Neon optimization. #define RAPIDJSON_NEON </p>
<p><code>RAPIDJSON_SSE42</code> takes precedence over SSE2, if both are defined.</p>
<p>If any of these symbols is defined, RapidJSON defines the macro <code>RAPIDJSON_SIMD</code> to indicate the availability of the optimized code. </p>
</div>
</div>
-<a class="anchor" id="ga6a2b1695c13e77ae425e3cbac980ccb5"></a>
+<a id="ga6a2b1695c13e77ae425e3cbac980ccb5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6a2b1695c13e77ae425e3cbac980ccb5">&#9670;&nbsp;</a></span>RAPIDJSON_UNLIKELY</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -386,7 +398,9 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_
</div>
</div>
-<a class="anchor" id="ga1975595e2f1dc20a2d4859f340ac88c6"></a>
+<a id="ga1975595e2f1dc20a2d4859f340ac88c6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1975595e2f1dc20a2d4859f340ac88c6">&#9670;&nbsp;</a></span>RAPIDJSON_WRITE_DEFAULT_FLAGS</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
diff --git a/zh-cn/group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html b/zh-cn/group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html
index ed561a98..33f710f8 100644
--- a/zh-cn/group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html
+++ b/zh-cn/group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: RapidJSON error handling</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -101,19 +102,18 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_
<tr class="memitem:gabe2e1bd1349e5a7d6c1af78c05a98f0d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d">RAPIDJSON_ERROR_STRING</a>(x)&#160;&#160;&#160;x</td></tr>
<tr class="memdesc:gabe2e1bd1349e5a7d6c1af78c05a98f0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Macro for converting string literial to <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a>[]. <a href="#gabe2e1bd1349e5a7d6c1af78c05a98f0d">更多...</a><br /></td></tr>
<tr class="separator:gabe2e1bd1349e5a7d6c1af78c05a98f0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga7f8c4265b2edda78568ae3338aaf1461"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(parseErrorCode, offset)</td></tr>
+<tr class="memitem:ga7f8c4265b2edda78568ae3338aaf1461"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(parseErrorCode, offset)</td></tr>
<tr class="memdesc:ga7f8c4265b2edda78568ae3338aaf1461"><td class="mdescLeft">&#160;</td><td class="mdescRight">Macro to indicate a parse error. <a href="#ga7f8c4265b2edda78568ae3338aaf1461">更多...</a><br /></td></tr>
<tr class="separator:ga7f8c4265b2edda78568ae3338aaf1461"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gae3689840fa6e89a241313f33b602f865"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(parseErrorCode, offset)</td></tr>
+<tr class="memitem:gae3689840fa6e89a241313f33b602f865"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(parseErrorCode, offset)</td></tr>
<tr class="memdesc:gae3689840fa6e89a241313f33b602f865"><td class="mdescLeft">&#160;</td><td class="mdescRight">(Internal) macro to indicate and handle a parse error. <a href="#gae3689840fa6e89a241313f33b602f865">更多...</a><br /></td></tr>
<tr class="separator:gae3689840fa6e89a241313f33b602f865"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
类型定义</h2></td></tr>
-<tr class="memitem:ga4e77e464ec8abe1111ee581fc2cb00de"><td class="memItemLeft" align="right" valign="top">typedef const <br class="typebreak" />
-<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a> *(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga4e77e464ec8abe1111ee581fc2cb00de">rapidjson::GetParseErrorFunc</a> )(ParseErrorCode)</td></tr>
-<tr class="memdesc:ga4e77e464ec8abe1111ee581fc2cb00de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function pointer type of GetParseError(). <a href="#ga4e77e464ec8abe1111ee581fc2cb00de">更多...</a><br /></td></tr>
-<tr class="separator:ga4e77e464ec8abe1111ee581fc2cb00de"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac1bee7fdafeba5a85c27943fcde12882"><td class="memItemLeft" align="right" valign="top">typedef const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a> *(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gac1bee7fdafeba5a85c27943fcde12882">rapidjson::GetParseErrorFunc</a>) (<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a>)</td></tr>
+<tr class="memdesc:gac1bee7fdafeba5a85c27943fcde12882"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function pointer type of GetParseError(). <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gac1bee7fdafeba5a85c27943fcde12882">更多...</a><br /></td></tr>
+<tr class="separator:gac1bee7fdafeba5a85c27943fcde12882"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
枚举</h2></td></tr>
@@ -141,8 +141,8 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_
&#160;&#160;<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">rapidjson::kParseErrorTermination</a>,
<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24">rapidjson::kParseErrorUnspecificSyntaxError</a>
<br />
- }</td></tr>
-<tr class="memdesc:ga7d3acf640886b1f2552dc8c4cd6dea60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error code of parsing. <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">更多...</a><br /></td></tr>
+ }<tr class="memdesc:ga7d3acf640886b1f2552dc8c4cd6dea60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error code of parsing. <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">更多...</a><br /></td></tr>
+</td></tr>
<tr class="separator:ga7d3acf640886b1f2552dc8c4cd6dea60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gade540ee4cc2a416c23b8ee2c12393c7b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b">rapidjson::PointerParseErrorCode</a> { <br />
&#160;&#160;<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">rapidjson::kPointerParseErrorNone</a> = 0,
@@ -152,19 +152,21 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_
<br />
&#160;&#160;<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7bae244a98f53279fda5a750f847b81c54f">rapidjson::kPointerParseErrorCharacterMustPercentEncode</a>
<br />
- }</td></tr>
-<tr class="memdesc:gade540ee4cc2a416c23b8ee2c12393c7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error code of parsing. <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b">更多...</a><br /></td></tr>
+ }<tr class="memdesc:gade540ee4cc2a416c23b8ee2c12393c7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error code of parsing. <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b">更多...</a><br /></td></tr>
+</td></tr>
<tr class="separator:gade540ee4cc2a416c23b8ee2c12393c7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
函数</h2></td></tr>
-<tr class="memitem:gabdaf1a7a4db30fb0e3d927fdf0fabe79"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">rapidjson::GetParseError_En</a> (ParseErrorCode parseErrorCode)</td></tr>
-<tr class="memdesc:gabdaf1a7a4db30fb0e3d927fdf0fabe79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps error code of parsing into error message. <a href="#gabdaf1a7a4db30fb0e3d927fdf0fabe79">更多...</a><br /></td></tr>
+<tr class="memitem:gabdaf1a7a4db30fb0e3d927fdf0fabe79"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">rapidjson::GetParseError_En</a> (<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> parseErrorCode)</td></tr>
+<tr class="memdesc:gabdaf1a7a4db30fb0e3d927fdf0fabe79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps error code of parsing into error message. <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">更多...</a><br /></td></tr>
<tr class="separator:gabdaf1a7a4db30fb0e3d927fdf0fabe79"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<hr/><h2 class="groupheader">类说明</h2>
<a name="structrapidjson_1_1_parse_result" id="structrapidjson_1_1_parse_result"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#structrapidjson_1_1_parse_result">&#9670;&nbsp;</a></span>rapidjson::ParseResult</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -174,70 +176,63 @@ $(document).ready(function(){initNavTree('group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_
</table>
</div><div class="memdoc">
<div class="textblock"><p>Result of parsing (wraps ParseErrorCode) </p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> doc;</div>
-<div class="line"><a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0f03679d5fa2736d9e351541e767fac1">ParseResult</a> ok = doc.Parse(<span class="stringliteral">&quot;[42]&quot;</span>);</div>
-<div class="line"><span class="keywordflow">if</span> (!ok) {</div>
-<div class="line"> fprintf(stderr, <span class="stringliteral">&quot;JSON parse error: %s (%u)&quot;</span>,</div>
-<div class="line"> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">GetParseError_En</a>(ok.Code()), ok.Offset());</div>
-<div class="line"> exit(EXIT_FAILURE);</div>
-<div class="line">}</div>
-</div><!-- fragment --> <dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b" title="Parse JSON text. ">GenericReader::Parse</a>, <a class="el" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c" title="Parse JSON text from a read-only string (with Encoding conversion) ">GenericDocument::Parse</a> </dd></dl>
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> doc;</div><div class="line"><a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0f03679d5fa2736d9e351541e767fac1">ParseResult</a> ok = doc.Parse(<span class="stringliteral">&quot;[42]&quot;</span>);</div><div class="line"><span class="keywordflow">if</span> (!ok) {</div><div class="line"> fprintf(stderr, <span class="stringliteral">&quot;JSON parse error: %s (%u)&quot;</span>,</div><div class="line"> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">GetParseError_En</a>(ok.Code()), ok.Offset());</div><div class="line"> exit(EXIT_FAILURE);</div><div class="line">}</div></div><!-- fragment --> <dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b" title="Parse JSON text. ">GenericReader::Parse</a>, <a class="el" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c" title="Parse JSON text from a read-only string (with Encoding conversion) ">GenericDocument::Parse</a> </dd></dl>
</div><table class="memberdecls">
<tr><td colspan="2"><h3>Public 类型</h3></td></tr>
-<tr class="memitem:a59558cbb7ba917a1c3924d83ed2da0d9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59558cbb7ba917a1c3924d83ed2da0d9"></a>
-typedef bool(ParseResult::*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a59558cbb7ba917a1c3924d83ed2da0d9">BooleanType</a> )() const </td></tr>
-<tr class="memdesc:a59558cbb7ba917a1c3924d83ed2da0d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">! Unspecified boolean type <br /></td></tr>
-<tr class="separator:a59558cbb7ba917a1c3924d83ed2da0d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aff2daa285445bba8f76578ea274e34a3"><td class="memItemLeft" align="right" valign="top"><a id="aff2daa285445bba8f76578ea274e34a3"></a>
+typedef bool(ParseResult::*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#aff2daa285445bba8f76578ea274e34a3">BooleanType</a>) () const</td></tr>
+<tr class="memdesc:aff2daa285445bba8f76578ea274e34a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">! Unspecified boolean type <br /></td></tr>
+<tr class="separator:aff2daa285445bba8f76578ea274e34a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><h3>Public 成员函数</h3></td></tr>
-<tr class="memitem:a0f03679d5fa2736d9e351541e767fac1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f03679d5fa2736d9e351541e767fac1"></a>
+<tr class="memitem:a0f03679d5fa2736d9e351541e767fac1"><td class="memItemLeft" align="right" valign="top"><a id="a0f03679d5fa2736d9e351541e767fac1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0f03679d5fa2736d9e351541e767fac1">ParseResult</a> ()</td></tr>
<tr class="memdesc:a0f03679d5fa2736d9e351541e767fac1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor, no error. <br /></td></tr>
<tr class="separator:a0f03679d5fa2736d9e351541e767fac1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad15710045513f13ba526753c4a2cb59b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad15710045513f13ba526753c4a2cb59b"></a>
+<tr class="memitem:ad15710045513f13ba526753c4a2cb59b"><td class="memItemLeft" align="right" valign="top"><a id="ad15710045513f13ba526753c4a2cb59b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ad15710045513f13ba526753c4a2cb59b">ParseResult</a> (<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code, size_t offset)</td></tr>
<tr class="memdesc:ad15710045513f13ba526753c4a2cb59b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor to set an error. <br /></td></tr>
<tr class="separator:ad15710045513f13ba526753c4a2cb59b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a51cfd45c07e28aa4fdd78b55d86f0591"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a51cfd45c07e28aa4fdd78b55d86f0591"></a>
-<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a51cfd45c07e28aa4fdd78b55d86f0591">Code</a> () const </td></tr>
-<tr class="memdesc:a51cfd45c07e28aa4fdd78b55d86f0591"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the error code. <br /></td></tr>
-<tr class="separator:a51cfd45c07e28aa4fdd78b55d86f0591"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a056e5792c1554fbc05b5f1cc168d82ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a056e5792c1554fbc05b5f1cc168d82ae"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a056e5792c1554fbc05b5f1cc168d82ae">Offset</a> () const </td></tr>
-<tr class="memdesc:a056e5792c1554fbc05b5f1cc168d82ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the error offset, if <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a5ab5548c7a7776f4da20eac09fe57c1b">IsError()</a>, 0 otherwise. <br /></td></tr>
-<tr class="separator:a056e5792c1554fbc05b5f1cc168d82ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1743018526769d9b5b782fd7cffc9838"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1743018526769d9b5b782fd7cffc9838"></a>
-&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a1743018526769d9b5b782fd7cffc9838">operator BooleanType</a> () const </td></tr>
-<tr class="memdesc:a1743018526769d9b5b782fd7cffc9838"><td class="mdescLeft">&#160;</td><td class="mdescRight">Explicit conversion to <code>bool</code>, returns <code>true</code>, iff !<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a5ab5548c7a7776f4da20eac09fe57c1b">IsError()</a>. <br /></td></tr>
-<tr class="separator:a1743018526769d9b5b782fd7cffc9838"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5ab5548c7a7776f4da20eac09fe57c1b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5ab5548c7a7776f4da20eac09fe57c1b"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a5ab5548c7a7776f4da20eac09fe57c1b">IsError</a> () const </td></tr>
-<tr class="memdesc:a5ab5548c7a7776f4da20eac09fe57c1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether the result is an error. <br /></td></tr>
-<tr class="separator:a5ab5548c7a7776f4da20eac09fe57c1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3d6e37872d7da5f4a4c41e724c8c5c5f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3d6e37872d7da5f4a4c41e724c8c5c5f"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> &amp;that) const </td></tr>
-<tr class="separator:a3d6e37872d7da5f4a4c41e724c8c5c5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a11595b2d573f0299422678c5e3695479"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11595b2d573f0299422678c5e3695479"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator==</b> (<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code) const </td></tr>
-<tr class="separator:a11595b2d573f0299422678c5e3695479"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7766917944b27eec1ea2c2605f584ac5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7766917944b27eec1ea2c2605f584ac5"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> &amp;that) const </td></tr>
-<tr class="separator:a7766917944b27eec1ea2c2605f584ac5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:add4d4e2934a3b90cf6b6f765330e0d95"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add4d4e2934a3b90cf6b6f765330e0d95"></a>
-bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code) const </td></tr>
-<tr class="separator:add4d4e2934a3b90cf6b6f765330e0d95"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a17c9f7f81675283393222658d613000f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17c9f7f81675283393222658d613000f"></a>
+<tr class="memitem:a3c6a1f7b7dc21363a255eb10a3c0e00e"><td class="memItemLeft" align="right" valign="top"><a id="a3c6a1f7b7dc21363a255eb10a3c0e00e"></a>
+<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a3c6a1f7b7dc21363a255eb10a3c0e00e">Code</a> () const</td></tr>
+<tr class="memdesc:a3c6a1f7b7dc21363a255eb10a3c0e00e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the error code. <br /></td></tr>
+<tr class="separator:a3c6a1f7b7dc21363a255eb10a3c0e00e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a85036788b0cfd1c676900de6f8260bd6"><td class="memItemLeft" align="right" valign="top"><a id="a85036788b0cfd1c676900de6f8260bd6"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a85036788b0cfd1c676900de6f8260bd6">Offset</a> () const</td></tr>
+<tr class="memdesc:a85036788b0cfd1c676900de6f8260bd6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the error offset, if <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ab6d87c6ce9c849f35e902fbe23f485c4">IsError()</a>, 0 otherwise. <br /></td></tr>
+<tr class="separator:a85036788b0cfd1c676900de6f8260bd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af0936ace1dc9b674e9afb75ec6145b32"><td class="memItemLeft" align="right" valign="top"><a id="af0936ace1dc9b674e9afb75ec6145b32"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#af0936ace1dc9b674e9afb75ec6145b32">operator BooleanType</a> () const</td></tr>
+<tr class="memdesc:af0936ace1dc9b674e9afb75ec6145b32"><td class="mdescLeft">&#160;</td><td class="mdescRight">Explicit conversion to <code>bool</code>, returns <code>true</code>, iff !<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ab6d87c6ce9c849f35e902fbe23f485c4">IsError()</a>. <br /></td></tr>
+<tr class="separator:af0936ace1dc9b674e9afb75ec6145b32"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab6d87c6ce9c849f35e902fbe23f485c4"><td class="memItemLeft" align="right" valign="top"><a id="ab6d87c6ce9c849f35e902fbe23f485c4"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ab6d87c6ce9c849f35e902fbe23f485c4">IsError</a> () const</td></tr>
+<tr class="memdesc:ab6d87c6ce9c849f35e902fbe23f485c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether the result is an error. <br /></td></tr>
+<tr class="separator:ab6d87c6ce9c849f35e902fbe23f485c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a53e838c5114c4770b01ba5fb4fe2ec09"><td class="memItemLeft" align="right" valign="top"><a id="a53e838c5114c4770b01ba5fb4fe2ec09"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> &amp;that) const</td></tr>
+<tr class="separator:a53e838c5114c4770b01ba5fb4fe2ec09"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a512e065514f0c55c539ef70033a3f508"><td class="memItemLeft" align="right" valign="top"><a id="a512e065514f0c55c539ef70033a3f508"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator==</b> (<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code) const</td></tr>
+<tr class="separator:a512e065514f0c55c539ef70033a3f508"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac58540d291311724829cac7ead1bae79"><td class="memItemLeft" align="right" valign="top"><a id="ac58540d291311724829cac7ead1bae79"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> &amp;that) const</td></tr>
+<tr class="separator:ac58540d291311724829cac7ead1bae79"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a82fc3c16d5b670e8a86630c4feb730c1"><td class="memItemLeft" align="right" valign="top"><a id="a82fc3c16d5b670e8a86630c4feb730c1"></a>
+bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code) const</td></tr>
+<tr class="separator:a82fc3c16d5b670e8a86630c4feb730c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a17c9f7f81675283393222658d613000f"><td class="memItemLeft" align="right" valign="top"><a id="a17c9f7f81675283393222658d613000f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f">Clear</a> ()</td></tr>
<tr class="memdesc:a17c9f7f81675283393222658d613000f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reset error code. <br /></td></tr>
<tr class="separator:a17c9f7f81675283393222658d613000f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a40c0bd4d6c535c57acbb5c2e656bea38"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a40c0bd4d6c535c57acbb5c2e656bea38"></a>
+<tr class="memitem:a40c0bd4d6c535c57acbb5c2e656bea38"><td class="memItemLeft" align="right" valign="top"><a id="a40c0bd4d6c535c57acbb5c2e656bea38"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a40c0bd4d6c535c57acbb5c2e656bea38">Set</a> (<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code, size_t offset=0)</td></tr>
<tr class="memdesc:a40c0bd4d6c535c57acbb5c2e656bea38"><td class="mdescLeft">&#160;</td><td class="mdescRight">Update error code and offset. <br /></td></tr>
<tr class="separator:a40c0bd4d6c535c57acbb5c2e656bea38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><h3>友元</h3></td></tr>
-<tr class="memitem:a58c9982e833d1c74686506ac7449200c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a58c9982e833d1c74686506ac7449200c"></a>
+<tr class="memitem:a58c9982e833d1c74686506ac7449200c"><td class="memItemLeft" align="right" valign="top"><a id="a58c9982e833d1c74686506ac7449200c"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator==</b> (<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code, const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> &amp;err)</td></tr>
<tr class="separator:a58c9982e833d1c74686506ac7449200c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0498aebcfdd3d4a5dcb989ee29b93d4d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0498aebcfdd3d4a5dcb989ee29b93d4d"></a>
+<tr class="memitem:a0498aebcfdd3d4a5dcb989ee29b93d4d"><td class="memItemLeft" align="right" valign="top"><a id="a0498aebcfdd3d4a5dcb989ee29b93d4d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code, const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> &amp;err)</td></tr>
<tr class="separator:a0498aebcfdd3d4a5dcb989ee29b93d4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@@ -245,7 +240,9 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a cl
</div>
</div>
<h2 class="groupheader">宏定义说明</h2>
-<a class="anchor" id="ga7e4636fd48d0148f102b8a13f0539d8c"></a>
+<a id="ga7e4636fd48d0148f102b8a13f0539d8c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7e4636fd48d0148f102b8a13f0539d8c">&#9670;&nbsp;</a></span>RAPIDJSON_ERROR_CHARTYPE</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -260,7 +257,9 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a cl
</div>
</div>
-<a class="anchor" id="gabe2e1bd1349e5a7d6c1af78c05a98f0d"></a>
+<a id="gabe2e1bd1349e5a7d6c1af78c05a98f0d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gabe2e1bd1349e5a7d6c1af78c05a98f0d">&#9670;&nbsp;</a></span>RAPIDJSON_ERROR_STRING</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -279,7 +278,9 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a cl
</div>
</div>
-<a class="anchor" id="gae3689840fa6e89a241313f33b602f865"></a>
+<a id="gae3689840fa6e89a241313f33b602f865"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae3689840fa6e89a241313f33b602f865">&#9670;&nbsp;</a></span>RAPIDJSON_PARSE_ERROR</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -316,7 +317,9 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a cl
</div>
</div>
-<a class="anchor" id="ga7f8c4265b2edda78568ae3338aaf1461"></a>
+<a id="ga7f8c4265b2edda78568ae3338aaf1461"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7f8c4265b2edda78568ae3338aaf1461">&#9670;&nbsp;</a></span>RAPIDJSON_PARSE_ERROR_NORETURN</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -339,11 +342,7 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a cl
</tr>
</table>
</div><div class="memdoc">
-<b>值:</b><div class="fragment"><div class="line"><a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_MULTILINEMACRO_BEGIN \</a></div>
-<div class="line"><a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c"> RAPIDJSON_ASSERT</a>(!HasParseError()); <span class="comment">/* Error can only be assigned once */</span> \</div>
-<div class="line"> SetParseError(parseErrorCode, offset); \</div>
-<div class="line"> RAPIDJSON_MULTILINEMACRO_END</div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
+<b>值:</b><div class="fragment"><div class="line"><a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_MULTILINEMACRO_BEGIN \</a></div><div class="line"><a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c"> RAPIDJSON_ASSERT</a>(!HasParseError()); <span class="comment">/* Error can only be assigned once */</span> \</div><div class="line"> SetParseError(parseErrorCode, offset); \</div><div class="line"> RAPIDJSON_MULTILINEMACRO_END</div><div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
</div><!-- fragment -->
<p>Macro to indicate a parse error. </p>
<dl class="params"><dt>参数</dt><dd>
@@ -355,41 +354,31 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a cl
</dl>
<p>This macros can be used as a customization point for the internal error handling mechanism of RapidJSON.</p>
<p>A common usage model is to throw an exception instead of requiring the caller to explicitly check the <a class="el" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b">rapidjson::GenericReader::Parse</a>'s return value:</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#define RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode,offset) \</span></div>
-<div class="line"><span class="preprocessor"> throw ParseException(parseErrorCode, #parseErrorCode, offset)</span></div>
-<div class="line"></div>
-<div class="line"><span class="preprocessor">#include &lt;stdexcept&gt;</span> <span class="comment">// std::runtime_error</span></div>
-<div class="line"><span class="preprocessor">#include &quot;<a class="code" href="error_8h.html">rapidjson/error/error.h</a>&quot;</span> <span class="comment">// rapidjson::ParseResult</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">struct </span>ParseException : std::runtime_error, <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">rapidjson::ParseResult</a> {</div>
-<div class="line"> ParseException(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">rapidjson::ParseErrorCode</a> code, <span class="keyword">const</span> <span class="keywordtype">char</span>* msg, <span class="keywordtype">size_t</span> offset)</div>
-<div class="line"> : std::runtime_error(msg), ParseResult(code, offset) {}</div>
-<div class="line">};</div>
-<div class="line"></div>
-<div class="line"><span class="preprocessor">#include &quot;<a class="code" href="reader_8h.html">rapidjson/reader.h</a>&quot;</span></div>
-</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865" title="(Internal) macro to indicate and handle a parse error. ">RAPIDJSON_PARSE_ERROR</a>, <a class="el" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b" title="Parse JSON text. ">rapidjson::GenericReader::Parse</a> </dd></dl>
+<div class="fragment"><div class="line"><span class="preprocessor">#define RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode,offset) \</span></div><div class="line"><span class="preprocessor"> throw ParseException(parseErrorCode, #parseErrorCode, offset)</span></div><div class="line"></div><div class="line"><span class="preprocessor">#include &lt;stdexcept&gt;</span> <span class="comment">// std::runtime_error</span></div><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="error_8h.html">rapidjson/error/error.h</a>&quot;</span> <span class="comment">// rapidjson::ParseResult</span></div><div class="line"></div><div class="line"><span class="keyword">struct </span>ParseException : std::runtime_error, <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">rapidjson::ParseResult</a> {</div><div class="line"> ParseException(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">rapidjson::ParseErrorCode</a> code, <span class="keyword">const</span> <span class="keywordtype">char</span>* msg, <span class="keywordtype">size_t</span> offset)</div><div class="line"> : std::runtime_error(msg), ParseResult(code, offset) {}</div><div class="line">};</div><div class="line"></div><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="reader_8h.html">rapidjson/reader.h</a>&quot;</span></div></div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865" title="(Internal) macro to indicate and handle a parse error. ">RAPIDJSON_PARSE_ERROR</a>, <a class="el" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b" title="Parse JSON text. ">rapidjson::GenericReader::Parse</a> </dd></dl>
</div>
</div>
<h2 class="groupheader">类型定义说明</h2>
-<a class="anchor" id="ga4e77e464ec8abe1111ee581fc2cb00de"></a>
+<a id="gac1bee7fdafeba5a85c27943fcde12882"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac1bee7fdafeba5a85c27943fcde12882">&#9670;&nbsp;</a></span>GetParseErrorFunc</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
- <td class="memname">typedef const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a>*(* rapidjson::GetParseErrorFunc)(ParseErrorCode)</td>
+ <td class="memname">typedef const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a>*(* rapidjson::GetParseErrorFunc) (<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a>)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Function pointer type of GetParseError(). </p>
-<p>This is the prototype for <code>GetParseError_X()</code>, where <code>X</code> is a locale. User can dynamically change locale in runtime, e.g.: </p><div class="fragment"><div class="line"><a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga4e77e464ec8abe1111ee581fc2cb00de">GetParseErrorFunc</a> GetParseError = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">GetParseError_En</a>; <span class="comment">// or whatever</span></div>
-<div class="line"><span class="keyword">const</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a>* s = GetParseError(document.GetParseErrorCode());</div>
-</div><!-- fragment -->
+<p>This is the prototype for <code>GetParseError_X()</code>, where <code>X</code> is a locale. User can dynamically change locale in runtime, e.g.: </p><div class="fragment"><div class="line"><a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gac1bee7fdafeba5a85c27943fcde12882">GetParseErrorFunc</a> GetParseError = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">GetParseError_En</a>; <span class="comment">// or whatever</span></div><div class="line"><span class="keyword">const</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a>* s = GetParseError(document.GetParseErrorCode());</div></div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">枚举类型说明</h2>
-<a class="anchor" id="ga7d3acf640886b1f2552dc8c4cd6dea60"></a>
+<a id="ga7d3acf640886b1f2552dc8c4cd6dea60"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7d3acf640886b1f2552dc8c4cd6dea60">&#9670;&nbsp;</a></span>ParseErrorCode</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -400,67 +389,51 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a cl
</div><div class="memdoc">
<p>Error code of parsing. </p>
-<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b" title="Parse JSON text. ">GenericReader::Parse</a>, <a class="el" href="classrapidjson_1_1_generic_reader.html#a40fd326bad7d7033f096b549cbf159db" title="Get the ParseErrorCode of last parsing. ">GenericReader::GetParseErrorCode</a> </dd></dl>
+<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b" title="Parse JSON text. ">GenericReader::Parse</a>, <a class="el" href="classrapidjson_1_1_generic_reader.html#a042c621cf745c5ed3a6f5ff9418dd05e" title="Get the ParseErrorCode of last parsing. ">GenericReader::GetParseErrorCode</a> </dd></dl>
<table class="fieldtable">
-<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f"></a>kParseErrorNone&#160;</td><td class="fielddoc">
-<p>No error. </p>
+<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f"></a>kParseErrorNone&#160;</td><td class="fielddoc"><p>No error. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286"></a>kParseErrorDocumentEmpty&#160;</td><td class="fielddoc">
-<p>The document is empty. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286"></a>kParseErrorDocumentEmpty&#160;</td><td class="fielddoc"><p>The document is empty. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5"></a>kParseErrorDocumentRootNotSingular&#160;</td><td class="fielddoc">
-<p>The document root must not follow by other values. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5"></a>kParseErrorDocumentRootNotSingular&#160;</td><td class="fielddoc"><p>The document root must not follow by other values. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57"></a>kParseErrorValueInvalid&#160;</td><td class="fielddoc">
-<p>Invalid value. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57"></a>kParseErrorValueInvalid&#160;</td><td class="fielddoc"><p>Invalid value. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242"></a>kParseErrorObjectMissName&#160;</td><td class="fielddoc">
-<p>Missing a name for object member. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242"></a>kParseErrorObjectMissName&#160;</td><td class="fielddoc"><p>Missing a name for object member. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c"></a>kParseErrorObjectMissColon&#160;</td><td class="fielddoc">
-<p>Missing a colon after a name of object member. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c"></a>kParseErrorObjectMissColon&#160;</td><td class="fielddoc"><p>Missing a colon after a name of object member. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73"></a>kParseErrorObjectMissCommaOrCurlyBracket&#160;</td><td class="fielddoc">
-<p>Missing a comma or '}' after an object member. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73"></a>kParseErrorObjectMissCommaOrCurlyBracket&#160;</td><td class="fielddoc"><p>Missing a comma or '}' after an object member. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93"></a>kParseErrorArrayMissCommaOrSquareBracket&#160;</td><td class="fielddoc">
-<p>Missing a comma or ']' after an array element. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93"></a>kParseErrorArrayMissCommaOrSquareBracket&#160;</td><td class="fielddoc"><p>Missing a comma or ']' after an array element. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60a23c38bf88b8448555c0eb41e1735bd92"></a>kParseErrorStringUnicodeEscapeInvalidHex&#160;</td><td class="fielddoc">
-<p>Incorrect hex digit after \u escape in string. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60a23c38bf88b8448555c0eb41e1735bd92"></a>kParseErrorStringUnicodeEscapeInvalidHex&#160;</td><td class="fielddoc"><p>Incorrect hex digit after \u escape in string. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386"></a>kParseErrorStringUnicodeSurrogateInvalid&#160;</td><td class="fielddoc">
-<p>The surrogate pair in string is invalid. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386"></a>kParseErrorStringUnicodeSurrogateInvalid&#160;</td><td class="fielddoc"><p>The surrogate pair in string is invalid. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60a8dd0af5e6103a6503c61c38cb2b0bab9"></a>kParseErrorStringEscapeInvalid&#160;</td><td class="fielddoc">
-<p>Invalid escape character in string. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60a8dd0af5e6103a6503c61c38cb2b0bab9"></a>kParseErrorStringEscapeInvalid&#160;</td><td class="fielddoc"><p>Invalid escape character in string. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60af7daa91caa53abb881ea231a874a4f40"></a>kParseErrorStringMissQuotationMark&#160;</td><td class="fielddoc">
-<p>Missing a closing quotation mark in string. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60af7daa91caa53abb881ea231a874a4f40"></a>kParseErrorStringMissQuotationMark&#160;</td><td class="fielddoc"><p>Missing a closing quotation mark in string. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f"></a>kParseErrorStringInvalidEncoding&#160;</td><td class="fielddoc">
-<p>Invalid encoding in string. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f"></a>kParseErrorStringInvalidEncoding&#160;</td><td class="fielddoc"><p>Invalid encoding in string. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805"></a>kParseErrorNumberTooBig&#160;</td><td class="fielddoc">
-<p>Number too big to be stored in double. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805"></a>kParseErrorNumberTooBig&#160;</td><td class="fielddoc"><p>Number too big to be stored in double. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60ac840ece3ba6874fe6f16c01ebb71031f"></a>kParseErrorNumberMissFraction&#160;</td><td class="fielddoc">
-<p>Miss fraction part in number. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60ac840ece3ba6874fe6f16c01ebb71031f"></a>kParseErrorNumberMissFraction&#160;</td><td class="fielddoc"><p>Miss fraction part in number. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7"></a>kParseErrorNumberMissExponent&#160;</td><td class="fielddoc">
-<p>Miss exponent in number. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7"></a>kParseErrorNumberMissExponent&#160;</td><td class="fielddoc"><p>Miss exponent in number. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50"></a>kParseErrorTermination&#160;</td><td class="fielddoc">
-<p>Parsing was terminated. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50"></a>kParseErrorTermination&#160;</td><td class="fielddoc"><p>Parsing was terminated. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24"></a>kParseErrorUnspecificSyntaxError&#160;</td><td class="fielddoc">
-<p>Unspecific syntax error. </p>
+<tr><td class="fieldname"><a id="gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24"></a>kParseErrorUnspecificSyntaxError&#160;</td><td class="fielddoc"><p>Unspecific syntax error. </p>
</td></tr>
</table>
</div>
</div>
-<a class="anchor" id="gade540ee4cc2a416c23b8ee2c12393c7b"></a>
+<a id="gade540ee4cc2a416c23b8ee2c12393c7b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gade540ee4cc2a416c23b8ee2c12393c7b">&#9670;&nbsp;</a></span>PointerParseErrorCode</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -471,29 +444,26 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a cl
</div><div class="memdoc">
<p>Error code of parsing. </p>
-<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_pointer.html#aa077ce171ea25cf501c12f2d5df7f248" title="Default constructor. ">GenericPointer::GenericPointer</a>, <a class="el" href="classrapidjson_1_1_generic_pointer.html#ac817b123619422f03c44a46978d9fbd0" title="Get the parsing error code. ">GenericPointer::GetParseErrorCode</a> </dd></dl>
+<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_pointer.html#aa077ce171ea25cf501c12f2d5df7f248" title="Default constructor. ">GenericPointer::GenericPointer</a>, <a class="el" href="classrapidjson_1_1_generic_pointer.html#af649a48d77aa856cddaa748ad6b0d6ac" title="Get the parsing error code. ">GenericPointer::GetParseErrorCode</a> </dd></dl>
<table class="fieldtable">
-<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a class="anchor" id="ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b"></a>kPointerParseErrorNone&#160;</td><td class="fielddoc">
-<p>The parse is successful. </p>
+<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b"></a>kPointerParseErrorNone&#160;</td><td class="fielddoc"><p>The parse is successful </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ggade540ee4cc2a416c23b8ee2c12393c7ba2f2f8b238e201b7d540e8914bbfd2bed"></a>kPointerParseErrorTokenMustBeginWithSolidus&#160;</td><td class="fielddoc">
-<p>A token must begin with a '/'. </p>
+<tr><td class="fieldname"><a id="ggade540ee4cc2a416c23b8ee2c12393c7ba2f2f8b238e201b7d540e8914bbfd2bed"></a>kPointerParseErrorTokenMustBeginWithSolidus&#160;</td><td class="fielddoc"><p>A token must begin with a '/' </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ggade540ee4cc2a416c23b8ee2c12393c7ba907c9fe4e541b257513e3a18635379f7"></a>kPointerParseErrorInvalidEscape&#160;</td><td class="fielddoc">
-<p>Invalid escape. </p>
+<tr><td class="fieldname"><a id="ggade540ee4cc2a416c23b8ee2c12393c7ba907c9fe4e541b257513e3a18635379f7"></a>kPointerParseErrorInvalidEscape&#160;</td><td class="fielddoc"><p>Invalid escape </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ggade540ee4cc2a416c23b8ee2c12393c7ba29831a02b8ee23a05d552b47f4d64d28"></a>kPointerParseErrorInvalidPercentEncoding&#160;</td><td class="fielddoc">
-<p>Invalid percent encoding in URI fragment. </p>
+<tr><td class="fieldname"><a id="ggade540ee4cc2a416c23b8ee2c12393c7ba29831a02b8ee23a05d552b47f4d64d28"></a>kPointerParseErrorInvalidPercentEncoding&#160;</td><td class="fielddoc"><p>Invalid percent encoding in URI fragment </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ggade540ee4cc2a416c23b8ee2c12393c7bae244a98f53279fda5a750f847b81c54f"></a>kPointerParseErrorCharacterMustPercentEncode&#160;</td><td class="fielddoc">
-<p>A character must percent encoded in URI fragment. </p>
+<tr><td class="fieldname"><a id="ggade540ee4cc2a416c23b8ee2c12393c7bae244a98f53279fda5a750f847b81c54f"></a>kPointerParseErrorCharacterMustPercentEncode&#160;</td><td class="fielddoc"><p>A character must percent encoded in URI fragment </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">函数说明</h2>
-<a class="anchor" id="gabdaf1a7a4db30fb0e3d927fdf0fabe79"></a>
+<a id="gabdaf1a7a4db30fb0e3d927fdf0fabe79"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gabdaf1a7a4db30fb0e3d927fdf0fabe79">&#9670;&nbsp;</a></span>GetParseError_En()</h2>
+
<div class="memitem">
<div class="memproto">
<table class="mlabels">
@@ -503,7 +473,7 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (<a cl
<tr>
<td class="memname">const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a>* rapidjson::GetParseError_En </td>
<td>(</td>
- <td class="paramtype">ParseErrorCode&#160;</td>
+ <td class="paramtype"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a>&#160;</td>
<td class="paramname"><em>parseErrorCode</em></td><td>)</td>
<td></td>
</tr>
diff --git a/zh-cn/group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.js b/zh-cn/group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.js
index 8333c741..43dd9a3a 100644
--- a/zh-cn/group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.js
+++ b/zh-cn/group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.js
@@ -1,18 +1,18 @@
var group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s =
[
[ "ParseResult", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result", [
- [ "BooleanType", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a59558cbb7ba917a1c3924d83ed2da0d9", null ],
+ [ "BooleanType", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#aff2daa285445bba8f76578ea274e34a3", null ],
[ "ParseResult", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0f03679d5fa2736d9e351541e767fac1", null ],
[ "ParseResult", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ad15710045513f13ba526753c4a2cb59b", null ],
[ "Clear", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f", null ],
- [ "Code", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a51cfd45c07e28aa4fdd78b55d86f0591", null ],
- [ "IsError", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a5ab5548c7a7776f4da20eac09fe57c1b", null ],
- [ "Offset", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a056e5792c1554fbc05b5f1cc168d82ae", null ],
- [ "operator BooleanType", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a1743018526769d9b5b782fd7cffc9838", null ],
- [ "operator!=", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a7766917944b27eec1ea2c2605f584ac5", null ],
- [ "operator!=", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#add4d4e2934a3b90cf6b6f765330e0d95", null ],
- [ "operator==", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a3d6e37872d7da5f4a4c41e724c8c5c5f", null ],
- [ "operator==", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a11595b2d573f0299422678c5e3695479", null ],
+ [ "Code", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a3c6a1f7b7dc21363a255eb10a3c0e00e", null ],
+ [ "IsError", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ab6d87c6ce9c849f35e902fbe23f485c4", null ],
+ [ "Offset", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a85036788b0cfd1c676900de6f8260bd6", null ],
+ [ "operator BooleanType", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#af0936ace1dc9b674e9afb75ec6145b32", null ],
+ [ "operator!=", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ac58540d291311724829cac7ead1bae79", null ],
+ [ "operator!=", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a82fc3c16d5b670e8a86630c4feb730c1", null ],
+ [ "operator==", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a53e838c5114c4770b01ba5fb4fe2ec09", null ],
+ [ "operator==", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a512e065514f0c55c539ef70033a3f508", null ],
[ "Set", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a40c0bd4d6c535c57acbb5c2e656bea38", null ],
[ "operator!=", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0498aebcfdd3d4a5dcb989ee29b93d4d", null ],
[ "operator==", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a58c9982e833d1c74686506ac7449200c", null ]
@@ -21,7 +21,7 @@ var group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s =
[ "RAPIDJSON_ERROR_STRING", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d", null ],
[ "RAPIDJSON_PARSE_ERROR", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865", null ],
[ "RAPIDJSON_PARSE_ERROR_NORETURN", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461", null ],
- [ "GetParseErrorFunc", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga4e77e464ec8abe1111ee581fc2cb00de", null ],
+ [ "GetParseErrorFunc", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gac1bee7fdafeba5a85c27943fcde12882", null ],
[ "ParseErrorCode", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60", [
[ "kParseErrorNone", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f", null ],
[ "kParseErrorDocumentEmpty", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286", null ],
diff --git a/zh-cn/group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_structrapidjson_1_1_parse_result.js b/zh-cn/group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_structrapidjson_1_1_parse_result.js
index 36745db6..371d512a 100644
--- a/zh-cn/group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_structrapidjson_1_1_parse_result.js
+++ b/zh-cn/group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_structrapidjson_1_1_parse_result.js
@@ -1,17 +1,17 @@
var group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_structrapidjson_1_1_parse_result =
[
- [ "BooleanType", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a59558cbb7ba917a1c3924d83ed2da0d9", null ],
+ [ "BooleanType", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#aff2daa285445bba8f76578ea274e34a3", null ],
[ "ParseResult", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0f03679d5fa2736d9e351541e767fac1", null ],
[ "ParseResult", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ad15710045513f13ba526753c4a2cb59b", null ],
[ "Clear", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f", null ],
- [ "Code", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a51cfd45c07e28aa4fdd78b55d86f0591", null ],
- [ "IsError", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a5ab5548c7a7776f4da20eac09fe57c1b", null ],
- [ "Offset", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a056e5792c1554fbc05b5f1cc168d82ae", null ],
- [ "operator BooleanType", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a1743018526769d9b5b782fd7cffc9838", null ],
- [ "operator!=", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a7766917944b27eec1ea2c2605f584ac5", null ],
- [ "operator!=", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#add4d4e2934a3b90cf6b6f765330e0d95", null ],
- [ "operator==", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a3d6e37872d7da5f4a4c41e724c8c5c5f", null ],
- [ "operator==", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a11595b2d573f0299422678c5e3695479", null ],
+ [ "Code", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a3c6a1f7b7dc21363a255eb10a3c0e00e", null ],
+ [ "IsError", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ab6d87c6ce9c849f35e902fbe23f485c4", null ],
+ [ "Offset", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a85036788b0cfd1c676900de6f8260bd6", null ],
+ [ "operator BooleanType", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#af0936ace1dc9b674e9afb75ec6145b32", null ],
+ [ "operator!=", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ac58540d291311724829cac7ead1bae79", null ],
+ [ "operator!=", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a82fc3c16d5b670e8a86630c4feb730c1", null ],
+ [ "operator==", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a53e838c5114c4770b01ba5fb4fe2ec09", null ],
+ [ "operator==", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a512e065514f0c55c539ef70033a3f508", null ],
[ "Set", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a40c0bd4d6c535c57acbb5c2e656bea38", null ],
[ "operator!=", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0498aebcfdd3d4a5dcb989ee29b93d4d", null ],
[ "operator==", "group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a58c9982e833d1c74686506ac7449200c", null ]
diff --git a/zh-cn/hierarchy.html b/zh-cn/hierarchy.html
index 6d13ab66..eeb59871 100644
--- a/zh-cn/hierarchy.html
+++ b/zh-cn/hierarchy.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 类继承关系</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('hierarchy.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -97,11 +98,11 @@ $(document).ready(function(){initNavTree('hierarchy.html','');});
<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_encoding.html" target="_self">rapidjson::Encoding</a></td><td class="desc">Concept for encoding of Unicode characters </td></tr>
<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_file_read_stream.html" target="_self">rapidjson::FileReadStream</a></td><td class="desc">File byte stream for input using fread() </td></tr>
<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_file_write_stream.html" target="_self">rapidjson::FileWriteStream</a></td><td class="desc">Wrapper of C file stream for input using fread() </td></tr>
-<tr id="row_15_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_generic_array.html" target="_self">rapidjson::GenericArray&lt; bool, typename &gt;</a></td><td class="desc">Helper class for accessing Value of array type </td></tr>
+<tr id="row_15_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_generic_array.html" target="_self">rapidjson::GenericArray&lt; Const, ValueT &gt;</a></td><td class="desc">Helper class for accessing Value of array type </td></tr>
<tr id="row_16_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrapidjson_1_1_generic_insitu_string_stream.html" target="_self">rapidjson::GenericInsituStringStream&lt; Encoding &gt;</a></td><td class="desc">A read-write string stream </td></tr>
<tr id="row_17_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrapidjson_1_1_generic_member.html" target="_self">rapidjson::GenericMember&lt; Encoding, Allocator &gt;</a></td><td class="desc">Name-value pair in a JSON object value </td></tr>
<tr id="row_18_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrapidjson_1_1_generic_memory_buffer.html" target="_self">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a></td><td class="desc">Represents an in-memory output byte stream </td></tr>
-<tr id="row_19_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_generic_object.html" target="_self">rapidjson::GenericObject&lt; bool, typename &gt;</a></td><td class="desc">Helper class for accessing Value of object type </td></tr>
+<tr id="row_19_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_generic_object.html" target="_self">rapidjson::GenericObject&lt; Const, ValueT &gt;</a></td><td class="desc">Helper class for accessing Value of object type </td></tr>
<tr id="row_20_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_generic_pointer.html" target="_self">rapidjson::GenericPointer&lt; ValueType, Allocator &gt;</a></td><td class="desc">Represents a JSON Pointer. Use Pointer for <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding and default allocator </td></tr>
<tr id="row_21_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_generic_reader.html" target="_self">rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;</a></td><td class="desc">SAX-style JSON parser. Use <a class="el" href="md_doc_sax_8zh-cn.html#Reader">Reader</a> for <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding and default allocator </td></tr>
<tr id="row_22_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_generic_schema_document.html" target="_self">rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;</a></td><td class="desc">JSON schema document </td></tr>
@@ -141,7 +142,7 @@ $(document).ready(function(){initNavTree('hierarchy.html','');});
<tr id="row_48_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrapidjson_1_1_u_t_f32_l_e.html" target="_self">rapidjson::UTF32LE&lt; CharType &gt;</a></td><td class="desc">UTF-32 little endian enocoding </td></tr>
<tr id="row_49_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structrapidjson_1_1_u_t_f8.html" target="_self">rapidjson::UTF8&lt; CharType &gt;</a></td><td class="desc">UTF-8 encoding </td></tr>
<tr id="row_50_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_50_" class="arrow" onclick="toggleFolder('50_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_writer.html" target="_self">rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="desc">JSON writer </td></tr>
-<tr id="row_50_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_pretty_writer.html" target="_self">rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="desc"><a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer. ">Writer</a> with indentation and spacing </td></tr>
+<tr id="row_50_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classrapidjson_1_1_pretty_writer.html" target="_self">rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;</a></td><td class="desc"><a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer ">Writer</a> with indentation and spacing </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
diff --git a/zh-cn/hierarchy.js b/zh-cn/hierarchy.js
index 82bcc66e..e768a980 100644
--- a/zh-cn/hierarchy.js
+++ b/zh-cn/hierarchy.js
@@ -15,11 +15,11 @@ var hierarchy =
[ "rapidjson::Encoding", "classrapidjson_1_1_encoding.html", null ],
[ "rapidjson::FileReadStream", "classrapidjson_1_1_file_read_stream.html", null ],
[ "rapidjson::FileWriteStream", "classrapidjson_1_1_file_write_stream.html", null ],
- [ "rapidjson::GenericArray< bool, typename >", "classrapidjson_1_1_generic_array.html", null ],
+ [ "rapidjson::GenericArray< Const, ValueT >", "classrapidjson_1_1_generic_array.html", null ],
[ "rapidjson::GenericInsituStringStream< Encoding >", "structrapidjson_1_1_generic_insitu_string_stream.html", null ],
[ "rapidjson::GenericMember< Encoding, Allocator >", "structrapidjson_1_1_generic_member.html", null ],
[ "rapidjson::GenericMemoryBuffer< Allocator >", "structrapidjson_1_1_generic_memory_buffer.html", null ],
- [ "rapidjson::GenericObject< bool, typename >", "classrapidjson_1_1_generic_object.html", null ],
+ [ "rapidjson::GenericObject< Const, ValueT >", "classrapidjson_1_1_generic_object.html", null ],
[ "rapidjson::GenericPointer< ValueType, Allocator >", "classrapidjson_1_1_generic_pointer.html", null ],
[ "rapidjson::GenericReader< SourceEncoding, TargetEncoding, StackAllocator >", "classrapidjson_1_1_generic_reader.html", null ],
[ "rapidjson::GenericSchemaDocument< ValueT, Allocator >", "classrapidjson_1_1_generic_schema_document.html", null ],
diff --git a/zh-cn/ieee754_8h_source.html b/zh-cn/ieee754_8h_source.html
index 52c81d7e..22b08627 100644
--- a/zh-cn/ieee754_8h_source.html
+++ b/zh-cn/ieee754_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/internal/ieee754.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('ieee754_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,85 +81,7 @@ $(document).ready(function(){initNavTree('ieee754_8h_source.html','');});
<div class="title">ieee754.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_IEEE754_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_IEEE754_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">class </span>Double {</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; Double() {}</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; Double(<span class="keywordtype">double</span> d) : d_(d) {}</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; Double(uint64_t u) : u_(u) {}</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordtype">double</span> <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> d_; }</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; uint64_t Uint64Value()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> u_; }</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">double</span> NextPositiveDouble()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!Sign());</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">return</span> Double(u_ + 1).Value();</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">bool</span> Sign()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (u_ &amp; kSignMask) != 0; }</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; uint64_t Significand()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> u_ &amp; kSignificandMask; }</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">int</span> Exponent()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(((u_ &amp; kExponentMask) &gt;&gt; kSignificandSize) - kExponentBias); }</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">bool</span> IsNan()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (u_ &amp; kExponentMask) == kExponentMask &amp;&amp; Significand() != 0; }</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">bool</span> IsInf()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (u_ &amp; kExponentMask) == kExponentMask &amp;&amp; Significand() == 0; }</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">bool</span> IsNanOrInf()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (u_ &amp; kExponentMask) == kExponentMask; }</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">bool</span> IsNormal()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (u_ &amp; kExponentMask) != 0 || Significand() == 0; }</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">bool</span> IsZero()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (u_ &amp; (kExponentMask | kSignificandMask)) == 0; }</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; uint64_t IntegerSignificand()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> IsNormal() ? Significand() | kHiddenBit : Significand(); }</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">int</span> IntegerExponent()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (IsNormal() ? Exponent() : kDenormalExponent) - kSignificandSize; }</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; uint64_t ToBias()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (u_ &amp; kSignMask) ? ~u_ + 1 : u_ | kSignMask; }</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> EffectiveSignificandSize(<span class="keywordtype">int</span> order) {</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span> (order &gt;= -1021)</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> 53;</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (order &lt;= -1074)</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> order + 1074;</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kSignificandSize = 52;</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kExponentBias = 0x3FF;</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDenormalExponent = 1 - kExponentBias;</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kSignMask = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x80000000, 0x00000000);</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kExponentMask = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x7FF00000, 0x00000000);</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kSignificandMask = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x000FFFFF, 0xFFFFFFFF);</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kHiddenBit = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x00100000, 0x00000000);</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">union </span>{</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">double</span> d_;</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; uint64_t u_;</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; };</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;};</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_IEEE754_</span></div>
-<div class="ttc" id="namespacerapidjson_html_aa65fc9fb381b2cbc54f98673eadd6505"><div class="ttname"><a href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">rapidjson::Value</a></div><div class="ttdeci">GenericValue&lt; UTF8&lt;&gt; &gt; Value</div><div class="ttdoc">GenericValue with UTF8 encoding. </div><div class="ttdef"><b>Definition:</b> document.h:2076</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_IEEE754_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_IEEE754_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">class </span>Double {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; Double() {}</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; Double(<span class="keywordtype">double</span> d) : d_(d) {}</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; Double(uint64_t u) : u_(u) {}</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordtype">double</span> <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> d_; }</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; uint64_t Uint64Value()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> u_; }</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordtype">double</span> NextPositiveDouble()<span class="keyword"> const </span>{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!Sign());</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">return</span> Double(u_ + 1).Value();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keywordtype">bool</span> Sign()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (u_ &amp; kSignMask) != 0; }</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; uint64_t Significand()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> u_ &amp; kSignificandMask; }</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keywordtype">int</span> Exponent()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(((u_ &amp; kExponentMask) &gt;&gt; kSignificandSize) - kExponentBias); }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">bool</span> IsNan()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (u_ &amp; kExponentMask) == kExponentMask &amp;&amp; Significand() != 0; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">bool</span> IsInf()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (u_ &amp; kExponentMask) == kExponentMask &amp;&amp; Significand() == 0; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">bool</span> IsNanOrInf()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (u_ &amp; kExponentMask) == kExponentMask; }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordtype">bool</span> IsNormal()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (u_ &amp; kExponentMask) != 0 || Significand() == 0; }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">bool</span> IsZero()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (u_ &amp; (kExponentMask | kSignificandMask)) == 0; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; uint64_t IntegerSignificand()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> IsNormal() ? Significand() | kHiddenBit : Significand(); }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">int</span> IntegerExponent()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (IsNormal() ? Exponent() : kDenormalExponent) - kSignificandSize; }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; uint64_t ToBias()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (u_ &amp; kSignMask) ? ~u_ + 1 : u_ | kSignMask; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">static</span> <span class="keywordtype">int</span> EffectiveSignificandSize(<span class="keywordtype">int</span> order) {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">if</span> (order &gt;= -1021)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> 53;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (order &lt;= -1074)</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> order + 1074;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kSignificandSize = 52;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kExponentBias = 0x3FF;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDenormalExponent = 1 - kExponentBias;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kSignMask = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x80000000, 0x00000000);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kExponentMask = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x7FF00000, 0x00000000);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kSignificandMask = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x000FFFFF, 0xFFFFFFFF);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kHiddenBit = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x00100000, 0x00000000);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">union </span>{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordtype">double</span> d_;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; uint64_t u_;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; };</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;};</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_IEEE754_</span></div><div class="ttc" id="namespacerapidjson_html_aa65fc9fb381b2cbc54f98673eadd6505"><div class="ttname"><a href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">rapidjson::Value</a></div><div class="ttdeci">GenericValue&lt; UTF8&lt;&gt; &gt; Value</div><div class="ttdoc">GenericValue with UTF8 encoding </div><div class="ttdef"><b>Definition:</b> document.h:2076</div></div>
<div class="ttc" id="rapidjson_8h_html_aaee1245f375a71be1ac9b8a07ba5fb8f"><div class="ttname"><a href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a></div><div class="ttdeci">#define RAPIDJSON_UINT64_C2(high32, low32)</div><div class="ttdoc">Construct a 64-bit literal by a pair of 32-bit integer. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:294</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
</div><!-- fragment --></div><!-- contents -->
@@ -167,7 +90,7 @@ $(document).ready(function(){initNavTree('ieee754_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5167ae66a3a40cb9e5e46c75b7477e81.html">internal</a></li><li class="navelem"><b>ieee754.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_8d7584a8244d286291cd37b99676a43b.html">internal</a></li><li class="navelem"><b>ieee754.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/index.html b/zh-cn/index.html
index 42aa7f92..b008aa6b 100644
--- a/zh-cn/index.html
+++ b/zh-cn/index.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 首页</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('index.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -85,7 +86,7 @@ $(document).ready(function(){initNavTree('index.html','');});
<div class="caption">
RapidJSON logo</div></div>
<div class="image">
-<img src="https://img.shields.io/badge/release-v1.1.0-blue.svg" alt="Release version"/>
+<object type="image/svg+xml" data="https://img.shields.io/badge/release-v1.1.0-blue.svg" alt="Release version"></object>
</div>
<h2>高效的 C++ JSON 解析/生成器,提供 SAX 及 DOM 风格 API</h2>
<p>Tencent is pleased to support the open source community by making RapidJSON available.</p>
@@ -105,13 +106,13 @@ RapidJSON logo</div></div>
<th align="center"><a href="https://travis-ci.org/miloyip/rapidjson" title="Travis build status">Linux</a> </th><th align="center"><a href="https://ci.appveyor.com/project/miloyip/rapidjson/branch/master" title="AppVeyor build status">Windows</a> </th><th align="center"><a href="https://coveralls.io/r/miloyip/rapidjson?branch=master" title="Coveralls coverage">Coveralls</a> </th></tr>
<tr>
<td align="center"><div class="image">
-<img src="https://travis-ci.org/miloyip/rapidjson.svg?branch=master" alt="lin-badge" title="Travis build status"/>
+<img src="https://travis-ci.org/miloyip/rapidjson.svg?branch=master" alt="lin-badge" title="Travis build status"/>
</div>
</td><td align="center"><div class="image">
-<img src="https://ci.appveyor.com/api/projects/status/github/miloyip/rapidjson?branch=master&svg=true" alt="win-badge" title="AppVeyor build status"/>
+<img src="https://ci.appveyor.com/api/projects/status/github/miloyip/rapidjson?branch=master&svg=true" alt="win-badge" title="AppVeyor build status"/>
</div>
</td><td align="center"><div class="image">
-<img src="https://coveralls.io/repos/miloyip/rapidjson/badge.svg?branch=master" alt="cov-badge" title="Coveralls coverage"/>
+<img src="https://coveralls.io/repos/miloyip/rapidjson/badge.svg?branch=master" alt="cov-badge" title="Coveralls coverage"/>
</div>
</td></tr>
</table>
@@ -122,7 +123,7 @@ RapidJSON logo</div></div>
<li>RapidJSON 快。它的性能可与 <code>strlen()</code> 相比。可支持 SSE2/SSE4.2 加速。</li>
<li>RapidJSON 独立。它不依赖于 BOOST 等外部库。它甚至不依赖于 STL。</li>
<li>RapidJSON 对内存友好。在大部分 32/64 位机器上,每个 JSON 值只占 16 字节(除字符串外)。它预设使用一个快速的内存分配器,令分析器可以紧凑地分配内存。</li>
-<li>RapidJSON 对 Unicode 友好。它支持 UTF-8、UTF-16、UTF-32 (大端序/小端序),并内部支持这些编码的检测、校验及转码。例如,RapidJSON 可以在分析一个 UTF-8 文件至 DOM 时,把当中的 JSON 字符串转码至 UTF-16。它也支持代理对(surrogate pair)及 <code>"\\u0000"</code>(空字符)。</li>
+<li>RapidJSON 对 Unicode 友好。它支持 UTF-8、UTF-16、UTF-32 (大端序/小端序),并内部支持这些编码的检测、校验及转码。例如,RapidJSON 可以在分析一个 UTF-8 文件至 DOM 时,把当中的 JSON 字符串转码至 UTF-16。它也支持代理对(surrogate pair)及 <code>"\u0000"</code>(空字符)。</li>
</ul>
<p>在 <a class="el" href="md_doc_features_8zh-cn.html">这里</a> 可读取更多特点。</p>
<p>JSON(JavaScript Object Notation)是一个轻量的数据交换格式。RapidJSON 应该完全遵从 RFC7159/ECMA-404,并支持可选的放宽语法。 关于 JSON 的更多信息可参考:</p><ul>
@@ -165,34 +166,7 @@ RapidJSON logo</div></div>
<p>我们也可以把程序库安装至全系统中,只要在具管理权限下从 build 目录执行 <code>make install</code> 命令。这样会按系统的偏好设置安装所有文件。当安装 RapidJSON 后,其他的 CMake 项目需要使用它时,可以通过在 <code>CMakeLists.txt</code> 加入一句 <code>find_package(RapidJSON)</code>。</p>
<h2>用法一览</h2>
<p>此简单例子解析一个 JSON 字符串至一个 document (DOM),对 DOM 作出简单修改,最终把 DOM 转换(stringify)至 JSON 字符串。</p>
-<div class="fragment"><div class="line"><span class="comment">// rapidjson/example/simpledom/simpledom.cpp`</span></div>
-<div class="line"><span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">rapidjson/document.h</a>&quot;</span></div>
-<div class="line"><span class="preprocessor">#include &quot;rapidjson/writer.h&quot;</span></div>
-<div class="line"><span class="preprocessor">#include &quot;rapidjson/stringbuffer.h&quot;</span></div>
-<div class="line"><span class="preprocessor">#include &lt;iostream&gt;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"></div>
-<div class="line"><span class="keywordtype">int</span> main() {</div>
-<div class="line"> <span class="comment">// 1. 把 JSON 解析至 DOM。</span></div>
-<div class="line"> <span class="keyword">const</span> <span class="keywordtype">char</span>* json = <span class="stringliteral">&quot;{\&quot;project\&quot;:\&quot;rapidjson\&quot;,\&quot;stars\&quot;:10}&quot;</span>;</div>
-<div class="line"> <a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d;</div>
-<div class="line"> d.<a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">Parse</a>(json);</div>
-<div class="line"></div>
-<div class="line"> <span class="comment">// 2. 利用 DOM 作出修改。</span></div>
-<div class="line"> <a class="code" href="classrapidjson_1_1_generic_value.html">Value</a>&amp; s = d[<span class="stringliteral">&quot;stars&quot;</span>];</div>
-<div class="line"> s.SetInt(s.GetInt() + 1);</div>
-<div class="line"></div>
-<div class="line"> <span class="comment">// 3. 把 DOM 转换(stringify)成 JSON。</span></div>
-<div class="line"> <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">StringBuffer</a> buffer;</div>
-<div class="line"> <a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;StringBuffer&gt;</a> writer(buffer);</div>
-<div class="line"> d.<a class="code" href="classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e">Accept</a>(writer);</div>
-<div class="line"></div>
-<div class="line"> <span class="comment">// Output {&quot;project&quot;:&quot;rapidjson&quot;,&quot;stars&quot;:11}</span></div>
-<div class="line"> std::cout &lt;&lt; buffer.GetString() &lt;&lt; std::endl;</div>
-<div class="line"> <span class="keywordflow">return</span> 0;</div>
-<div class="line">}</div>
-</div><!-- fragment --><p>注意此例子并没有处理潜在错误。</p>
+<div class="fragment"><div class="line"><span class="comment">// rapidjson/example/simpledom/simpledom.cpp`</span></div><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">rapidjson/document.h</a>&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;rapidjson/writer.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;rapidjson/stringbuffer.h&quot;</span></div><div class="line"><span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"></div><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> main() {</div><div class="line"> <span class="comment">// 1. 把 JSON 解析至 DOM。</span></div><div class="line"> <span class="keyword">const</span> <span class="keywordtype">char</span>* json = <span class="stringliteral">&quot;{\&quot;project\&quot;:\&quot;rapidjson\&quot;,\&quot;stars\&quot;:10}&quot;</span>;</div><div class="line"> <a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d;</div><div class="line"> d.<a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">Parse</a>(json);</div><div class="line"></div><div class="line"> <span class="comment">// 2. 利用 DOM 作出修改。</span></div><div class="line"> <a class="code" href="classrapidjson_1_1_generic_value.html">Value</a>&amp; s = d[<span class="stringliteral">&quot;stars&quot;</span>];</div><div class="line"> s.SetInt(s.GetInt() + 1);</div><div class="line"></div><div class="line"> <span class="comment">// 3. 把 DOM 转换(stringify)成 JSON。</span></div><div class="line"> <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">StringBuffer</a> buffer;</div><div class="line"> <a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;StringBuffer&gt;</a> writer(buffer);</div><div class="line"> d.<a class="code" href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c">Accept</a>(writer);</div><div class="line"></div><div class="line"> <span class="comment">// Output {&quot;project&quot;:&quot;rapidjson&quot;,&quot;stars&quot;:11}</span></div><div class="line"> std::cout &lt;&lt; buffer.GetString() &lt;&lt; std::endl;</div><div class="line"> <span class="keywordflow">return</span> 0;</div><div class="line">}</div></div><!-- fragment --><p>注意此例子并没有处理潜在错误。</p>
<p>下图展示执行过程。</p>
<div class="image">
<img src="simpledom.png" alt="simpledom.png"/>
diff --git a/zh-cn/istreamwrapper_8h_source.html b/zh-cn/istreamwrapper_8h_source.html
index 80d0399b..fdfdb0cd 100644
--- a/zh-cn/istreamwrapper_8h_source.html
+++ b/zh-cn/istreamwrapper_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/istreamwrapper.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('istreamwrapper_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,123 +81,8 @@ $(document).ready(function(){initNavTree('istreamwrapper_8h_source.html','');});
<div class="title">istreamwrapper.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ISTREAMWRAPPER_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_ISTREAMWRAPPER_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;iosfwd&gt;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;RAPIDJSON_DIAG_OFF(4351) <span class="comment">// new behavior: elements of array &#39;array&#39; will be default initialized</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">//! Wrapper of \c std::basic_istream into RapidJSON&#39;s Stream concept.</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> The classes can be wrapped including but not limited to:</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> - \c std::istringstream</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> - \c std::stringstream</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> - \c std::wistringstream</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> - \c std::wstringstream</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> - \c std::ifstream</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> - \c std::fstream</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> - \c std::wifstream</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> - \c std::wfstream</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> \tparam StreamType Class derived from \c std::basic_istream.</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> StreamType&gt;</div>
-<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_basic_i_stream_wrapper.html"> 50</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a> {</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> StreamType::char_type Ch;</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a>(StreamType&amp; stream) : stream_(stream), count_(), peekBuffer_() {}</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; Ch Peek()<span class="keyword"> const </span>{ </div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">typename</span> StreamType::int_type c = stream_.peek();</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(c != StreamType::traits_type::eof()) ? <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c) : static_cast&lt;Ch&gt;(<span class="charliteral">&#39;\0&#39;</span>);</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; Ch Take() { </div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">typename</span> StreamType::int_type c = stream_.get();</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(c != StreamType::traits_type::eof())) {</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; count_++;</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c);</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;\0&#39;</span>;</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// tellg() may return -1 when failed. So we count by ourself.</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> count_; }</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">void</span> Put(Ch) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">void</span> Flush() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">// For encoding detection only.</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">const</span> Ch* Peek4()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">sizeof</span>(Ch) == 1); <span class="comment">// Only usable for byte stream.</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">int</span> i;</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">bool</span> hasError = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; 4; ++i) {</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">typename</span> StreamType::int_type c = stream_.get();</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">if</span> (c == StreamType::traits_type::eof()) {</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; hasError = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; stream_.clear();</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; peekBuffer_[i] = <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c);</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span> (--i; i &gt;= 0; --i)</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; stream_.putback(peekBuffer_[i]);</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> !hasError ? peekBuffer_ : 0;</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a>&amp;);</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a>&amp;);</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; StreamType&amp; stream_;</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">size_t</span> count_; <span class="comment">//!&lt; Number of characters read. Note:</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"></span> <span class="keyword">mutable</span> Ch peekBuffer_[4];</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;};</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper&lt;std::istream&gt;</a> <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">IStreamWrapper</a>;</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper&lt;std::wistream&gt;</a> <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">WIStreamWrapper</a>;</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="preprocessor">#if defined(__clang__) || defined(_MSC_VER)</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ISTREAMWRAPPER_H_</span></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_ga5dc14176a9e71ace282404b0bcda57a1"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a></div><div class="ttdeci">#define RAPIDJSON_LIKELY(x)</div><div class="ttdoc">Compiler branching hint for expression with high probability to be true. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:468</div></div>
-<div class="ttc" id="classrapidjson_1_1_basic_i_stream_wrapper_html"><div class="ttname"><a href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper</a></div><div class="ttdoc">Wrapper of std::basic_istream into RapidJSON&#39;s Stream concept. </div><div class="ttdef"><b>Definition:</b> istreamwrapper.h:50</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ISTREAMWRAPPER_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_ISTREAMWRAPPER_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;iosfwd&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;RAPIDJSON_DIAG_OFF(4351) <span class="comment">// new behavior: elements of array &#39;array&#39; will be default initialized</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">//! Wrapper of \c std::basic_istream into RapidJSON&#39;s Stream concept.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> The classes can be wrapped including but not limited to:</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> - \c std::istringstream</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> - \c std::stringstream</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> - \c std::wistringstream</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> - \c std::wstringstream</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> - \c std::ifstream</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> - \c std::fstream</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> - \c std::wifstream</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> - \c std::wfstream</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> \tparam StreamType Class derived from \c std::basic_istream.</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> StreamType&gt;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_basic_i_stream_wrapper.html"> 50</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> StreamType::char_type Ch;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a>(StreamType&amp; stream) : stream_(stream), count_(), peekBuffer_() {}</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; Ch Peek()<span class="keyword"> const </span>{ </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">typename</span> StreamType::int_type c = stream_.peek();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(c != StreamType::traits_type::eof()) ? <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c) : static_cast&lt;Ch&gt;(<span class="charliteral">&#39;\0&#39;</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; Ch Take() { </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">typename</span> StreamType::int_type c = stream_.get();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(c != StreamType::traits_type::eof())) {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; count_++;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; }</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// tellg() may return -1 when failed. So we count by ourself.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> count_; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">void</span> Put(Ch) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordtype">void</span> Flush() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="comment">// For encoding detection only.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">const</span> Ch* Peek4()<span class="keyword"> const </span>{</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">sizeof</span>(Ch) == 1); <span class="comment">// Only usable for byte stream.</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordtype">bool</span> hasError = <span class="keyword">false</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">for</span> (i = 0; i &lt; 4; ++i) {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">typename</span> StreamType::int_type c = stream_.get();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">if</span> (c == StreamType::traits_type::eof()) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; hasError = <span class="keyword">true</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; stream_.clear();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; peekBuffer_[i] = <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">for</span> (--i; i &gt;= 0; --i)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; stream_.putback(peekBuffer_[i]);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> !hasError ? peekBuffer_ : 0;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a>&amp;);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a>&amp;);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; StreamType&amp; stream_;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">size_t</span> count_; <span class="comment">//!&lt; Number of characters read. Note:</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"></span> <span class="keyword">mutable</span> Ch peekBuffer_[4];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;};</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper&lt;std::istream&gt;</a> <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">IStreamWrapper</a>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper&lt;std::wistream&gt;</a> <a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">WIStreamWrapper</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="preprocessor">#if defined(__clang__) || defined(_MSC_VER)</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ISTREAMWRAPPER_H_</span></div><div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_ga5dc14176a9e71ace282404b0bcda57a1"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a></div><div class="ttdeci">#define RAPIDJSON_LIKELY(x)</div><div class="ttdoc">Compiler branching hint for expression with high probability to be true. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:468</div></div>
+<div class="ttc" id="classrapidjson_1_1_basic_i_stream_wrapper_html"><div class="ttname"><a href="classrapidjson_1_1_basic_i_stream_wrapper.html">rapidjson::BasicIStreamWrapper</a></div><div class="ttdoc">Wrapper of std::basic_istream into RapidJSON&amp;#39;s Stream concept. </div><div class="ttdef"><b>Definition:</b> istreamwrapper.h:50</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
@@ -204,7 +90,7 @@ $(document).ready(function(){initNavTree('istreamwrapper_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>istreamwrapper.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>istreamwrapper.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/itoa_8h_source.html b/zh-cn/itoa_8h_source.html
index 9631e2a1..9c927dae 100644
--- a/zh-cn/itoa_8h_source.html
+++ b/zh-cn/itoa_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/internal/itoa.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('itoa_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,317 +81,13 @@ $(document).ready(function(){initNavTree('itoa_8h_source.html','');});
<div class="title">itoa.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ITOA_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_ITOA_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* GetDigitsLut() {</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> cDigitsLut[200] = {</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;9&#39;</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; };</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> cDigitsLut;</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span>* u32toa(uint32_t value, <span class="keywordtype">char</span>* buffer) {</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* cDigitsLut = GetDigitsLut();</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">if</span> (value &lt; 10000) {</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> uint32_t d1 = (value / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> uint32_t d2 = (value % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span> (value &gt;= 1000)</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; *buffer++ = cDigitsLut[d1];</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span> (value &gt;= 100)</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; *buffer++ = cDigitsLut[d1 + 1];</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span> (value &gt;= 10)</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; *buffer++ = cDigitsLut[d2];</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; *buffer++ = cDigitsLut[d2 + 1];</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value &lt; 100000000) {</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// value = bbbbcccc</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> uint32_t b = value / 10000;</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> uint32_t c = value % 10000;</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; </div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> uint32_t d1 = (b / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> uint32_t d2 = (b % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> uint32_t d3 = (c / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> uint32_t d4 = (c % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; </div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">if</span> (value &gt;= 10000000)</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; *buffer++ = cDigitsLut[d1];</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span> (value &gt;= 1000000)</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; *buffer++ = cDigitsLut[d1 + 1];</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span> (value &gt;= 100000)</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; *buffer++ = cDigitsLut[d2];</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; *buffer++ = cDigitsLut[d2 + 1];</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; *buffer++ = cDigitsLut[d3];</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; *buffer++ = cDigitsLut[d3 + 1];</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; *buffer++ = cDigitsLut[d4];</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; *buffer++ = cDigitsLut[d4 + 1];</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// value = aabbbbcccc in decimal</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">const</span> uint32_t a = value / 100000000; <span class="comment">// 1 to 42</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; value %= 100000000;</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span> (a &gt;= 10) {</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> i = a &lt;&lt; 1;</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; *buffer++ = cDigitsLut[i];</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; *buffer++ = cDigitsLut[i + 1];</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; *buffer++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(a));</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">const</span> uint32_t b = value / 10000; <span class="comment">// 0 to 9999</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> uint32_t c = value % 10000; <span class="comment">// 0 to 9999</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; </div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> uint32_t d1 = (b / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> uint32_t d2 = (b % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; </div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">const</span> uint32_t d3 = (c / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">const</span> uint32_t d4 = (c % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; *buffer++ = cDigitsLut[d1];</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; *buffer++ = cDigitsLut[d1 + 1];</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; *buffer++ = cDigitsLut[d2];</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; *buffer++ = cDigitsLut[d2 + 1];</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; *buffer++ = cDigitsLut[d3];</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; *buffer++ = cDigitsLut[d3 + 1];</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; *buffer++ = cDigitsLut[d4];</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; *buffer++ = cDigitsLut[d4 + 1];</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> buffer;</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span>* i32toa(int32_t value, <span class="keywordtype">char</span>* buffer) {</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; uint32_t u = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(value);</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span> (value &lt; 0) {</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; *buffer++ = <span class="charliteral">&#39;-&#39;</span>;</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; u = ~u + 1;</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> u32toa(u, buffer);</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;}</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span>* u64toa(uint64_t value, <span class="keywordtype">char</span>* buffer) {</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* cDigitsLut = GetDigitsLut();</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">const</span> uint64_t kTen8 = 100000000;</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">const</span> uint64_t kTen9 = kTen8 * 10;</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">const</span> uint64_t kTen10 = kTen8 * 100;</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">const</span> uint64_t kTen11 = kTen8 * 1000;</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">const</span> uint64_t kTen12 = kTen8 * 10000;</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">const</span> uint64_t kTen13 = kTen8 * 100000;</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">const</span> uint64_t kTen14 = kTen8 * 1000000;</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keyword">const</span> uint64_t kTen15 = kTen8 * 10000000;</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keyword">const</span> uint64_t kTen16 = kTen8 * kTen8;</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; </div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (value &lt; kTen8) {</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; uint32_t v = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(value);</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (v &lt; 10000) {</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">const</span> uint32_t d1 = (v / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">const</span> uint32_t d2 = (v % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (v &gt;= 1000)</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; *buffer++ = cDigitsLut[d1];</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">if</span> (v &gt;= 100)</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; *buffer++ = cDigitsLut[d1 + 1];</div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span> (v &gt;= 10)</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; *buffer++ = cDigitsLut[d2];</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; *buffer++ = cDigitsLut[d2 + 1];</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="comment">// value = bbbbcccc</span></div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> uint32_t b = v / 10000;</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">const</span> uint32_t c = v % 10000;</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">const</span> uint32_t d1 = (b / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">const</span> uint32_t d2 = (b % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; </div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> uint32_t d3 = (c / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">const</span> uint32_t d4 = (c % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; </div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">if</span> (value &gt;= 10000000)</div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; *buffer++ = cDigitsLut[d1];</div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">if</span> (value &gt;= 1000000)</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; *buffer++ = cDigitsLut[d1 + 1];</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (value &gt;= 100000)</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; *buffer++ = cDigitsLut[d2];</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; *buffer++ = cDigitsLut[d2 + 1];</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; </div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; *buffer++ = cDigitsLut[d3];</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; *buffer++ = cDigitsLut[d3 + 1];</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; *buffer++ = cDigitsLut[d4];</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; *buffer++ = cDigitsLut[d4 + 1];</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value &lt; kTen16) {</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keyword">const</span> uint32_t v0 = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(value / kTen8);</div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keyword">const</span> uint32_t v1 = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(value % kTen8);</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; </div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> uint32_t b0 = v0 / 10000;</div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">const</span> uint32_t c0 = v0 % 10000;</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; </div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">const</span> uint32_t d1 = (b0 / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">const</span> uint32_t d2 = (b0 % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; </div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">const</span> uint32_t d3 = (c0 / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">const</span> uint32_t d4 = (c0 % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keyword">const</span> uint32_t b1 = v1 / 10000;</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keyword">const</span> uint32_t c1 = v1 % 10000;</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; </div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keyword">const</span> uint32_t d5 = (b1 / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">const</span> uint32_t d6 = (b1 % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; </div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">const</span> uint32_t d7 = (c1 / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">const</span> uint32_t d8 = (c1 % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen15)</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; *buffer++ = cDigitsLut[d1];</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen14)</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; *buffer++ = cDigitsLut[d1 + 1];</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen13)</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; *buffer++ = cDigitsLut[d2];</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen12)</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; *buffer++ = cDigitsLut[d2 + 1];</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen11)</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; *buffer++ = cDigitsLut[d3];</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen10)</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; *buffer++ = cDigitsLut[d3 + 1];</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen9)</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; *buffer++ = cDigitsLut[d4];</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen8)</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; *buffer++ = cDigitsLut[d4 + 1];</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; *buffer++ = cDigitsLut[d5];</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; *buffer++ = cDigitsLut[d5 + 1];</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; *buffer++ = cDigitsLut[d6];</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; *buffer++ = cDigitsLut[d6 + 1];</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; *buffer++ = cDigitsLut[d7];</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; *buffer++ = cDigitsLut[d7 + 1];</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; *buffer++ = cDigitsLut[d8];</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; *buffer++ = cDigitsLut[d8 + 1];</div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keyword">const</span> uint32_t a = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(value / kTen16); <span class="comment">// 1 to 1844</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; value %= kTen16;</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; </div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (a &lt; 10)</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; *buffer++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(a));</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (a &lt; 100) {</div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keyword">const</span> uint32_t i = a &lt;&lt; 1;</div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; *buffer++ = cDigitsLut[i];</div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; *buffer++ = cDigitsLut[i + 1];</div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (a &lt; 1000) {</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; *buffer++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(a / 100));</div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; </div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keyword">const</span> uint32_t i = (a % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; *buffer++ = cDigitsLut[i];</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; *buffer++ = cDigitsLut[i + 1];</div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keyword">const</span> uint32_t i = (a / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keyword">const</span> uint32_t j = (a % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; *buffer++ = cDigitsLut[i];</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; *buffer++ = cDigitsLut[i + 1];</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; *buffer++ = cDigitsLut[j];</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; *buffer++ = cDigitsLut[j + 1];</div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; </div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keyword">const</span> uint32_t v0 = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(value / kTen8);</div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">const</span> uint32_t v1 = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(value % kTen8);</div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; </div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">const</span> uint32_t b0 = v0 / 10000;</div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">const</span> uint32_t c0 = v0 % 10000;</div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; </div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">const</span> uint32_t d1 = (b0 / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">const</span> uint32_t d2 = (b0 % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; </div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keyword">const</span> uint32_t d3 = (c0 / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keyword">const</span> uint32_t d4 = (c0 % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; </div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keyword">const</span> uint32_t b1 = v1 / 10000;</div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">const</span> uint32_t c1 = v1 % 10000;</div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; </div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">const</span> uint32_t d5 = (b1 / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">const</span> uint32_t d6 = (b1 % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; </div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keyword">const</span> uint32_t d7 = (c1 / 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keyword">const</span> uint32_t d8 = (c1 % 100) &lt;&lt; 1;</div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; </div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; *buffer++ = cDigitsLut[d1];</div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; *buffer++ = cDigitsLut[d1 + 1];</div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; *buffer++ = cDigitsLut[d2];</div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; *buffer++ = cDigitsLut[d2 + 1];</div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; *buffer++ = cDigitsLut[d3];</div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; *buffer++ = cDigitsLut[d3 + 1];</div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; *buffer++ = cDigitsLut[d4];</div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; *buffer++ = cDigitsLut[d4 + 1];</div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; *buffer++ = cDigitsLut[d5];</div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; *buffer++ = cDigitsLut[d5 + 1];</div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; *buffer++ = cDigitsLut[d6];</div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; *buffer++ = cDigitsLut[d6 + 1];</div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; *buffer++ = cDigitsLut[d7];</div>
-<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; *buffer++ = cDigitsLut[d7 + 1];</div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; *buffer++ = cDigitsLut[d8];</div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; *buffer++ = cDigitsLut[d8 + 1];</div>
-<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; </div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">return</span> buffer;</div>
-<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;}</div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span>* i64toa(int64_t value, <span class="keywordtype">char</span>* buffer) {</div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; uint64_t u = <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(value);</div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> (value &lt; 0) {</div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; *buffer++ = <span class="charliteral">&#39;-&#39;</span>;</div>
-<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; u = ~u + 1;</div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">return</span> u64toa(u, buffer);</div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;}</div>
-<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div>
-<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div>
-<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ITOA_</span></div>
-</div><!-- fragment --></div><!-- contents -->
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ITOA_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_ITOA_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* GetDigitsLut() {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> cDigitsLut[200] = {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;0&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;1&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;2&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;3&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;4&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;5&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;6&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;7&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;8&#39;</span>,<span class="charliteral">&#39;9&#39;</span>,<span class="charliteral">&#39;9&#39;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; };</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">return</span> cDigitsLut;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span>* u32toa(uint32_t value, <span class="keywordtype">char</span>* buffer) {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* cDigitsLut = GetDigitsLut();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordflow">if</span> (value &lt; 10000) {</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">const</span> uint32_t d1 = (value / 100) &lt;&lt; 1;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">const</span> uint32_t d2 = (value % 100) &lt;&lt; 1;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordflow">if</span> (value &gt;= 1000)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; *buffer++ = cDigitsLut[d1];</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">if</span> (value &gt;= 100)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; *buffer++ = cDigitsLut[d1 + 1];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span> (value &gt;= 10)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; *buffer++ = cDigitsLut[d2];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; *buffer++ = cDigitsLut[d2 + 1];</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value &lt; 100000000) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// value = bbbbcccc</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> uint32_t b = value / 10000;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> uint32_t c = value % 10000;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">const</span> uint32_t d1 = (b / 100) &lt;&lt; 1;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">const</span> uint32_t d2 = (b % 100) &lt;&lt; 1;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> uint32_t d3 = (c / 100) &lt;&lt; 1;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">const</span> uint32_t d4 = (c % 100) &lt;&lt; 1;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">if</span> (value &gt;= 10000000)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; *buffer++ = cDigitsLut[d1];</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span> (value &gt;= 1000000)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; *buffer++ = cDigitsLut[d1 + 1];</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span> (value &gt;= 100000)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; *buffer++ = cDigitsLut[d2];</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; *buffer++ = cDigitsLut[d2 + 1];</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; *buffer++ = cDigitsLut[d3];</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; *buffer++ = cDigitsLut[d3 + 1];</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; *buffer++ = cDigitsLut[d4];</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; *buffer++ = cDigitsLut[d4 + 1];</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="comment">// value = aabbbbcccc in decimal</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">const</span> uint32_t a = value / 100000000; <span class="comment">// 1 to 42</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; value %= 100000000;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span> (a &gt;= 10) {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> i = a &lt;&lt; 1;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; *buffer++ = cDigitsLut[i];</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; *buffer++ = cDigitsLut[i + 1];</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; *buffer++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(a));</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">const</span> uint32_t b = value / 10000; <span class="comment">// 0 to 9999</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">const</span> uint32_t c = value % 10000; <span class="comment">// 0 to 9999</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">const</span> uint32_t d1 = (b / 100) &lt;&lt; 1;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">const</span> uint32_t d2 = (b % 100) &lt;&lt; 1;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">const</span> uint32_t d3 = (c / 100) &lt;&lt; 1;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">const</span> uint32_t d4 = (c % 100) &lt;&lt; 1;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; *buffer++ = cDigitsLut[d1];</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; *buffer++ = cDigitsLut[d1 + 1];</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; *buffer++ = cDigitsLut[d2];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; *buffer++ = cDigitsLut[d2 + 1];</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; *buffer++ = cDigitsLut[d3];</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; *buffer++ = cDigitsLut[d3 + 1];</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; *buffer++ = cDigitsLut[d4];</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; *buffer++ = cDigitsLut[d4 + 1];</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> buffer;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span>* i32toa(int32_t value, <span class="keywordtype">char</span>* buffer) {</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; uint32_t u = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(value);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span> (value &lt; 0) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; *buffer++ = <span class="charliteral">&#39;-&#39;</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; u = ~u + 1;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">return</span> u32toa(u, buffer);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;}</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span>* u64toa(uint64_t value, <span class="keywordtype">char</span>* buffer) {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* cDigitsLut = GetDigitsLut();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">const</span> uint64_t kTen8 = 100000000;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">const</span> uint64_t kTen9 = kTen8 * 10;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">const</span> uint64_t kTen10 = kTen8 * 100;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">const</span> uint64_t kTen11 = kTen8 * 1000;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">const</span> uint64_t kTen12 = kTen8 * 10000;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">const</span> uint64_t kTen13 = kTen8 * 100000;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">const</span> uint64_t kTen14 = kTen8 * 1000000;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keyword">const</span> uint64_t kTen15 = kTen8 * 10000000;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keyword">const</span> uint64_t kTen16 = kTen8 * kTen8;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (value &lt; kTen8) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; uint32_t v = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(value);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span> (v &lt; 10000) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">const</span> uint32_t d1 = (v / 100) &lt;&lt; 1;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">const</span> uint32_t d2 = (v % 100) &lt;&lt; 1;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (v &gt;= 1000)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; *buffer++ = cDigitsLut[d1];</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">if</span> (v &gt;= 100)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; *buffer++ = cDigitsLut[d1 + 1];</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span> (v &gt;= 10)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; *buffer++ = cDigitsLut[d2];</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; *buffer++ = cDigitsLut[d2 + 1];</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="comment">// value = bbbbcccc</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> uint32_t b = v / 10000;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">const</span> uint32_t c = v % 10000;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">const</span> uint32_t d1 = (b / 100) &lt;&lt; 1;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">const</span> uint32_t d2 = (b % 100) &lt;&lt; 1;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">const</span> uint32_t d3 = (c / 100) &lt;&lt; 1;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">const</span> uint32_t d4 = (c % 100) &lt;&lt; 1;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; </div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">if</span> (value &gt;= 10000000)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; *buffer++ = cDigitsLut[d1];</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">if</span> (value &gt;= 1000000)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; *buffer++ = cDigitsLut[d1 + 1];</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">if</span> (value &gt;= 100000)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; *buffer++ = cDigitsLut[d2];</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; *buffer++ = cDigitsLut[d2 + 1];</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; *buffer++ = cDigitsLut[d3];</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; *buffer++ = cDigitsLut[d3 + 1];</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; *buffer++ = cDigitsLut[d4];</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; *buffer++ = cDigitsLut[d4 + 1];</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value &lt; kTen16) {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keyword">const</span> uint32_t v0 = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(value / kTen8);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keyword">const</span> uint32_t v1 = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(value % kTen8);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> uint32_t b0 = v0 / 10000;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">const</span> uint32_t c0 = v0 % 10000;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">const</span> uint32_t d1 = (b0 / 100) &lt;&lt; 1;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">const</span> uint32_t d2 = (b0 % 100) &lt;&lt; 1;</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">const</span> uint32_t d3 = (c0 / 100) &lt;&lt; 1;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">const</span> uint32_t d4 = (c0 % 100) &lt;&lt; 1;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keyword">const</span> uint32_t b1 = v1 / 10000;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keyword">const</span> uint32_t c1 = v1 % 10000;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keyword">const</span> uint32_t d5 = (b1 / 100) &lt;&lt; 1;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">const</span> uint32_t d6 = (b1 % 100) &lt;&lt; 1;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">const</span> uint32_t d7 = (c1 / 100) &lt;&lt; 1;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">const</span> uint32_t d8 = (c1 % 100) &lt;&lt; 1;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen15)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; *buffer++ = cDigitsLut[d1];</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen14)</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; *buffer++ = cDigitsLut[d1 + 1];</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen13)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; *buffer++ = cDigitsLut[d2];</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen12)</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; *buffer++ = cDigitsLut[d2 + 1];</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen11)</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; *buffer++ = cDigitsLut[d3];</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen10)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; *buffer++ = cDigitsLut[d3 + 1];</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen9)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; *buffer++ = cDigitsLut[d4];</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (value &gt;= kTen8)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; *buffer++ = cDigitsLut[d4 + 1];</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; *buffer++ = cDigitsLut[d5];</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; *buffer++ = cDigitsLut[d5 + 1];</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; *buffer++ = cDigitsLut[d6];</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; *buffer++ = cDigitsLut[d6 + 1];</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; *buffer++ = cDigitsLut[d7];</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; *buffer++ = cDigitsLut[d7 + 1];</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; *buffer++ = cDigitsLut[d8];</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; *buffer++ = cDigitsLut[d8 + 1];</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keyword">const</span> uint32_t a = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(value / kTen16); <span class="comment">// 1 to 1844</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; value %= kTen16;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (a &lt; 10)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; *buffer++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(a));</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (a &lt; 100) {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keyword">const</span> uint32_t i = a &lt;&lt; 1;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; *buffer++ = cDigitsLut[i];</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; *buffer++ = cDigitsLut[i + 1];</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (a &lt; 1000) {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; *buffer++ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(<span class="charliteral">&#39;0&#39;</span> + <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span><span class="keyword">&gt;</span>(a / 100));</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keyword">const</span> uint32_t i = (a % 100) &lt;&lt; 1;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; *buffer++ = cDigitsLut[i];</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; *buffer++ = cDigitsLut[i + 1];</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keyword">const</span> uint32_t i = (a / 100) &lt;&lt; 1;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keyword">const</span> uint32_t j = (a % 100) &lt;&lt; 1;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; *buffer++ = cDigitsLut[i];</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; *buffer++ = cDigitsLut[i + 1];</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; *buffer++ = cDigitsLut[j];</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; *buffer++ = cDigitsLut[j + 1];</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keyword">const</span> uint32_t v0 = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(value / kTen8);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">const</span> uint32_t v1 = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span>(value % kTen8);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; </div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">const</span> uint32_t b0 = v0 / 10000;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">const</span> uint32_t c0 = v0 % 10000;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keyword">const</span> uint32_t d1 = (b0 / 100) &lt;&lt; 1;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">const</span> uint32_t d2 = (b0 % 100) &lt;&lt; 1;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keyword">const</span> uint32_t d3 = (c0 / 100) &lt;&lt; 1;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keyword">const</span> uint32_t d4 = (c0 % 100) &lt;&lt; 1;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keyword">const</span> uint32_t b1 = v1 / 10000;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">const</span> uint32_t c1 = v1 % 10000;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">const</span> uint32_t d5 = (b1 / 100) &lt;&lt; 1;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">const</span> uint32_t d6 = (b1 % 100) &lt;&lt; 1;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keyword">const</span> uint32_t d7 = (c1 / 100) &lt;&lt; 1;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keyword">const</span> uint32_t d8 = (c1 % 100) &lt;&lt; 1;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; </div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; *buffer++ = cDigitsLut[d1];</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; *buffer++ = cDigitsLut[d1 + 1];</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; *buffer++ = cDigitsLut[d2];</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; *buffer++ = cDigitsLut[d2 + 1];</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; *buffer++ = cDigitsLut[d3];</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; *buffer++ = cDigitsLut[d3 + 1];</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; *buffer++ = cDigitsLut[d4];</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; *buffer++ = cDigitsLut[d4 + 1];</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; *buffer++ = cDigitsLut[d5];</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; *buffer++ = cDigitsLut[d5 + 1];</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; *buffer++ = cDigitsLut[d6];</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; *buffer++ = cDigitsLut[d6 + 1];</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; *buffer++ = cDigitsLut[d7];</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; *buffer++ = cDigitsLut[d7 + 1];</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; *buffer++ = cDigitsLut[d8];</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; *buffer++ = cDigitsLut[d8 + 1];</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; }</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">return</span> buffer;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;}</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">char</span>* i64toa(int64_t value, <span class="keywordtype">char</span>* buffer) {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; uint64_t u = <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(value);</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> (value &lt; 0) {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; *buffer++ = <span class="charliteral">&#39;-&#39;</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; u = ~u + 1;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">return</span> u64toa(u, buffer);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;}</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ITOA_</span></div></div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5167ae66a3a40cb9e5e46c75b7477e81.html">internal</a></li><li class="navelem"><b>itoa.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_8d7584a8244d286291cd37b99676a43b.html">internal</a></li><li class="navelem"><b>itoa.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/jquery.js b/zh-cn/jquery.js
index 3db33e62..f5343eda 100644
--- a/zh-cn/jquery.js
+++ b/zh-cn/jquery.js
@@ -13,23 +13,14 @@
*
* Date: Mon Nov 21 21:11:03 2011 -0500
*/
-(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))
-}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;
-if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false
-}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}});
+(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}});
/*!
* Sizzle CSS Selector Engine
* Copyright 2011, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
* More information: http://sizzlejs.com/
*/
-(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1
-},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ac=a(av);
-ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;
-if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1)
-}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b
-})}})(window);
-/*!
+(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1)}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*!
* jQuery UI 1.8.18
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
@@ -59,8 +50,7 @@ if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padd
* Depends:
* jquery.ui.widget.js
*/
-(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g<l.length;g++){var j=c.trim(l[g]),e="ui-resizable-"+j;var h=c('<div class="ui-resizable-handle '+e+'"></div>');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(h<e.maxWidth){e.maxWidth=h}if(k<e.maxHeight){e.maxHeight=k}}this._vBoundaries=e},_updateCache:function(e){var f=this.options;this.offset=this.helper.offset();if(a(e.left)){this.position.left=e.left}if(a(e.top)){this.position.top=e.top}if(a(e.height)){this.size.height=e.height}if(a(e.width)){this.size.width=e.width}},_updateRatio:function(h,g){var i=this.options,j=this.position,f=this.size,e=this.axis;if(a(h.height)){h.width=(h.height*this.aspectRatio)}else{if(a(h.width)){h.height=(h.width/this.aspectRatio)}}if(e=="sw"){h.left=j.left+(f.width-h.width);h.top=null}if(e=="nw"){h.top=j.top+(f.height-h.height);h.left=j.left+(f.width-h.width)}return h},_respectSize:function(l,g){var j=this.helper,i=this._vBoundaries,r=this._aspectRatio||g.shiftKey,q=this.axis,t=a(l.width)&&i.maxWidth&&(i.maxWidth<l.width),m=a(l.height)&&i.maxHeight&&(i.maxHeight<l.height),h=a(l.width)&&i.minWidth&&(i.minWidth>l.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f<this._proportionallyResizeElements.length;f++){var h=this._proportionallyResizeElements[f];if(!this.borderDif){var e=[h.css("borderTopWidth"),h.css("borderRightWidth"),h.css("borderBottomWidth"),h.css("borderLeftWidth")],j=[h.css("paddingTop"),h.css("paddingRight"),h.css("paddingBottom"),h.css("paddingLeft")];this.borderDif=c.map(e,function(l,n){var m=parseInt(l,10)||0,o=parseInt(j[n],10)||0;return m+o})}if(c.browser.msie&&!(!(c(g).is(":hidden")||c(g).parents(":hidden").length))){continue}h.css({height:(g.height()-this.borderDif[0]-this.borderDif[2])||0,width:(g.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var f=this.element,i=this.options;this.elementOffset=f.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;
-p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*!
+(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g<l.length;g++){var j=c.trim(l[g]),e="ui-resizable-"+j;var h=c('<div class="ui-resizable-handle '+e+'"></div>');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(h<e.maxWidth){e.maxWidth=h}if(k<e.maxHeight){e.maxHeight=k}}this._vBoundaries=e},_updateCache:function(e){var f=this.options;this.offset=this.helper.offset();if(a(e.left)){this.position.left=e.left}if(a(e.top)){this.position.top=e.top}if(a(e.height)){this.size.height=e.height}if(a(e.width)){this.size.width=e.width}},_updateRatio:function(h,g){var i=this.options,j=this.position,f=this.size,e=this.axis;if(a(h.height)){h.width=(h.height*this.aspectRatio)}else{if(a(h.width)){h.height=(h.width/this.aspectRatio)}}if(e=="sw"){h.left=j.left+(f.width-h.width);h.top=null}if(e=="nw"){h.top=j.top+(f.height-h.height);h.left=j.left+(f.width-h.width)}return h},_respectSize:function(l,g){var j=this.helper,i=this._vBoundaries,r=this._aspectRatio||g.shiftKey,q=this.axis,t=a(l.width)&&i.maxWidth&&(i.maxWidth<l.width),m=a(l.height)&&i.maxHeight&&(i.maxHeight<l.height),h=a(l.width)&&i.minWidth&&(i.minWidth>l.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f<this._proportionallyResizeElements.length;f++){var h=this._proportionallyResizeElements[f];if(!this.borderDif){var e=[h.css("borderTopWidth"),h.css("borderRightWidth"),h.css("borderBottomWidth"),h.css("borderLeftWidth")],j=[h.css("paddingTop"),h.css("paddingRight"),h.css("paddingBottom"),h.css("paddingLeft")];this.borderDif=c.map(e,function(l,n){var m=parseInt(l,10)||0,o=parseInt(j[n],10)||0;return m+o})}if(c.browser.msie&&!(!(c(g).is(":hidden")||c(g).parents(":hidden").length))){continue}h.css({height:(g.height()-this.borderDif[0]-this.borderDif[2])||0,width:(g.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var f=this.element,i=this.options;this.elementOffset=f.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*!
* jQuery hashchange event - v1.3 - 7/21/2010
* http://benalman.com/projects/jquery-hashchange-plugin/
*
@@ -68,5 +58,30 @@ p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration
* Dual licensed under the MIT and GPL licenses.
* http://benalman.com/about/license/
*/
-(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);
-(function(c){var a=c.scrollTo=function(f,e,d){c(window).scrollTo(f,e,d)};a.defaults={axis:"xy",duration:parseFloat(c.fn.jquery)>=1.3?0:1};a.window=function(d){return c(window)._scrollable()};c.fn._scrollable=function(){return this.map(function(){var e=this,d=!e.nodeName||c.inArray(e.nodeName.toLowerCase(),["iframe","#document","html","body"])!=-1;if(!d){return e}var f=(e.contentWindow||e).document||e.ownerDocument||e;return c.browser.safari||f.compatMode=="BackCompat"?f.body:f.documentElement})};c.fn.scrollTo=function(f,e,d){if(typeof e=="object"){d=e;e=0}if(typeof d=="function"){d={onAfter:d}}if(f=="max"){f=9000000000}d=c.extend({},a.defaults,d);e=e||d.speed||d.duration;d.queue=d.queue&&d.axis.length>1;if(d.queue){e/=2}d.offset=b(d.offset);d.over=b(d.over);return this._scrollable().each(function(){var l=this,j=c(l),k=f,i,g={},m=j.is("html,body");switch(typeof k){case"number":case"string":if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(k)){k=b(k);break}k=c(k,this);case"object":if(k.is||k.style){i=(k=c(k)).offset()}}c.each(d.axis.split(""),function(q,r){var s=r=="x"?"Left":"Top",u=s.toLowerCase(),p="scroll"+s,o=l[p],n=a.max(l,r);if(i){g[p]=i[u]+(m?0:o-j.offset()[u]);if(d.margin){g[p]-=parseInt(k.css("margin"+s))||0;g[p]-=parseInt(k.css("border"+s+"Width"))||0}g[p]+=d.offset[u]||0;if(d.over[u]){g[p]+=k[r=="x"?"width":"height"]()*d.over[u]}}else{var t=k[u];g[p]=t.slice&&t.slice(-1)=="%"?parseFloat(t)/100*n:t}if(/^\d+$/.test(g[p])){g[p]=g[p]<=0?0:Math.min(g[p],n)}if(!q&&d.queue){if(o!=g[p]){h(d.onAfterFirst)}delete g[p]}});h(d.onAfter);function h(n){j.animate(g,e,d.easing,n&&function(){n.call(this,f,d)})}}).end()};a.max=function(j,i){var h=i=="x"?"Width":"Height",e="scroll"+h;if(!c(j).is("html,body")){return j[e]-c(j)[h.toLowerCase()]()}var g="client"+h,f=j.ownerDocument.documentElement,d=j.ownerDocument.body;return Math.max(f[e],d[e])-Math.min(f[g],d[g])};function b(d){return typeof d=="object"?d:{top:d,left:d}}})(jQuery);
+(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);(function(c){var a=c.scrollTo=function(f,e,d){c(window).scrollTo(f,e,d)};a.defaults={axis:"xy",duration:parseFloat(c.fn.jquery)>=1.3?0:1};a.window=function(d){return c(window)._scrollable()};c.fn._scrollable=function(){return this.map(function(){var e=this,d=!e.nodeName||c.inArray(e.nodeName.toLowerCase(),["iframe","#document","html","body"])!=-1;if(!d){return e}var f=(e.contentWindow||e).document||e.ownerDocument||e;return c.browser.safari||f.compatMode=="BackCompat"?f.body:f.documentElement})};c.fn.scrollTo=function(f,e,d){if(typeof e=="object"){d=e;e=0}if(typeof d=="function"){d={onAfter:d}}if(f=="max"){f=9000000000}d=c.extend({},a.defaults,d);e=e||d.speed||d.duration;d.queue=d.queue&&d.axis.length>1;if(d.queue){e/=2}d.offset=b(d.offset);d.over=b(d.over);return this._scrollable().each(function(){var l=this,j=c(l),k=f,i,g={},m=j.is("html,body");switch(typeof k){case"number":case"string":if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(k)){k=b(k);break}k=c(k,this);case"object":if(k.is||k.style){i=(k=c(k)).offset()}}c.each(d.axis.split(""),function(q,r){var s=r=="x"?"Left":"Top",u=s.toLowerCase(),p="scroll"+s,o=l[p],n=a.max(l,r);if(i){g[p]=i[u]+(m?0:o-j.offset()[u]);if(d.margin){g[p]-=parseInt(k.css("margin"+s))||0;g[p]-=parseInt(k.css("border"+s+"Width"))||0}g[p]+=d.offset[u]||0;if(d.over[u]){g[p]+=k[r=="x"?"width":"height"]()*d.over[u]}}else{var t=k[u];g[p]=t.slice&&t.slice(-1)=="%"?parseFloat(t)/100*n:t}if(/^\d+$/.test(g[p])){g[p]=g[p]<=0?0:Math.min(g[p],n)}if(!q&&d.queue){if(o!=g[p]){h(d.onAfterFirst)}delete g[p]}});h(d.onAfter);function h(n){j.animate(g,e,d.easing,n&&function(){n.call(this,f,d)})}}).end()};a.max=function(j,i){var h=i=="x"?"Width":"Height",e="scroll"+h;if(!c(j).is("html,body")){return j[e]-c(j)[h.toLowerCase()]()}var g="client"+h,f=j.ownerDocument.documentElement,d=j.ownerDocument.body;return Math.max(f[e],d[e])-Math.min(f[g],d[g])};function b(d){return typeof d=="object"?d:{top:d,left:d}}})(jQuery);/*!
+ PowerTip - v1.2.0 - 2013-04-03
+ http://stevenbenner.github.com/jquery-powertip/
+ Copyright (c) 2013 Steven Benner (http://stevenbenner.com/).
+ Released under MIT license.
+ https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
+*/
+(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{a(jQuery)}}(function(k){var A=k(document),s=k(window),w=k("body");var n="displayController",e="hasActiveHover",d="forcedOpen",u="hasMouseMove",f="mouseOnToPopup",g="originalTitle",y="powertip",o="powertipjq",l="powertiptarget",E=180/Math.PI;var c={isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var p={none:0,top:1,bottom:2,left:4,right:8};k.fn.powerTip=function(F,N){if(!this.length){return this}if(k.type(F)==="string"&&k.powerTip[F]){return k.powerTip[F].call(this,this,N)}var O=k.extend({},k.fn.powerTip.defaults,F),G=new x(O);h();this.each(function M(){var R=k(this),Q=R.data(y),P=R.data(o),T=R.data(l),S;if(R.data(n)){k.powerTip.destroy(R)}S=R.attr("title");if(!Q&&!T&&!P&&S){R.data(y,S);R.data(g,S);R.removeAttr("title")}R.data(n,new t(R,O,G))});if(!O.manual){this.on({"mouseenter.powertip":function J(P){k.powerTip.show(this,P)},"mouseleave.powertip":function L(){k.powerTip.hide(this)},"focus.powertip":function K(){k.powerTip.show(this)},"blur.powertip":function H(){k.powerTip.hide(this,true)},"keydown.powertip":function I(P){if(P.keyCode===27){k.powerTip.hide(this,true)}}})}return this};k.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false};k.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};k.powerTip={show:function z(F,G){if(G){i(G);c.previousX=G.pageX;c.previousY=G.pageY;k(F).data(n).show()}else{k(F).first().data(n).show(true,true)}return F},reposition:function r(F){k(F).first().data(n).resetPosition();return F},hide:function D(G,F){if(G){k(G).first().data(n).hide(F)}else{if(c.activeHover){c.activeHover.data(n).hide(true)}}return G},destroy:function C(G){k(G).off(".powertip").each(function F(){var I=k(this),H=[g,n,e,d];if(I.data(g)){I.attr("title",I.data(g));H.push(y)}I.removeData(H)});return G}};k.powerTip.showTip=k.powerTip.show;k.powerTip.closeTip=k.powerTip.hide;function b(){var F=this;F.top="auto";F.left="auto";F.right="auto";F.bottom="auto";F.set=function(H,G){if(k.isNumeric(G)){F[H]=Math.round(G)}}}function t(K,N,F){var J=null;function L(P,Q){M();if(!K.data(e)){if(!P){c.tipOpenImminent=true;J=setTimeout(function O(){J=null;I()},N.intentPollInterval)}else{if(Q){K.data(d,true)}F.showTip(K)}}}function G(P){M();c.tipOpenImminent=false;if(K.data(e)){K.data(d,false);if(!P){c.delayInProgress=true;J=setTimeout(function O(){J=null;F.hideTip(K);c.delayInProgress=false},N.closeDelay)}else{F.hideTip(K)}}}function I(){var Q=Math.abs(c.previousX-c.currentX),O=Math.abs(c.previousY-c.currentY),P=Q+O;if(P<N.intentSensitivity){F.showTip(K)}else{c.previousX=c.currentX;c.previousY=c.currentY;L()}}function M(){J=clearTimeout(J);c.delayInProgress=false}function H(){F.resetPosition(K)}this.show=L;this.hide=G;this.cancel=M;this.resetPosition=H}function j(){function G(M,L,J,O,P){var K=L.split("-")[0],N=new b(),I;if(q(M)){I=H(M,K)}else{I=F(M,K)}switch(L){case"n":N.set("left",I.left-(J/2));N.set("bottom",c.windowHeight-I.top+P);break;case"e":N.set("left",I.left+P);N.set("top",I.top-(O/2));break;case"s":N.set("left",I.left-(J/2));N.set("top",I.top+P);break;case"w":N.set("top",I.top-(O/2));N.set("right",c.windowWidth-I.left+P);break;case"nw":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"nw-alt":N.set("left",I.left);N.set("bottom",c.windowHeight-I.top+P);break;case"ne":N.set("left",I.left-20);N.set("bottom",c.windowHeight-I.top+P);break;case"ne-alt":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left);break;case"sw":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"sw-alt":N.set("left",I.left);N.set("top",I.top+P);break;case"se":N.set("left",I.left-20);N.set("top",I.top+P);break;case"se-alt":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left);break}return N}function F(K,J){var O=K.offset(),N=K.outerWidth(),I=K.outerHeight(),M,L;switch(J){case"n":M=O.left+N/2;L=O.top;break;case"e":M=O.left+N;L=O.top+I/2;break;case"s":M=O.left+N/2;L=O.top+I;break;case"w":M=O.left;L=O.top+I/2;break;case"nw":M=O.left;L=O.top;break;case"ne":M=O.left+N;L=O.top;break;case"sw":M=O.left;L=O.top+I;break;case"se":M=O.left+N;L=O.top+I;break}return{top:L,left:M}}function H(O,K){var S=O.closest("svg")[0],N=O[0],W=S.createSVGPoint(),L=N.getBBox(),V=N.getScreenCTM(),M=L.width/2,Q=L.height/2,P=[],I=["nw","n","ne","e","se","s","sw","w"],U,X,R,T;function J(){P.push(W.matrixTransform(V))}W.x=L.x;W.y=L.y;J();W.x+=M;J();W.x+=M;J();W.y+=Q;J();W.y+=Q;J();W.x-=M;J();W.x-=M;J();W.y-=Q;J();if(P[0].y!==P[1].y||P[0].x!==P[7].x){X=Math.atan2(V.b,V.a)*E;R=Math.ceil(((X%360)-22.5)/45);if(R<1){R+=8}while(R--){I.push(I.shift())}}for(T=0;T<P.length;T++){if(I[T]===K){U=P[T];break}}return{top:U.y+c.scrollTop,left:U.x+c.scrollLeft}}this.compute=G}function x(Q){var P=new j(),O=k("#"+Q.popupId);if(O.length===0){O=k("<div/>",{id:Q.popupId});if(w.length===0){w=k("body")}w.append(O)}if(Q.followMouse){if(!O.data(u)){A.on("mousemove",M);s.on("scroll",M);O.data(u,true)}}if(Q.mouseOnToPopup){O.on({mouseenter:function L(){if(O.data(f)){if(c.activeHover){c.activeHover.data(n).cancel()}}},mouseleave:function N(){if(c.activeHover){c.activeHover.data(n).hide()}}})}function I(S){S.data(e,true);O.queue(function R(T){H(S);T()})}function H(S){var U;if(!S.data(e)){return}if(c.isTipOpen){if(!c.isClosing){K(c.activeHover)}O.delay(100).queue(function R(V){H(S);V()});return}S.trigger("powerTipPreRender");U=B(S);if(U){O.empty().append(U)}else{return}S.trigger("powerTipRender");c.activeHover=S;c.isTipOpen=true;O.data(f,Q.mouseOnToPopup);if(!Q.followMouse){G(S);c.isFixedTipOpen=true}else{M()}O.fadeIn(Q.fadeInTime,function T(){if(!c.desyncTimeout){c.desyncTimeout=setInterval(J,500)}S.trigger("powerTipOpen")})}function K(R){c.isClosing=true;c.activeHover=null;c.isTipOpen=false;c.desyncTimeout=clearInterval(c.desyncTimeout);R.data(e,false);R.data(d,false);O.fadeOut(Q.fadeOutTime,function S(){var T=new b();c.isClosing=false;c.isFixedTipOpen=false;O.removeClass();T.set("top",c.currentY+Q.offset);T.set("left",c.currentX+Q.offset);O.css(T);R.trigger("powerTipClose")})}function M(){if(!c.isFixedTipOpen&&(c.isTipOpen||(c.tipOpenImminent&&O.data(u)))){var R=O.outerWidth(),V=O.outerHeight(),U=new b(),S,T;U.set("top",c.currentY+Q.offset);U.set("left",c.currentX+Q.offset);S=m(U,R,V);if(S!==p.none){T=a(S);if(T===1){if(S===p.right){U.set("left",c.windowWidth-R)}else{if(S===p.bottom){U.set("top",c.scrollTop+c.windowHeight-V)}}}else{U.set("left",c.currentX-R-Q.offset);U.set("top",c.currentY-V-Q.offset)}}O.css(U)}}function G(S){var R,T;if(Q.smartPlacement){R=k.fn.powerTip.smartPlacementLists[Q.placement];k.each(R,function(U,W){var V=m(F(S,W),O.outerWidth(),O.outerHeight());T=W;if(V===p.none){return false}})}else{F(S,Q.placement);T=Q.placement}O.addClass(T)}function F(U,T){var R=0,S,W,V=new b();V.set("top",0);V.set("left",0);O.css(V);do{S=O.outerWidth();W=O.outerHeight();V=P.compute(U,T,S,W,Q.offset);O.css(V)}while(++R<=5&&(S!==O.outerWidth()||W!==O.outerHeight()));return V}function J(){var R=false;if(c.isTipOpen&&!c.isClosing&&!c.delayInProgress){if(c.activeHover.data(e)===false||c.activeHover.is(":disabled")){R=true}else{if(!v(c.activeHover)&&!c.activeHover.is(":focus")&&!c.activeHover.data(d)){if(O.data(f)){if(!v(O)){R=true}}else{R=true}}}if(R){K(c.activeHover)}}}this.showTip=I;this.hideTip=K;this.resetPosition=G}function q(F){return window.SVGElement&&F[0] instanceof SVGElement}function h(){if(!c.mouseTrackingActive){c.mouseTrackingActive=true;k(function H(){c.scrollLeft=s.scrollLeft();c.scrollTop=s.scrollTop();c.windowWidth=s.width();c.windowHeight=s.height()});A.on("mousemove",i);s.on({resize:function G(){c.windowWidth=s.width();c.windowHeight=s.height()},scroll:function F(){var I=s.scrollLeft(),J=s.scrollTop();if(I!==c.scrollLeft){c.currentX+=I-c.scrollLeft;c.scrollLeft=I}if(J!==c.scrollTop){c.currentY+=J-c.scrollTop;c.scrollTop=J}}})}}function i(F){c.currentX=F.pageX;c.currentY=F.pageY}function v(F){var H=F.offset(),J=F[0].getBoundingClientRect(),I=J.right-J.left,G=J.bottom-J.top;return c.currentX>=H.left&&c.currentX<=H.left+I&&c.currentY>=H.top&&c.currentY<=H.top+G}function B(I){var G=I.data(y),F=I.data(o),K=I.data(l),H,J;if(G){if(k.isFunction(G)){G=G.call(I[0])}J=G}else{if(F){if(k.isFunction(F)){F=F.call(I[0])}if(F.length>0){J=F.clone(true,true)}}else{if(K){H=k("#"+K);if(H.length>0){J=H.html()}}}}return J}function m(M,L,K){var G=c.scrollTop,J=c.scrollLeft,I=G+c.windowHeight,F=J+c.windowWidth,H=p.none;if(M.top<G||Math.abs(M.bottom-c.windowHeight)-K<G){H|=p.top}if(M.top+K>I||Math.abs(M.bottom-c.windowHeight)>I){H|=p.bottom}if(M.left<J||M.right+L>F){H|=p.left}if(M.left+L>F||M.right<J){H|=p.right}return H}function a(G){var F=0;while(G){G&=G-1;F++}return F}}));/*!
+ * jQuery UI Touch Punch 0.2.3
+ *
+ * Copyright 2011–2014, Dave Furfero
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * Depends:
+ * jquery.ui.widget.js
+ * jquery.ui.mouse.js
+ */
+(function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return}var d=b.ui.mouse.prototype,f=d._mouseInit,c=d._mouseDestroy,a;function e(h,i){if(h.originalEvent.touches.length>1){return}h.preventDefault();var j=h.originalEvent.changedTouches[0],g=document.createEvent("MouseEvents");g.initMouseEvent(i,true,true,window,1,j.screenX,j.screenY,j.clientX,j.clientY,false,false,false,false,0,null);h.target.dispatchEvent(g)}d._touchStart=function(h){var g=this;if(a||!g._mouseCapture(h.originalEvent.changedTouches[0])){return}a=true;g._touchMoved=false;e(h,"mouseover");e(h,"mousemove");e(h,"mousedown")};d._touchMove=function(g){if(!a){return}this._touchMoved=true;e(g,"mousemove")};d._touchEnd=function(g){if(!a){return}e(g,"mouseup");e(g,"mouseout");if(!this._touchMoved){e(g,"click")}a=false};d._mouseInit=function(){var g=this;g.element.bind({touchstart:b.proxy(g,"_touchStart"),touchmove:b.proxy(g,"_touchMove"),touchend:b.proxy(g,"_touchEnd")});f.call(g)};d._mouseDestroy=function(){var g=this;g.element.unbind({touchstart:b.proxy(g,"_touchStart"),touchmove:b.proxy(g,"_touchMove"),touchend:b.proxy(g,"_touchEnd")});c.call(g)}})(jQuery);/*!
+ * SmartMenus jQuery Plugin - v1.0.0 - January 27, 2016
+ * http://www.smartmenus.org/
+ *
+ * Copyright Vasil Dinkov, Vadikom Web Ltd.
+ * http://vadikom.com
+ *
+ * Licensed MIT
+ */
+(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{if(typeof module==="object"&&typeof module.exports==="object"){module.exports=a(require("jquery"))}else{a(jQuery)}}}(function(a){var b=[],e=!!window.createPopup,f=false,d="ontouchstart" in window,h=false,g=window.requestAnimationFrame||function(l){return setTimeout(l,1000/60)},c=window.cancelAnimationFrame||function(l){clearTimeout(l)};function k(m){var n=".smartmenus_mouse";if(!h&&!m){var o=true,l=null;a(document).bind(i([["mousemove",function(s){var t={x:s.pageX,y:s.pageY,timeStamp:new Date().getTime()};if(l){var q=Math.abs(l.x-t.x),p=Math.abs(l.y-t.y);if((q>0||p>0)&&q<=2&&p<=2&&t.timeStamp-l.timeStamp<=300){f=true;if(o){var r=a(s.target).closest("a");if(r.is("a")){a.each(b,function(){if(a.contains(this.$root[0],r[0])){this.itemEnter({currentTarget:r[0]});return false}})}o=false}}}l=t}],[d?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut",function(p){if(j(p.originalEvent)){f=false}}]],n));h=true}else{if(h&&m){a(document).unbind(n);h=false}}}function j(l){return !/^(4|mouse)$/.test(l.pointerType)}function i(l,n){if(!n){n=""}var m={};a.each(l,function(o,p){m[p[0].split(" ").join(n+" ")+n]=p[1]});return m}a.SmartMenus=function(m,l){this.$root=a(m);this.opts=l;this.rootId="";this.accessIdPrefix="";this.$subArrow=null;this.activatedItems=[];this.visibleSubMenus=[];this.showTimeout=0;this.hideTimeout=0;this.scrollTimeout=0;this.clickActivated=false;this.focusActivated=false;this.zIndexInc=0;this.idInc=0;this.$firstLink=null;this.$firstSub=null;this.disabled=false;this.$disableOverlay=null;this.$touchScrollingSub=null;this.cssTransforms3d="perspective" in m.style||"webkitPerspective" in m.style;this.wasCollapsible=false;this.init()};a.extend(a.SmartMenus,{hideAll:function(){a.each(b,function(){this.menuHideAll()})},destroy:function(){while(b.length){b[0].destroy()}k(true)},prototype:{init:function(n){var l=this;if(!n){b.push(this);this.rootId=(new Date().getTime()+Math.random()+"").replace(/\D/g,"");this.accessIdPrefix="sm-"+this.rootId+"-";if(this.$root.hasClass("sm-rtl")){this.opts.rightToLeftSubMenus=true}var r=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).bind(i([["mouseover focusin",a.proxy(this.rootOver,this)],["mouseout focusout",a.proxy(this.rootOut,this)],["keydown",a.proxy(this.rootKeyDown,this)]],r)).delegate("a",i([["mouseenter",a.proxy(this.itemEnter,this)],["mouseleave",a.proxy(this.itemLeave,this)],["mousedown",a.proxy(this.itemDown,this)],["focus",a.proxy(this.itemFocus,this)],["blur",a.proxy(this.itemBlur,this)],["click",a.proxy(this.itemClick,this)]],r));r+=this.rootId;if(this.opts.hideOnClick){a(document).bind(i([["touchstart",a.proxy(this.docTouchStart,this)],["touchmove",a.proxy(this.docTouchMove,this)],["touchend",a.proxy(this.docTouchEnd,this)],["click",a.proxy(this.docClick,this)]],r))}a(window).bind(i([["resize orientationchange",a.proxy(this.winResize,this)]],r));if(this.opts.subIndicators){this.$subArrow=a("<span/>").addClass("sub-arrow");if(this.opts.subIndicatorsText){this.$subArrow.html(this.opts.subIndicatorsText)}}k()}this.$firstSub=this.$root.find("ul").each(function(){l.menuInit(a(this))}).eq(0);this.$firstLink=this.$root.find("a").eq(0);if(this.opts.markCurrentItem){var p=/(index|default)\.[^#\?\/]*/i,m=/#.*/,q=window.location.href.replace(p,""),o=q.replace(m,"");this.$root.find("a").each(function(){var s=this.href.replace(p,""),t=a(this);if(s==q||s==o){t.addClass("current");if(l.opts.markCurrentTree){t.parentsUntil("[data-smartmenus-id]","ul").each(function(){a(this).dataSM("parent-a").addClass("current")})}}})}this.wasCollapsible=this.isCollapsible()},destroy:function(m){if(!m){var n=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").unbind(n).undelegate(n);n+=this.rootId;a(document).unbind(n);a(window).unbind(n);if(this.opts.subIndicators){this.$subArrow=null}}this.menuHideAll();var l=this;this.$root.find("ul").each(function(){var o=a(this);if(o.dataSM("scroll-arrows")){o.dataSM("scroll-arrows").remove()}if(o.dataSM("shown-before")){if(l.opts.subMenusMinWidth||l.opts.subMenusMaxWidth){o.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap")}if(o.dataSM("scroll-arrows")){o.dataSM("scroll-arrows").remove()}o.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})}if((o.attr("id")||"").indexOf(l.accessIdPrefix)==0){o.removeAttr("id")}}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("ie-shim").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded");this.$root.find("a.has-submenu").each(function(){var o=a(this);if(o.attr("id").indexOf(l.accessIdPrefix)==0){o.removeAttr("id")}}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub");if(this.opts.subIndicators){this.$root.find("span.sub-arrow").remove()}if(this.opts.markCurrentItem){this.$root.find("a.current").removeClass("current")}if(!m){this.$root=null;this.$firstLink=null;this.$firstSub=null;if(this.$disableOverlay){this.$disableOverlay.remove();this.$disableOverlay=null}b.splice(a.inArray(this,b),1)}},disable:function(l){if(!this.disabled){this.menuHideAll();if(!l&&!this.opts.isPopup&&this.$root.is(":visible")){var m=this.$root.offset();this.$disableOverlay=a('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:m.top,left:m.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(true),opacity:0}).appendTo(document.body)}this.disabled=true}},docClick:function(l){if(this.$touchScrollingSub){this.$touchScrollingSub=null;return}if(this.visibleSubMenus.length&&!a.contains(this.$root[0],l.target)||a(l.target).is("a")){this.menuHideAll()}},docTouchEnd:function(m){if(!this.lastTouch){return}if(this.visibleSubMenus.length&&(this.lastTouch.x2===undefined||this.lastTouch.x1==this.lastTouch.x2)&&(this.lastTouch.y2===undefined||this.lastTouch.y1==this.lastTouch.y2)&&(!this.lastTouch.target||!a.contains(this.$root[0],this.lastTouch.target))){if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}var l=this;this.hideTimeout=setTimeout(function(){l.menuHideAll()},350)}this.lastTouch=null},docTouchMove:function(m){if(!this.lastTouch){return}var l=m.originalEvent.touches[0];this.lastTouch.x2=l.pageX;this.lastTouch.y2=l.pageY},docTouchStart:function(m){var l=m.originalEvent.touches[0];this.lastTouch={x1:l.pageX,y1:l.pageY,target:l.target}},enable:function(){if(this.disabled){if(this.$disableOverlay){this.$disableOverlay.remove();this.$disableOverlay=null}this.disabled=false}},getClosestMenu:function(m){var l=a(m).closest("ul");while(l.dataSM("in-mega")){l=l.parent().closest("ul")}return l[0]||null},getHeight:function(l){return this.getOffset(l,true)},getOffset:function(n,l){var m;if(n.css("display")=="none"){m={position:n[0].style.position,visibility:n[0].style.visibility};n.css({position:"absolute",visibility:"hidden"}).show()}var o=n[0].getBoundingClientRect&&n[0].getBoundingClientRect(),p=o&&(l?o.height||o.bottom-o.top:o.width||o.right-o.left);if(!p&&p!==0){p=l?n[0].offsetHeight:n[0].offsetWidth}if(m){n.hide().css(m)}return p},getStartZIndex:function(l){var m=parseInt(this[l?"$root":"$firstSub"].css("z-index"));if(!l&&isNaN(m)){m=parseInt(this.$root.css("z-index"))}return !isNaN(m)?m:1},getTouchPoint:function(l){return l.touches&&l.touches[0]||l.changedTouches&&l.changedTouches[0]||l},getViewport:function(l){var m=l?"Height":"Width",o=document.documentElement["client"+m],n=window["inner"+m];if(n){o=Math.min(o,n)}return o},getViewportHeight:function(){return this.getViewport(true)},getViewportWidth:function(){return this.getViewport()},getWidth:function(l){return this.getOffset(l)},handleEvents:function(){return !this.disabled&&this.isCSSOn()},handleItemEvents:function(l){return this.handleEvents()&&!this.isLinkInMegaMenu(l)},isCollapsible:function(){return this.$firstSub.css("position")=="static"},isCSSOn:function(){return this.$firstLink.css("display")=="block"},isFixed:function(){var l=this.$root.css("position")=="fixed";if(!l){this.$root.parentsUntil("body").each(function(){if(a(this).css("position")=="fixed"){l=true;return false}})}return l},isLinkInMegaMenu:function(l){return a(this.getClosestMenu(l[0])).hasClass("mega-menu")},isTouchMode:function(){return !f||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(p,l){var n=p.closest("ul"),q=n.dataSM("level");if(q>1&&(!this.activatedItems[q-2]||this.activatedItems[q-2][0]!=n.dataSM("parent-a")[0])){var m=this;a(n.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(n).each(function(){m.itemActivate(a(this).dataSM("parent-a"))})}if(!this.isCollapsible()||l){this.menuHideSubMenus(!this.activatedItems[q-1]||this.activatedItems[q-1][0]!=p[0]?q-1:q)}this.activatedItems[q-1]=p;if(this.$root.triggerHandler("activate.smapi",p[0])===false){return}var o=p.dataSM("sub");if(o&&(this.isTouchMode()||(!this.opts.showOnClick||this.clickActivated))){this.menuShow(o)}},itemBlur:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}this.$root.triggerHandler("blur.smapi",l[0])},itemClick:function(o){var n=a(o.currentTarget);if(!this.handleItemEvents(n)){return}if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==n.closest("ul")[0]){this.$touchScrollingSub=null;o.stopPropagation();return false}if(this.$root.triggerHandler("click.smapi",n[0])===false){return false}var p=a(o.target).is("span.sub-arrow"),m=n.dataSM("sub"),l=m?m.dataSM("level")==2:false;if(m&&!m.is(":visible")){if(this.opts.showOnClick&&l){this.clickActivated=true}this.itemActivate(n);if(m.is(":visible")){this.focusActivated=true;return false}}else{if(this.isCollapsible()&&p){this.itemActivate(n);this.menuHide(m);return false}}if(this.opts.showOnClick&&l||n.hasClass("disabled")||this.$root.triggerHandler("select.smapi",n[0])===false){return false}},itemDown:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}l.dataSM("mousedown",true)},itemEnter:function(n){var m=a(n.currentTarget);if(!this.handleItemEvents(m)){return}if(!this.isTouchMode()){if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}var l=this;this.showTimeout=setTimeout(function(){l.itemActivate(m)},this.opts.showOnClick&&m.closest("ul").dataSM("level")==1?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",m[0])},itemFocus:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}if(this.focusActivated&&(!this.isTouchMode()||!l.dataSM("mousedown"))&&(!this.activatedItems.length||this.activatedItems[this.activatedItems.length-1][0]!=l[0])){this.itemActivate(l,true)}this.$root.triggerHandler("focus.smapi",l[0])},itemLeave:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}if(!this.isTouchMode()){l[0].blur();if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}}l.removeDataSM("mousedown");this.$root.triggerHandler("mouseleave.smapi",l[0])},menuHide:function(m){if(this.$root.triggerHandler("beforehide.smapi",m[0])===false){return}m.stop(true,true);if(m.css("display")!="none"){var l=function(){m.css("z-index","")};if(this.isCollapsible()){if(this.opts.collapsibleHideFunction){this.opts.collapsibleHideFunction.call(this,m,l)}else{m.hide(this.opts.collapsibleHideDuration,l)}}else{if(this.opts.hideFunction){this.opts.hideFunction.call(this,m,l)}else{m.hide(this.opts.hideDuration,l)}}if(m.dataSM("ie-shim")){m.dataSM("ie-shim").remove().css({"-webkit-transform":"",transform:""})}if(m.dataSM("scroll")){this.menuScrollStop(m);m.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).unbind(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()}m.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false");m.attr({"aria-expanded":"false","aria-hidden":"true"});var n=m.dataSM("level");this.activatedItems.splice(n-1,1);this.visibleSubMenus.splice(a.inArray(m,this.visibleSubMenus),1);this.$root.triggerHandler("hide.smapi",m[0])}},menuHideAll:function(){if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}var m=this.opts.isPopup?1:0;for(var l=this.visibleSubMenus.length-1;l>=m;l--){this.menuHide(this.visibleSubMenus[l])}if(this.opts.isPopup){this.$root.stop(true,true);if(this.$root.is(":visible")){if(this.opts.hideFunction){this.opts.hideFunction.call(this,this.$root)}else{this.$root.hide(this.opts.hideDuration)}if(this.$root.dataSM("ie-shim")){this.$root.dataSM("ie-shim").remove()}}}this.activatedItems=[];this.visibleSubMenus=[];this.clickActivated=false;this.focusActivated=false;this.zIndexInc=0;this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(n){for(var l=this.activatedItems.length-1;l>=n;l--){var m=this.activatedItems[l].dataSM("sub");if(m){this.menuHide(m)}}},menuIframeShim:function(l){if(e&&this.opts.overlapControlsInIE&&!l.dataSM("ie-shim")){l.dataSM("ie-shim",a("<iframe/>").attr({src:"javascript:0",tabindex:-9}).css({position:"absolute",top:"auto",left:"0",opacity:0,border:"0"}))}},menuInit:function(l){if(!l.dataSM("in-mega")){if(l.hasClass("mega-menu")){l.find("ul").dataSM("in-mega",true)}var q=2,m=l[0];while((m=m.parentNode.parentNode)!=this.$root[0]){q++}var n=l.prevAll("a").eq(-1);if(!n.length){n=l.prevAll().find("a").eq(-1)}n.addClass("has-submenu").dataSM("sub",l);l.dataSM("parent-a",n).dataSM("level",q).parent().dataSM("sub",l);var o=n.attr("id")||this.accessIdPrefix+(++this.idInc),p=l.attr("id")||this.accessIdPrefix+(++this.idInc);n.attr({id:o,"aria-haspopup":"true","aria-controls":p,"aria-expanded":"false"});l.attr({id:p,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"});if(this.opts.subIndicators){n[this.opts.subIndicatorsPos](this.$subArrow.clone())}}},menuPosition:function(K){var r=K.dataSM("parent-a"),D=r.closest("li"),E=D.parent(),l=K.dataSM("level"),t=this.getWidth(K),J=this.getHeight(K),u=r.offset(),o=u.left,m=u.top,q=this.getWidth(r),F=this.getHeight(r),H=a(window),v=H.scrollLeft(),s=H.scrollTop(),z=this.getViewportWidth(),L=this.getViewportHeight(),w=E.parent().is("[data-sm-horizontal-sub]")||l==2&&!E.hasClass("sm-vertical"),B=this.opts.rightToLeftSubMenus&&!D.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&D.is("[data-sm-reverse]"),p=l==2?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,n=l==2?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY,C,A;if(w){C=B?q-t-p:p;A=this.opts.bottomToTopSubMenus?-J-n:F+n}else{C=B?p-t:q-p;A=this.opts.bottomToTopSubMenus?F-n-J:n}if(this.opts.keepInViewport){var N=o+C,M=m+A;if(B&&N<v){C=w?v-N+C:q-p}else{if(!B&&N+t>v+z){C=w?v+z-t-N+C:p-t}}if(!w){if(J<L&&M+J>s+L){A+=s+L-J-M}else{if(J>=L||M<s){A+=s-M}}}if(w&&(M+J>s+L+0.49||M<s)||!w&&J>L+0.49){var G=this;if(!K.dataSM("scroll-arrows")){K.dataSM("scroll-arrows",a([a('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],a('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).bind({mouseenter:function(){K.dataSM("scroll").up=a(this).hasClass("scroll-up");G.menuScroll(K)},mouseleave:function(x){G.menuScrollStop(K);G.menuScrollOut(K,x)},"mousewheel DOMMouseScroll":function(x){x.preventDefault()}}).insertAfter(K))}var I=".smartmenus_scroll";K.dataSM("scroll",{y:this.cssTransforms3d?0:A-F,step:1,itemH:F,subH:J,arrowDownH:this.getHeight(K.dataSM("scroll-arrows").eq(1))}).bind(i([["mouseover",function(x){G.menuScrollOver(K,x)}],["mouseout",function(x){G.menuScrollOut(K,x)}],["mousewheel DOMMouseScroll",function(x){G.menuScrollMousewheel(K,x)}]],I)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:C+(parseInt(K.css("border-left-width"))||0),width:t-(parseInt(K.css("border-left-width"))||0)-(parseInt(K.css("border-right-width"))||0),zIndex:K.css("z-index")}).eq(w&&this.opts.bottomToTopSubMenus?0:1).show();if(this.isFixed()){K.css({"touch-action":"none","-ms-touch-action":"none"}).bind(i([[d?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp",function(x){G.menuScrollTouch(K,x)}]],I))}}}K.css({top:"auto",left:"0",marginLeft:C,marginTop:A-F});this.menuIframeShim(K);if(K.dataSM("ie-shim")){K.dataSM("ie-shim").css({zIndex:K.css("z-index"),width:t,height:J,marginLeft:C,marginTop:A-F})}},menuScroll:function(r,m,n){var p=r.dataSM("scroll"),q=r.dataSM("scroll-arrows"),o=p.up?p.upEnd:p.downEnd,s;if(!m&&p.momentum){p.momentum*=0.92;s=p.momentum;if(s<0.5){this.menuScrollStop(r);return}}else{s=n||(m||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(p.step))}var l=r.dataSM("level");if(this.activatedItems[l-1]&&this.activatedItems[l-1].dataSM("sub")&&this.activatedItems[l-1].dataSM("sub").is(":visible")){this.menuHideSubMenus(l-1)}p.y=p.up&&o<=p.y||!p.up&&o>=p.y?p.y:(Math.abs(o-p.y)>s?p.y+(p.up?s:-s):o);r.add(r.dataSM("ie-shim")).css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+p.y+"px, 0)",transform:"translate3d(0, "+p.y+"px, 0)"}:{marginTop:p.y});if(f&&(p.up&&p.y>p.downEnd||!p.up&&p.y<p.upEnd)){q.eq(p.up?1:0).show()}if(p.y==o){if(f){q.eq(p.up?0:1).hide()}this.menuScrollStop(r)}else{if(!m){if(this.opts.scrollAccelerate&&p.step<this.opts.scrollStep){p.step+=0.2}var t=this;this.scrollTimeout=g(function(){t.menuScroll(r)})}}},menuScrollMousewheel:function(m,n){if(this.getClosestMenu(n.target)==m[0]){n=n.originalEvent;var l=(n.wheelDelta||-n.detail)>0;if(m.dataSM("scroll-arrows").eq(l?0:1).is(":visible")){m.dataSM("scroll").up=l;this.menuScroll(m,true)}}n.preventDefault()},menuScrollOut:function(l,m){if(f){if(!/^scroll-(up|down)/.test((m.relatedTarget||"").className)&&(l[0]!=m.relatedTarget&&!a.contains(l[0],m.relatedTarget)||this.getClosestMenu(m.relatedTarget)!=l[0])){l.dataSM("scroll-arrows").css("visibility","hidden")}}},menuScrollOver:function(n,o){if(f){if(!/^scroll-(up|down)/.test(o.target.className)&&this.getClosestMenu(o.target)==n[0]){this.menuScrollRefreshData(n);var m=n.dataSM("scroll"),l=a(window).scrollTop()-n.dataSM("parent-a").offset().top-m.itemH;n.dataSM("scroll-arrows").eq(0).css("margin-top",l).end().eq(1).css("margin-top",l+this.getViewportHeight()-m.arrowDownH).end().css("visibility","visible")}}},menuScrollRefreshData:function(n){var m=n.dataSM("scroll"),l=a(window).scrollTop()-n.dataSM("parent-a").offset().top-m.itemH;if(this.cssTransforms3d){l=-(parseFloat(n.css("margin-top"))-l)}a.extend(m,{upEnd:l,downEnd:l+this.getViewportHeight()-m.subH})},menuScrollStop:function(l){if(this.scrollTimeout){c(this.scrollTimeout);this.scrollTimeout=0;l.dataSM("scroll").step=1;return true}},menuScrollTouch:function(p,q){q=q.originalEvent;if(j(q)){var m=this.getTouchPoint(q);if(this.getClosestMenu(m.target)==p[0]){var o=p.dataSM("scroll");if(/(start|down)$/i.test(q.type)){if(this.menuScrollStop(p)){q.preventDefault();this.$touchScrollingSub=p}else{this.$touchScrollingSub=null}this.menuScrollRefreshData(p);a.extend(o,{touchStartY:m.pageY,touchStartTime:q.timeStamp})}else{if(/move$/i.test(q.type)){var n=o.touchY!==undefined?o.touchY:o.touchStartY;if(n!==undefined&&n!=m.pageY){this.$touchScrollingSub=p;var l=n<m.pageY;if(o.up!==undefined&&o.up!=l){a.extend(o,{touchStartY:m.pageY,touchStartTime:q.timeStamp})}a.extend(o,{up:l,touchY:m.pageY});this.menuScroll(p,true,Math.abs(m.pageY-n))}q.preventDefault()}else{if(o.touchY!==undefined){if(o.momentum=Math.pow(Math.abs(m.pageY-o.touchStartY)/(q.timeStamp-o.touchStartTime),2)*15){this.menuScrollStop(p);this.menuScroll(p);q.preventDefault()}delete o.touchY}}}}}},menuShow:function(n){if(!n.dataSM("beforefirstshowfired")){n.dataSM("beforefirstshowfired",true);if(this.$root.triggerHandler("beforefirstshow.smapi",n[0])===false){return}}if(this.$root.triggerHandler("beforeshow.smapi",n[0])===false){return}n.dataSM("shown-before",true).stop(true,true);if(!n.is(":visible")){var m=n.dataSM("parent-a");if(this.opts.keepHighlighted||this.isCollapsible()){m.addClass("highlighted")}if(this.isCollapsible()){n.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""})}else{n.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1);if(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth){n.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap");if(this.opts.subMenusMinWidth){n.css("min-width",this.opts.subMenusMinWidth)}if(this.opts.subMenusMaxWidth){var o=this.getWidth(n);n.css("max-width",this.opts.subMenusMaxWidth);if(o>this.getWidth(n)){n.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}}}this.menuPosition(n);if(n.dataSM("ie-shim")){n.dataSM("ie-shim").insertBefore(n)}}var l=function(){n.css("overflow","")};if(this.isCollapsible()){if(this.opts.collapsibleShowFunction){this.opts.collapsibleShowFunction.call(this,n,l)}else{n.show(this.opts.collapsibleShowDuration,l)}}else{if(this.opts.showFunction){this.opts.showFunction.call(this,n,l)}else{n.show(this.opts.showDuration,l)}}m.attr("aria-expanded","true");n.attr({"aria-expanded":"true","aria-hidden":"false"});this.visibleSubMenus.push(n);this.$root.triggerHandler("show.smapi",n[0])}},popupHide:function(l){if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}var m=this;this.hideTimeout=setTimeout(function(){m.menuHideAll()},l?1:this.opts.hideTimeout)},popupShow:function(o,n){if(!this.opts.isPopup){alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.');return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}this.$root.dataSM("shown-before",true).stop(true,true);if(!this.$root.is(":visible")){this.$root.css({left:o,top:n});this.menuIframeShim(this.$root);if(this.$root.dataSM("ie-shim")){this.$root.dataSM("ie-shim").css({zIndex:this.$root.css("z-index"),width:this.getWidth(this.$root),height:this.getHeight(this.$root),left:o,top:n}).insertBefore(this.$root)}var m=this,l=function(){m.$root.css("overflow","")};if(this.opts.showFunction){this.opts.showFunction.call(this,this.$root,l)}else{this.$root.show(this.opts.showDuration,l)}this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(true);this.init(true)},rootKeyDown:function(o){if(!this.handleEvents()){return}switch(o.keyCode){case 27:var m=this.activatedItems[0];if(m){this.menuHideAll();m[0].focus();var n=m.dataSM("sub");if(n){this.menuHide(n)}}break;case 32:var l=a(o.target);if(l.is("a")&&this.handleItemEvents(l)){var n=l.dataSM("sub");if(n&&!n.is(":visible")){this.itemClick({currentTarget:o.target});o.preventDefault()}}break}},rootOut:function(m){if(!this.handleEvents()||this.isTouchMode()||m.target==this.$root[0]){return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}if(!this.opts.showOnClick||!this.opts.hideOnClick){var l=this;this.hideTimeout=setTimeout(function(){l.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(l){if(!this.handleEvents()||this.isTouchMode()||l.target==this.$root[0]){return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}},winResize:function(m){if(!this.handleEvents()){if(this.$disableOverlay){var n=this.$root.offset();this.$disableOverlay.css({top:n.top,left:n.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}return}if(!("onorientationchange" in window)||m.type=="orientationchange"){var l=this.isCollapsible();if(!(this.wasCollapsible&&l)){if(this.activatedItems.length){this.activatedItems[this.activatedItems.length-1][0].blur()}this.menuHideAll()}this.wasCollapsible=l}}}});a.fn.dataSM=function(l,m){if(m){return this.data(l+"_smartmenus",m)}return this.data(l+"_smartmenus")};a.fn.removeDataSM=function(l){return this.removeData(l+"_smartmenus")};a.fn.smartmenus=function(m){if(typeof m=="string"){var l=arguments,o=m;Array.prototype.shift.call(l);return this.each(function(){var p=a(this).data("smartmenus");if(p&&p[o]){p[o].apply(p,l)}})}var n=a.extend({},a.fn.smartmenus.defaults,m);return this.each(function(){new a.SmartMenus(this,n)})};a.fn.smartmenus.defaults={isPopup:false,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:true,subIndicatorsPos:"prepend",subIndicatorsText:"+",scrollStep:30,scrollAccelerate:true,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(m,l){m.fadeOut(200,l)},collapsibleShowDuration:0,collapsibleShowFunction:function(m,l){m.slideDown(200,l)},collapsibleHideDuration:0,collapsibleHideFunction:function(m,l){m.slideUp(200,l)},showOnClick:false,hideOnClick:true,noMouseOver:false,keepInViewport:true,keepHighlighted:true,markCurrentItem:false,markCurrentTree:true,rightToLeftSubMenus:false,bottomToTopSubMenus:false,overlapControlsInIE:true};return a})); \ No newline at end of file
diff --git a/zh-cn/md__c_h_a_n_g_e_l_o_g.html b/zh-cn/md__c_h_a_n_g_e_l_o_g.html
index 29829f45..224069a4 100644
--- a/zh-cn/md__c_h_a_n_g_e_l_o_g.html
+++ b/zh-cn/md__c_h_a_n_g_e_l_o_g.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: Change Log</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('md__c_h_a_n_g_e_l_o_g.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/md_doc_dom_8zh-cn.html b/zh-cn/md_doc_dom_8zh-cn.html
index 74dcce99..360a3490 100644
--- a/zh-cn/md_doc_dom_8zh-cn.html
+++ b/zh-cn/md_doc_dom_8zh-cn.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: DOM</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('md_doc_dom_8zh-cn.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -99,46 +100,12 @@ $(document).ready(function(){initNavTree('md_doc_dom_8zh-cn.html','');});
<h1><a class="anchor" id="Template"></a>
模板</h1>
<p>教程中使用了 <code>Value</code> 和 <code>Document</code> 类型。与 <code>std::string</code> 相似,这些类型其实是两个模板类的 <code>typedef</code>:</p>
-<div class="fragment"><div class="line"><span class="keyword">namespace </span>rapidjson {</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator = MemoryPoolAllocator&lt;&gt; &gt;</div>
-<div class="line"><span class="keyword">class </span>GenericValue {</div>
-<div class="line"> <span class="comment">// ...</span></div>
-<div class="line">};</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator = MemoryPoolAllocator&lt;&gt; &gt;</div>
-<div class="line"><span class="keyword">class </span>GenericDocument : <span class="keyword">public</span> GenericValue&lt;Encoding, Allocator&gt; {</div>
-<div class="line"> <span class="comment">// ...</span></div>
-<div class="line">};</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">typedef</span> GenericValue&lt;UTF8&lt;&gt; &gt; <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>;</div>
-<div class="line"><span class="keyword">typedef</span> GenericDocument&lt;UTF8&lt;&gt; &gt; <a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a>;</div>
-<div class="line"></div>
-<div class="line">} <span class="comment">// namespace rapidjson</span></div>
-</div><!-- fragment --><p>使用者可以自定义这些模板参数。</p>
+<div class="fragment"><div class="line"><span class="keyword">namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a> {</div><div class="line"></div><div class="line"><span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator = MemoryPoolAllocator&lt;&gt; &gt;</div><div class="line"><span class="keyword">class </span>GenericValue {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator = MemoryPoolAllocator&lt;&gt; &gt;</div><div class="line"><span class="keyword">class </span>GenericDocument : <span class="keyword">public</span> <a class="code" href="classrapidjson_1_1_generic_value.html#ad1f8199e65662e0d52a13a1577d4e4a5">GenericValue</a>&lt;Encoding, Allocator&gt; {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">typedef</span> GenericValue&lt;UTF8&lt;&gt; &gt; <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>;</div><div class="line"><span class="keyword">typedef</span> GenericDocument&lt;UTF8&lt;&gt; &gt; <a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a>;</div><div class="line"></div><div class="line">} <span class="comment">// namespace rapidjson</span></div></div><!-- fragment --><p>使用者可以自定义这些模板参数。</p>
<h2><a class="anchor" id="Encoding"></a>
编码</h2>
<p><code>Encoding</code> 参数指明在内存中的 JSON String 使用哪种编码。可行的选项有 <code>UTF8</code>、<code>UTF16</code>、<code>UTF32</code>。要注意这 3 个类型其实也是模板类。<code>UTF8&lt;&gt;</code> 等同 <code>UTF8&lt;char&gt;</code>,这代表它使用 <code>char</code> 来存储字符串。更多细节可以参考 <a class="el" href="md_doc_encoding_8zh-cn.html">编码</a>。</p>
<p>这里是一个例子。假设一个 Windows 应用软件希望查询存储于 JSON 中的本地化字符串。Windows 中含 Unicode 的函数使用 UTF-16(宽字符)编码。无论 JSON 文件使用哪种编码,我们都可以把字符串以 UTF-16 形式存储在内存。</p>
-<div class="fragment"><div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;UTF16&lt;&gt;</a> &gt; WDocument;</div>
-<div class="line"><span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;UTF16&lt;&gt;</a> &gt; WValue;</div>
-<div class="line"></div>
-<div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;localization.json&quot;</span>, <span class="stringliteral">&quot;rb&quot;</span>); <span class="comment">// 非 Windows 平台使用 &quot;r&quot;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keywordtype">char</span> readBuffer[256];</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a> bis(fp, readBuffer, <span class="keyword">sizeof</span>(readBuffer));</div>
-<div class="line"></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">AutoUTFInputStream&lt;unsigned, FileReadStream&gt;</a> eis(bis); <span class="comment">// 包装 bis 成 eis</span></div>
-<div class="line"></div>
-<div class="line">WDocument d;</div>
-<div class="line">d.ParseStream&lt;0, <a class="code" href="structrapidjson_1_1_auto_u_t_f.html">AutoUTF&lt;unsigned&gt;</a> &gt;(eis);</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">const</span> WValue locale(L<span class="stringliteral">&quot;ja&quot;</span>); <span class="comment">// Japanese</span></div>
-<div class="line"></div>
-<div class="line">MessageBoxW(hWnd, d[locale].GetString(), L<span class="stringliteral">&quot;Test&quot;</span>, MB_OK);</div>
-</div><!-- fragment --><h2><a class="anchor" id="Allocator"></a>
+<div class="fragment"><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"></div><div class="line"><span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;UTF16&lt;&gt;</a> &gt; WDocument;</div><div class="line"><span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;UTF16&lt;&gt;</a> &gt; WValue;</div><div class="line"></div><div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;localization.json&quot;</span>, <span class="stringliteral">&quot;rb&quot;</span>); <span class="comment">// 非 Windows 平台使用 &quot;r&quot;</span></div><div class="line"></div><div class="line"><span class="keywordtype">char</span> readBuffer[256];</div><div class="line"><a class="code" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a> bis(fp, readBuffer, <span class="keyword">sizeof</span>(readBuffer));</div><div class="line"></div><div class="line"><a class="code" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">AutoUTFInputStream&lt;unsigned, FileReadStream&gt;</a> eis(bis); <span class="comment">// 包装 bis 成 eis</span></div><div class="line"></div><div class="line">WDocument d;</div><div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">ParseStream</a>&lt;0, <a class="code" href="structrapidjson_1_1_auto_u_t_f.html">AutoUTF&lt;unsigned&gt;</a> &gt;(eis);</div><div class="line"></div><div class="line"><span class="keyword">const</span> WValue locale(L<span class="stringliteral">&quot;ja&quot;</span>); <span class="comment">// Japanese</span></div><div class="line"></div><div class="line">MessageBoxW(hWnd, d[locale].GetString(), L<span class="stringliteral">&quot;Test&quot;</span>, MB_OK);</div></div><!-- fragment --><h2><a class="anchor" id="Allocator"></a>
分配器</h2>
<p><code>Allocator</code> 定义当 <code>Document</code>/<code>Value</code> 分配或释放内存时使用那个分配类。<code>Document</code> 拥有或引用到一个 <code>Allocator</code> 实例。而为了节省内存,<code>Value</code> 没有这么做。</p>
<p><code>GenericDocument</code> 的缺省分配器是 <code>MemoryPoolAllocator</code>。此分配器实际上会顺序地分配内存,并且不能逐一释放。当要解析一个 JSON 并生成 DOM,这种分配器是非常合适的。</p>
@@ -146,38 +113,7 @@ $(document).ready(function(){initNavTree('md_doc_dom_8zh-cn.html','');});
<h1><a class="anchor" id="Parsing"></a>
解析</h1>
<p><code>Document</code> 提供几个解析函数。以下的 (1) 是根本的函数,其他都是调用 (1) 的协助函数。</p>
-<div class="fragment"><div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// (1) 根本</span></div>
-<div class="line"><span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">GenericDocument::ParseStream</a>(InputStream&amp; is);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// (2) 使用流的编码</span></div>
-<div class="line"><span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">GenericDocument::ParseStream</a>(InputStream&amp; is);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// (3) 使用缺省标志</span></div>
-<div class="line"><span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">GenericDocument::ParseStream</a>(InputStream&amp; is);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// (4) 原位解析</span></div>
-<div class="line"><span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags&gt;</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a7ba626bf84eb45a9bca0b7723bf47f3f">GenericDocument::ParseInsitu</a>(Ch* str);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// (5) 原位解析,使用缺省标志</span></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a7ba626bf84eb45a9bca0b7723bf47f3f">GenericDocument::ParseInsitu</a>(Ch* str);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// (6) 正常解析一个字符串</span></div>
-<div class="line"><span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> SourceEncoding&gt;</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">GenericDocument::Parse</a>(<span class="keyword">const</span> Ch* str);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// (7) 正常解析一个字符串,使用 Document 的编码</span></div>
-<div class="line"><span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags&gt;</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">GenericDocument::Parse</a>(<span class="keyword">const</span> Ch* str);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// (8) 正常解析一个字符串,使用缺省标志</span></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">GenericDocument::Parse</a>(<span class="keyword">const</span> Ch* str);</div>
-</div><!-- fragment --><p><a class="el" href="md_doc_tutorial_8zh-cn.html">教程</a> 中的例使用 (8) 去正常解析字符串。而 <a class="el" href="md_doc_stream_8zh-cn.html">流</a> 的例子使用前 3 个函数。我们将稍后介绍原位(*In situ*) 解析。</p>
+<div class="fragment"><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"></div><div class="line"><span class="comment">// (1) 根本</span></div><div class="line"><span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">GenericDocument::ParseStream</a>(InputStream&amp; is);</div><div class="line"></div><div class="line"><span class="comment">// (2) 使用流的编码</span></div><div class="line"><span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">GenericDocument::ParseStream</a>(InputStream&amp; is);</div><div class="line"></div><div class="line"><span class="comment">// (3) 使用缺省标志</span></div><div class="line"><span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">GenericDocument::ParseStream</a>(InputStream&amp; is);</div><div class="line"></div><div class="line"><span class="comment">// (4) 原位解析</span></div><div class="line"><span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags&gt;</div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a7ba626bf84eb45a9bca0b7723bf47f3f">GenericDocument::ParseInsitu</a>(Ch* str);</div><div class="line"></div><div class="line"><span class="comment">// (5) 原位解析,使用缺省标志</span></div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#a7ba626bf84eb45a9bca0b7723bf47f3f">GenericDocument::ParseInsitu</a>(Ch* str);</div><div class="line"></div><div class="line"><span class="comment">// (6) 正常解析一个字符串</span></div><div class="line"><span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> SourceEncoding&gt;</div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">GenericDocument::Parse</a>(<span class="keyword">const</span> Ch* str);</div><div class="line"></div><div class="line"><span class="comment">// (7) 正常解析一个字符串,使用 Document 的编码</span></div><div class="line"><span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags&gt;</div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">GenericDocument::Parse</a>(<span class="keyword">const</span> Ch* str);</div><div class="line"></div><div class="line"><span class="comment">// (8) 正常解析一个字符串,使用缺省标志</span></div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&amp; <a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">GenericDocument::Parse</a>(<span class="keyword">const</span> Ch* str);</div></div><!-- fragment --><p><a class="el" href="md_doc_tutorial_8zh-cn.html">教程</a> 中的例使用 (8) 去正常解析字符串。而 <a class="el" href="md_doc_stream_8zh-cn.html">流</a> 的例子使用前 3 个函数。我们将稍后介绍原位(*In situ*) 解析。</p>
<p><code>parseFlags</code> 是以下位标置的组合:</p>
<table class="doxtable">
<tr>
@@ -250,18 +186,7 @@ $(document).ready(function(){initNavTree('md_doc_dom_8zh-cn.html','');});
<p>错误的偏移量定义为从流开始至错误处的字符数量。目前 RapidJSON 不记录错误行号。</p>
<p>要取得错误讯息,RapidJSON 在 <code><a class="el" href="en_8h_source.html">rapidjson/error/en.h</a></code> 中提供了英文错误讯息。使用者可以修改它用于其他语言环境,或使用一个自定义的本地化系统。</p>
<p>以下是一个处理错误的例子。</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">rapidjson/document.h</a>&quot;</span></div>
-<div class="line"><span class="preprocessor">#include &quot;rapidjson/error/en.h&quot;</span></div>
-<div class="line"></div>
-<div class="line"><span class="comment">// ...</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div>
-<div class="line"><span class="keywordflow">if</span> (d.Parse(json).HasParseError()) {</div>
-<div class="line"> fprintf(stderr, <span class="stringliteral">&quot;\nError(offset %u): %s\n&quot;</span>, </div>
-<div class="line"> (<span class="keywordtype">unsigned</span>)d.GetErrorOffset(),</div>
-<div class="line"> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">GetParseError_En</a>(d.GetParseErrorCode()));</div>
-<div class="line"> <span class="comment">// ...</span></div>
-<div class="line">}</div>
-</div><!-- fragment --><h2><a class="anchor" id="InSituParsing"></a>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">rapidjson/document.h</a>&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;rapidjson/error/en.h&quot;</span></div><div class="line"></div><div class="line"><span class="comment">// ...</span></div><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div><div class="line"><span class="keywordflow">if</span> (d.Parse(json).HasParseError()) {</div><div class="line"> fprintf(stderr, <span class="stringliteral">&quot;\nError(offset %u): %s\n&quot;</span>, </div><div class="line"> (<span class="keywordtype">unsigned</span>)d.GetErrorOffset(),</div><div class="line"> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">GetParseError_En</a>(d.GetParseErrorCode()));</div><div class="line"> <span class="comment">// ...</span></div><div class="line">}</div></div><!-- fragment --><h2><a class="anchor" id="InSituParsing"></a>
原位解析</h2>
<p>根据 <a href="http://en.wikipedia.org/wiki/In_situ">维基百科</a>:</p>
<blockquote class="doxtable">
@@ -270,38 +195,20 @@ $(document).ready(function(){initNavTree('md_doc_dom_8zh-cn.html','');});
<blockquote class="doxtable">
<p>翻译:*In situ*……是一个拉丁文片语,字面上的意思是指「现场」、「在位置」。在许多不同语境中,它描述一个事件发生的位置,意指「本地」、「现场」、「在处所」、「就位」。 …… (在计算机科学中)一个算法若称为原位算法,或在位算法,是指执行该算法所需的额外内存空间是 O(1) 的,换句话说,无论输入大小都只需要常数空间。例如,堆排序是一个原位排序算法。 </p>
</blockquote>
-<p>在正常的解析过程中,对 JSON string 解码并复制至其他缓冲区是一个很大的开销。原位解析(*in situ* parsing)把这些 JSON string 直接解码于它原来存储的地方。由于解码后的 string 长度总是短于或等于原来储存于 JSON 的 string,所以这是可行的。在这个语境下,对 JSON string 进行解码是指处理转义符,如 <code>"\\n"</code>、<code>"\\u1234"</code> 等,以及在 string 末端加入空终止符号 (`'\0'`)。</p>
+<p>在正常的解析过程中,对 JSON string 解码并复制至其他缓冲区是一个很大的开销。原位解析(*in situ* parsing)把这些 JSON string 直接解码于它原来存储的地方。由于解码后的 string 长度总是短于或等于原来储存于 JSON 的 string,所以这是可行的。在这个语境下,对 JSON string 进行解码是指处理转义符,如 <code>"\n"</code>、<code>"\u1234"</code> 等,以及在 string 末端加入空终止符号 (`'\0'`)。</p>
<p>以下的图比较正常及原位解析。JSON string 值包含指向解码后的字符串。</p>
<div class="image">
<img src="normalparsing.png" alt="normalparsing.png"/>
<div class="caption">
正常解析</div></div>
-<p> 在正常解析中,解码后的字符串被复制至全新分配的缓冲区中。<code>"\\\\n"</code>(2 个字符)被解码成 <code>"\\n"</code>(1 个字符)。<code>"\\\\u0073"</code>(6 个字符)被解码成 <code>"s"</code>(1 个字符)。</p>
+<p> 在正常解析中,解码后的字符串被复制至全新分配的缓冲区中。<code>"\\n"</code>(2 个字符)被解码成 <code>"\n"</code>(1 个字符)。<code>"\\u0073"</code>(6 个字符)被解码成 <code>"s"</code>(1 个字符)。</p>
<div class="image">
<img src="insituparsing.png" alt="insituparsing.png"/>
<div class="caption">
原位解析</div></div>
<p> 原位解析直接修改了原来的 JSON。图中高亮了被更新的字符。若 JSON string 不含转义符,例如 <code>"msg"</code>,那么解析过程仅仅是以空字符代替结束双引号。</p>
<p>由于原位解析修改了输入,其解析 API 需要 <code>char*</code> 而非 <code>const char*</code>。</p>
-<div class="fragment"><div class="line"><span class="comment">// 把整个文件读入 buffer</span></div>
-<div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;test.json&quot;</span>, <span class="stringliteral">&quot;r&quot;</span>);</div>
-<div class="line">fseek(fp, 0, SEEK_END);</div>
-<div class="line"><span class="keywordtype">size_t</span> filesize = (size_t)ftell(fp);</div>
-<div class="line">fseek(fp, 0, SEEK_SET);</div>
-<div class="line"><span class="keywordtype">char</span>* buffer = (<span class="keywordtype">char</span>*)malloc(filesize + 1);</div>
-<div class="line"><span class="keywordtype">size_t</span> readLength = fread(buffer, 1, filesize, fp);</div>
-<div class="line">buffer[readLength] = <span class="charliteral">&#39;\0&#39;</span>;</div>
-<div class="line">fclose(fp);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// 原位解析 buffer 至 d,buffer 内容会被修改。</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div>
-<div class="line">d.ParseInsitu(buffer);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// 在此查询、修改 DOM……</span></div>
-<div class="line"></div>
-<div class="line">free(buffer);</div>
-<div class="line"><span class="comment">// 注意:在这个位置,d 可能含有指向已被释放的 buffer 的悬空指针</span></div>
-</div><!-- fragment --><p>JSON string 会被打上 const-string 的标志。但它们可能并非真正的「常数」。它的生命周期取决于存储 JSON 的缓冲区。</p>
+<div class="fragment"><div class="line"><span class="comment">// 把整个文件读入 buffer</span></div><div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;test.json&quot;</span>, <span class="stringliteral">&quot;r&quot;</span>);</div><div class="line">fseek(fp, 0, SEEK_END);</div><div class="line"><span class="keywordtype">size_t</span> filesize = (size_t)ftell(fp);</div><div class="line">fseek(fp, 0, SEEK_SET);</div><div class="line"><span class="keywordtype">char</span>* buffer = (<span class="keywordtype">char</span>*)malloc(filesize + 1);</div><div class="line"><span class="keywordtype">size_t</span> readLength = fread(buffer, 1, filesize, fp);</div><div class="line">buffer[readLength] = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line">fclose(fp);</div><div class="line"></div><div class="line"><span class="comment">// 原位解析 buffer 至 d,buffer 内容会被修改。</span></div><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div><div class="line">d.ParseInsitu(buffer);</div><div class="line"></div><div class="line"><span class="comment">// 在此查询、修改 DOM……</span></div><div class="line"></div><div class="line">free(buffer);</div><div class="line"><span class="comment">// 注意:在这个位置,d 可能含有指向已被释放的 buffer 的悬空指针</span></div></div><!-- fragment --><p>JSON string 会被打上 const-string 的标志。但它们可能并非真正的「常数」。它的生命周期取决于存储 JSON 的缓冲区。</p>
<p>原位解析把分配开销及内存复制减至最小。通常这样做能改善缓存一致性,而这对现代计算机来说是一个重要的性能因素。</p>
<p>原位解析有以下限制:</p>
<ol type="1">
@@ -322,10 +229,7 @@ $(document).ready(function(){initNavTree('md_doc_dom_8zh-cn.html','');});
<p>这里讨论一些 DOM API 的使用技巧。</p>
<h2>把 DOM 作为 SAX 事件发表者</h2>
<p>在 RapidJSON 中,利用 <code>Writer</code> 把 DOM 生成 JSON 的做法,看来有点奇怪。</p>
-<div class="fragment"><div class="line"><span class="comment">// ...</span></div>
-<div class="line">Writer&lt;StringBuffer&gt; writer(buffer);</div>
-<div class="line">d.Accept(writer);</div>
-</div><!-- fragment --><p>实际上,<code>Value::Accept()</code> 是负责发布该值相关的 SAX 事件至处理器的。通过这个设计,<code>Value</code> 及 <code>Writer</code> 解除了偶合。<code>Value</code> 可生成 SAX 事件,而 <code>Writer</code> 则可以处理这些事件。</p>
+<div class="fragment"><div class="line"><span class="comment">// ...</span></div><div class="line">Writer&lt;StringBuffer&gt; writer(buffer);</div><div class="line">d.Accept(writer);</div></div><!-- fragment --><p>实际上,<code>Value::Accept()</code> 是负责发布该值相关的 SAX 事件至处理器的。通过这个设计,<code>Value</code> 及 <code>Writer</code> 解除了偶合。<code>Value</code> 可生成 SAX 事件,而 <code>Writer</code> 则可以处理这些事件。</p>
<p>使用者可以创建自定义的处理器,去把 DOM 转换成其它格式。例如,一个把 DOM 转换成 XML 的处理器。</p>
<p>要知道更多关于 SAX 事件与处理器,可参阅 <a class="el" href="md_doc_sax_8zh-cn.html">SAX</a>。</p>
<h2><a class="anchor" id="UserBuffer"></a>
@@ -334,14 +238,7 @@ $(document).ready(function(){initNavTree('md_doc_dom_8zh-cn.html','');});
<p><code>MemoryPoolAllocator</code> 可以帮助这方面,它容许使用者提供一个缓冲区。该缓冲区可能置于程序堆栈,或是一个静态分配的「草稿缓冲区(scratch buffer)」(一个静态/全局的数组),用于储存临时数据。</p>
<p><code>MemoryPoolAllocator</code> 会先用使用者缓冲区去解决分配请求。当使用者缓冲区用完,就会从基础分配器(缺省为 <code>CrtAllocator</code>)分配一块内存。</p>
<p>以下是使用堆栈内存的例子,第一个分配器用于存储值,第二个用于解析时的临时缓冲。</p>
-<div class="fragment"><div class="line"><span class="keyword">typedef</span> GenericDocument&lt;UTF8&lt;&gt;, MemoryPoolAllocator&lt;&gt;, MemoryPoolAllocator&lt;&gt;&gt; DocumentType;</div>
-<div class="line"><span class="keywordtype">char</span> valueBuffer[4096];</div>
-<div class="line"><span class="keywordtype">char</span> parseBuffer[1024];</div>
-<div class="line">MemoryPoolAllocator&lt;&gt; valueAllocator(valueBuffer, <span class="keyword">sizeof</span>(valueBuffer));</div>
-<div class="line">MemoryPoolAllocator&lt;&gt; parseAllocator(parseBuffer, <span class="keyword">sizeof</span>(parseBuffer));</div>
-<div class="line">DocumentType d(&amp;valueAllocator, <span class="keyword">sizeof</span>(parseBuffer), &amp;parseAllocator);</div>
-<div class="line">d.Parse(json);</div>
-</div><!-- fragment --><p>若解析时分配总量少于 4096+1024 字节时,这段代码不会造成任何堆内存分配(经 <code>new</code> 或 <code>malloc()</code>)。</p>
+<div class="fragment"><div class="line"><span class="keyword">typedef</span> GenericDocument&lt;UTF8&lt;&gt;, MemoryPoolAllocator&lt;&gt;, MemoryPoolAllocator&lt;&gt;&gt; DocumentType;</div><div class="line"><span class="keywordtype">char</span> valueBuffer[4096];</div><div class="line"><span class="keywordtype">char</span> parseBuffer[1024];</div><div class="line">MemoryPoolAllocator&lt;&gt; valueAllocator(valueBuffer, <span class="keyword">sizeof</span>(valueBuffer));</div><div class="line">MemoryPoolAllocator&lt;&gt; parseAllocator(parseBuffer, <span class="keyword">sizeof</span>(parseBuffer));</div><div class="line">DocumentType d(&amp;valueAllocator, <span class="keyword">sizeof</span>(parseBuffer), &amp;parseAllocator);</div><div class="line">d.Parse(json);</div></div><!-- fragment --><p>若解析时分配总量少于 4096+1024 字节时,这段代码不会造成任何堆内存分配(经 <code>new</code> 或 <code>malloc()</code>)。</p>
<p>使用者可以通过 <code>MemoryPoolAllocator::Size()</code> 查询当前已分的内存大小。那么使用者可以拟定使用者缓冲区的合适大小。 </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
diff --git a/zh-cn/md_doc_encoding_8zh-cn.html b/zh-cn/md_doc_encoding_8zh-cn.html
index 843ba093..e57db70a 100644
--- a/zh-cn/md_doc_encoding_8zh-cn.html
+++ b/zh-cn/md_doc_encoding_8zh-cn.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 编码</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('md_doc_encoding_8zh-cn.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -121,36 +122,10 @@ Unicode 转换格式</h2>
</ul>
<p>对于 UTF-16 及 UTF-32 来说,字节序(endianness)是有影响的。在内存中,它们通常都是以该计算机的字节序来存储。然而,当要储存在文件中或在网上传输,我们需要指明字节序列的字节序,是小端(little endian, LE)还是大端(big-endian, BE)。</p>
<p>RapidJSON 通过 <code><a class="el" href="encodings_8h_source.html">rapidjson/encodings.h</a></code> 中的 struct 去提供各种编码:</p>
-<div class="fragment"><div class="line"><span class="keyword">namespace </span>rapidjson {</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">char</span>&gt;</div>
-<div class="line"><span class="keyword">struct </span>UTF8;</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">wchar_t</span>&gt;</div>
-<div class="line"><span class="keyword">struct </span>UTF16;</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">wchar_t</span>&gt;</div>
-<div class="line"><span class="keyword">struct </span>UTF16LE;</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">wchar_t</span>&gt;</div>
-<div class="line"><span class="keyword">struct </span>UTF16BE;</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">unsigned</span>&gt;</div>
-<div class="line"><span class="keyword">struct </span>UTF32;</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">unsigned</span>&gt;</div>
-<div class="line"><span class="keyword">struct </span>UTF32LE;</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">unsigned</span>&gt;</div>
-<div class="line"><span class="keyword">struct </span>UTF32BE;</div>
-<div class="line"></div>
-<div class="line">} <span class="comment">// namespace rapidjson</span></div>
-</div><!-- fragment --><p>对于在内存中的文本,我们正常会使用 <code>UTF8</code>、<code>UTF16</code> 或 <code>UTF32</code>。对于处理经过 I/O 的文本,我们可使用 <code>UTF8</code>、<code>UTF16LE</code>、<code>UTF16BE</code>、<code>UTF32LE</code> 或 <code>UTF32BE</code>。</p>
+<div class="fragment"><div class="line"><span class="keyword">namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a> {</div><div class="line"></div><div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">char</span>&gt;</div><div class="line"><span class="keyword">struct </span>UTF8;</div><div class="line"></div><div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">wchar_t</span>&gt;</div><div class="line"><span class="keyword">struct </span>UTF16;</div><div class="line"></div><div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">wchar_t</span>&gt;</div><div class="line"><span class="keyword">struct </span>UTF16LE;</div><div class="line"></div><div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">wchar_t</span>&gt;</div><div class="line"><span class="keyword">struct </span>UTF16BE;</div><div class="line"></div><div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">unsigned</span>&gt;</div><div class="line"><span class="keyword">struct </span>UTF32;</div><div class="line"></div><div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">unsigned</span>&gt;</div><div class="line"><span class="keyword">struct </span>UTF32LE;</div><div class="line"></div><div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> CharType = <span class="keywordtype">unsigned</span>&gt;</div><div class="line"><span class="keyword">struct </span>UTF32BE;</div><div class="line"></div><div class="line">} <span class="comment">// namespace rapidjson</span></div></div><!-- fragment --><p>对于在内存中的文本,我们正常会使用 <code>UTF8</code>、<code>UTF16</code> 或 <code>UTF32</code>。对于处理经过 I/O 的文本,我们可使用 <code>UTF8</code>、<code>UTF16LE</code>、<code>UTF16BE</code>、<code>UTF32LE</code> 或 <code>UTF32BE</code>。</p>
<p>当使用 DOM 风格的 API,<code>GenericValue&lt;Encoding&gt;</code> 及 <code>GenericDocument&lt;Encoding&gt;</code> 里的 <code>Encoding</code> 模板参数是用于指明内存中存储的 JSON 字符串使用哪种编码。因此通常我们会在此参数中使用 <code>UTF8</code>、<code>UTF16</code> 或 <code>UTF32</code>。如何选择,视乎应用软件所使用的操作系统及其他程序库。例如,Windows API 使用 UTF-16 表示 Unicode 字符,而多数的 Linux 发行版本及应用软件则更喜欢 UTF-8。</p>
<p>使用 UTF-16 的 DOM 声明例子:</p>
-<div class="fragment"><div class="line"><span class="keyword">typedef</span> GenericDocument&lt;UTF16&lt;&gt; &gt; WDocument;</div>
-<div class="line"><span class="keyword">typedef</span> GenericValue&lt;UTF16&lt;&gt; &gt; WValue;</div>
-</div><!-- fragment --><p>可以在 <a class="el" href="md_doc_stream_8zh-cn.html">DOM's Encoding</a> 一节看到更详细的使用例子。</p>
+<div class="fragment"><div class="line"><span class="keyword">typedef</span> GenericDocument&lt;UTF16&lt;&gt; &gt; WDocument;</div><div class="line"><span class="keyword">typedef</span> GenericValue&lt;UTF16&lt;&gt; &gt; WValue;</div></div><!-- fragment --><p>可以在 <a class="el" href="md_doc_stream_8zh-cn.html">DOM's Encoding</a> 一节看到更详细的使用例子。</p>
<h2><a class="anchor" id="CharacterType"></a>
字符类型</h2>
<p>从之前的声明中可以看到,每个编码都有一个 <code>CharType</code> 模板参数。这可能比较容易混淆,实际上,每个 <code>CharType</code> 存储一个编码单元,而不是一个字符(码点)。如之前所谈及,在 UTF-8 中一个码点可能会编码成 1 至 4 个编码单元。</p>
@@ -164,14 +139,7 @@ AutoUTF</h2>
ASCII</h2>
<p>虽然 JSON 标准并未提及 <a href="http://en.wikipedia.org/wiki/ASCII">ASCII</a>,有时候我们希望写入 7 位的 ASCII JSON,以供未能处理 UTF-8 的应用程序使用。由于任 JSON 都可以把 Unicode 字符表示为 <code>\uXXXX</code> 转义序列,JSON 总是可用 ASCII 来编码。</p>
<p>以下的例子把 UTF-8 的 DOM 写成 ASCII 的 JSON:</p>
-<div class="fragment"><div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d; <span class="comment">// UTF8&lt;&gt;</span></div>
-<div class="line"><span class="comment">// ...</span></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_string_buffer.html">StringBuffer</a> buffer;</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;StringBuffer, Document::EncodingType, ASCII&lt;&gt;</a> &gt; writer(buffer);</div>
-<div class="line">d.Accept(writer);</div>
-<div class="line">std::cout &lt;&lt; buffer.GetString();</div>
-</div><!-- fragment --><p>ASCII 可用于输入流。当输入流包含大于 127 的字节,就会导致 <code>kParseErrorStringInvalidEncoding</code> 错误。</p>
+<div class="fragment"><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d; <span class="comment">// UTF8&lt;&gt;</span></div><div class="line"><span class="comment">// ...</span></div><div class="line"><a class="code" href="classrapidjson_1_1_generic_string_buffer.html">StringBuffer</a> buffer;</div><div class="line"><a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;StringBuffer, Document::EncodingType, ASCII&lt;&gt;</a> &gt; writer(buffer);</div><div class="line">d.<a class="code" href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c">Accept</a>(writer);</div><div class="line">std::cout &lt;&lt; buffer.GetString();</div></div><!-- fragment --><p>ASCII 可用于输入流。当输入流包含大于 127 的字节,就会导致 <code>kParseErrorStringInvalidEncoding</code> 错误。</p>
<p>ASCII * 不能 * 用于内存(<code>Document</code> 的编码,或 <code>Reader</code> 的目标编码),因为它不能表示 Unicode 码点。</p>
<h1><a class="anchor" id="ValidationTranscoding"></a>
校验及转码</h1>
@@ -181,26 +149,7 @@ ASCII</h2>
转码器</h2>
<p>虽然 RapidJSON 的编码功能是为 JSON 解析/生成而设计,使用者也可以“滥用”它们来为非 JSON 字符串转码。</p>
<p>以下的例子把 UTF-8 字符串转码成 UTF-16:</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/encodings.h&quot;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* s = <span class="stringliteral">&quot;...&quot;</span>; <span class="comment">// UTF-8 string</span></div>
-<div class="line"><a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a> source(s);</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer&lt;UTF16&lt;&gt;</a> &gt; target;</div>
-<div class="line"></div>
-<div class="line"><span class="keywordtype">bool</span> hasError = <span class="keyword">false</span>;</div>
-<div class="line"><span class="keywordflow">while</span> (source.Peek() != <span class="charliteral">&#39;\0&#39;</span>)</div>
-<div class="line"> <span class="keywordflow">if</span> (!<a class="code" href="structrapidjson_1_1_transcoder.html">Transcoder</a>&lt;<a class="code" href="structrapidjson_1_1_u_t_f8.html">UTF8&lt;&gt;</a>, <a class="code" href="structrapidjson_1_1_u_t_f16.html">UTF16&lt;&gt;</a> &gt;::Transcode(source, target)) {</div>
-<div class="line"> hasError = <span class="keyword">true</span>;</div>
-<div class="line"> <span class="keywordflow">break</span>;</div>
-<div class="line"> }</div>
-<div class="line"></div>
-<div class="line"><span class="keywordflow">if</span> (!hasError) {</div>
-<div class="line"> <span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* t = target.GetString();</div>
-<div class="line"> <span class="comment">// ...</span></div>
-<div class="line">}</div>
-</div><!-- fragment --><p>你也可以用 <code>AutoUTF</code> 及对应的流来在运行时设置内源/目的之编码。 </p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/encodings.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"></div><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* s = <span class="stringliteral">&quot;...&quot;</span>; <span class="comment">// UTF-8 string</span></div><div class="line"><a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a> source(s);</div><div class="line"><a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer&lt;UTF16&lt;&gt;</a> &gt; target;</div><div class="line"></div><div class="line"><span class="keywordtype">bool</span> hasError = <span class="keyword">false</span>;</div><div class="line"><span class="keywordflow">while</span> (source.Peek() != <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"> <span class="keywordflow">if</span> (!<a class="code" href="structrapidjson_1_1_transcoder.html">Transcoder</a>&lt;<a class="code" href="structrapidjson_1_1_u_t_f8.html">UTF8&lt;&gt;</a>, <a class="code" href="structrapidjson_1_1_u_t_f16.html">UTF16&lt;&gt;</a> &gt;::Transcode(source, target)) {</div><div class="line"> hasError = <span class="keyword">true</span>;</div><div class="line"> <span class="keywordflow">break</span>;</div><div class="line"> }</div><div class="line"></div><div class="line"><span class="keywordflow">if</span> (!hasError) {</div><div class="line"> <span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* t = target.GetString();</div><div class="line"> <span class="comment">// ...</span></div><div class="line">}</div></div><!-- fragment --><p>你也可以用 <code>AutoUTF</code> 及对应的流来在运行时设置内源/目的之编码。 </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/md_doc_faq_8zh-cn.html b/zh-cn/md_doc_faq_8zh-cn.html
index c4e469de..593e07db 100644
--- a/zh-cn/md_doc_faq_8zh-cn.html
+++ b/zh-cn/md_doc_faq_8zh-cn.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 常见问题</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('md_doc_faq_8zh-cn.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -164,35 +165,13 @@ $(document).ready(function(){initNavTree('md_doc_faq_8zh-cn.html','');});
<p class="startli">调用 <code>SetXXX()</code> 方法 - 这些方法会调用析构函数,并重建空的 Object 或 Array:</p>
</li>
</ol>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div>
-<div class="line">...</div>
-<div class="line">d.SetObject(); <span class="comment">// clear and minimize</span></div>
-</div><!-- fragment --><p>另外,也可以参考在 <a href="https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Clear-and-minimize">C++ swap with temporary idiom</a> 中的一种等价的方法: </p><div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>).Swap(d);</div>
-</div><!-- fragment --><p> 或者,使用这个稍微长一点的代码也能完成同样的事情: </p><div class="fragment"><div class="line">d.Swap(<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>).Move()); </div>
-</div><!-- fragment --><ol type="1">
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div><div class="line">...</div><div class="line">d.SetObject(); <span class="comment">// clear and minimize</span></div></div><!-- fragment --><p>另外,也可以参考在 <a href="https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Clear-and-minimize">C++ swap with temporary idiom</a> 中的一种等价的方法: </p><div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>).Swap(d);</div></div><!-- fragment --><p> 或者,使用这个稍微长一点的代码也能完成同样的事情: </p><div class="fragment"><div class="line">d.Swap(<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>).Move()); </div></div><!-- fragment --><ol type="1">
<li><p class="startli">如何将一个 <code>document</code> 节点插入到另一个 <code>document</code> 中?</p>
-<p class="startli">比如有以下两个 document(DOM): </p><div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> person;</div>
-<div class="line">person.Parse(<span class="stringliteral">&quot;{\&quot;person\&quot;:{\&quot;name\&quot;:{\&quot;first\&quot;:\&quot;Adam\&quot;,\&quot;last\&quot;:\&quot;Thomas\&quot;}}}&quot;</span>);</div>
-<div class="line"></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> address;</div>
-<div class="line">address.Parse(<span class="stringliteral">&quot;{\&quot;address\&quot;:{\&quot;city\&quot;:\&quot;Moscow\&quot;,\&quot;street\&quot;:\&quot;Quiet\&quot;}}&quot;</span>);</div>
-</div><!-- fragment --><p> 假设我们希望将整个 <code>address</code> 插入到 <code>person</code> 中,作为其的一个子节点: </p><div class="fragment"><div class="line">{ <span class="stringliteral">&quot;person&quot;</span>: {</div>
-<div class="line"> <span class="stringliteral">&quot;name&quot;</span>: { <span class="stringliteral">&quot;first&quot;</span>: <span class="stringliteral">&quot;Adam&quot;</span>, <span class="stringliteral">&quot;last&quot;</span>: <span class="stringliteral">&quot;Thomas&quot;</span> },</div>
-<div class="line"> <span class="stringliteral">&quot;address&quot;</span>: { <span class="stringliteral">&quot;city&quot;</span>: <span class="stringliteral">&quot;Moscow&quot;</span>, <span class="stringliteral">&quot;street&quot;</span>: <span class="stringliteral">&quot;Quiet&quot;</span> }</div>
-<div class="line"> }</div>
-<div class="line">}</div>
-</div><!-- fragment --><p class="startli">在插入节点的过程中需要注意 <code>document</code> 和 <code>value</code> 的生命周期并且正确地使用 allocator 进行内存分配和管理。</p>
+<p class="startli">比如有以下两个 document(DOM): </p><div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> person;</div><div class="line">person.Parse(<span class="stringliteral">&quot;{\&quot;person\&quot;:{\&quot;name\&quot;:{\&quot;first\&quot;:\&quot;Adam\&quot;,\&quot;last\&quot;:\&quot;Thomas\&quot;}}}&quot;</span>);</div><div class="line"></div><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> address;</div><div class="line">address.Parse(<span class="stringliteral">&quot;{\&quot;address\&quot;:{\&quot;city\&quot;:\&quot;Moscow\&quot;,\&quot;street\&quot;:\&quot;Quiet\&quot;}}&quot;</span>);</div></div><!-- fragment --><p> 假设我们希望将整个 <code>address</code> 插入到 <code>person</code> 中,作为其的一个子节点: </p><div class="fragment"><div class="line">{ &quot;person&quot;: {</div><div class="line"> &quot;name&quot;: { &quot;first&quot;: &quot;Adam&quot;, &quot;last&quot;: &quot;Thomas&quot; },</div><div class="line"> &quot;address&quot;: { &quot;city&quot;: &quot;Moscow&quot;, &quot;street&quot;: &quot;Quiet&quot; }</div><div class="line"> }</div><div class="line">}</div></div><!-- fragment --><p class="startli">在插入节点的过程中需要注意 <code>document</code> 和 <code>value</code> 的生命周期并且正确地使用 allocator 进行内存分配和管理。</p>
<p class="startli">一个简单有效的方法就是修改上述 <code>address</code> 变量的定义,让其使用 <code>person</code> 的 allocator 初始化,然后将其添加到根节点。</p>
</li>
</ol>
-<div class="fragment"><div class="line">Documnet address(person.GetAllocator());</div>
-<div class="line">...</div>
-<div class="line">person[<span class="stringliteral">&quot;person&quot;</span>].AddMember(<span class="stringliteral">&quot;address&quot;</span>, address[<span class="stringliteral">&quot;address&quot;</span>], person.GetAllocator());</div>
-</div><!-- fragment --><p> 当然,如果你不想通过显式地写出 <code>address</code> 的 key 来得到其值,可以使用迭代器来实现: </p><div class="fragment"><div class="line"><span class="keyword">auto</span> addressRoot = address.MemberBegin();</div>
-<div class="line">person[<span class="stringliteral">&quot;person&quot;</span>].AddMember(addressRoot-&gt;name, addressRoot-&gt;value, person.GetAllocator());</div>
-</div><!-- fragment --><p>此外,还可以通过深拷贝 address document 来实现: </p><div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> addressValue = <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>(address[<span class="stringliteral">&quot;address&quot;</span>], person.GetAllocator());</div>
-<div class="line">person[<span class="stringliteral">&quot;person&quot;</span>].AddMember(<span class="stringliteral">&quot;address&quot;</span>, addressValue, person.GetAllocator());</div>
-</div><!-- fragment --><h2>Document/Value (DOM)</h2>
+<div class="fragment"><div class="line">Documnet address(person.GetAllocator());</div><div class="line">...</div><div class="line">person[<span class="stringliteral">&quot;person&quot;</span>].AddMember(<span class="stringliteral">&quot;address&quot;</span>, address[<span class="stringliteral">&quot;address&quot;</span>], person.GetAllocator());</div></div><!-- fragment --><p> 当然,如果你不想通过显式地写出 <code>address</code> 的 key 来得到其值,可以使用迭代器来实现: </p><div class="fragment"><div class="line"><span class="keyword">auto</span> addressRoot = address.MemberBegin();</div><div class="line">person[<span class="stringliteral">&quot;person&quot;</span>].AddMember(addressRoot-&gt;name, addressRoot-&gt;value, person.GetAllocator());</div></div><!-- fragment --><p>此外,还可以通过深拷贝 address document 来实现: </p><div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> addressValue = <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>(address[<span class="stringliteral">&quot;address&quot;</span>], person.GetAllocator());</div><div class="line">person[<span class="stringliteral">&quot;person&quot;</span>].AddMember(<span class="stringliteral">&quot;address&quot;</span>, addressValue, person.GetAllocator());</div></div><!-- fragment --><h2>Document/Value (DOM)</h2>
<ol type="1">
<li><p class="startli">什么是转移语义?为什么?</p>
<p class="startli"><code>Value</code> 不用复制语义,而使用了转移语义。这是指,当把来源值赋值于目标值时,来源值的所有权会转移至目标值。</p>
diff --git a/zh-cn/md_doc_features_8zh-cn.html b/zh-cn/md_doc_features_8zh-cn.html
index 551fee1a..5ae672b8 100644
--- a/zh-cn/md_doc_features_8zh-cn.html
+++ b/zh-cn/md_doc_features_8zh-cn.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 特点</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('md_doc_features_8zh-cn.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -111,8 +112,8 @@ $(document).ready(function(){initNavTree('md_doc_features_8zh-cn.html','');});
<li>支持 JSON Pointer (RFC6901).</li>
<li>支持 JSON Schema Draft v4.</li>
<li>支持 Unicode 代理对(surrogate pair)。</li>
-<li>支持空字符(<code>"\\u0000"</code>)。<ul>
-<li>例如,可以优雅地解析及处理 <code>["Hello\\u0000World"]</code>。含读写字符串长度的 API。</li>
+<li>支持空字符(<code>"\u0000"</code>)。<ul>
+<li>例如,可以优雅地解析及处理 <code>["Hello\u0000World"]</code>。含读写字符串长度的 API。</li>
</ul>
</li>
<li>支持可选的放宽语法<ul>
@@ -147,7 +148,7 @@ $(document).ready(function(){initNavTree('md_doc_features_8zh-cn.html','');});
<h2>API 风格</h2>
<ul>
<li>SAX(Simple API for XML)风格 API<ul>
-<li>类似于 <a href="http://en.wikipedia.org/wiki/Simple_API_for_XML">SAX</a>, RapidJSON 提供一个事件循序访问的解析器 API(<code><a class="el" href="classrapidjson_1_1_generic_reader.html" title="SAX-style JSON parser. Use Reader for UTF8 encoding and default allocator. ">rapidjson::GenericReader</a></code>)。RapidJSON 也提供一个生成器 API(<code><a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer. ">rapidjson::Writer</a></code>),可以处理相同的事件集合。</li>
+<li>类似于 <a href="http://en.wikipedia.org/wiki/Simple_API_for_XML">SAX</a>, RapidJSON 提供一个事件循序访问的解析器 API(<code><a class="el" href="classrapidjson_1_1_generic_reader.html" title="SAX-style JSON parser. Use Reader for UTF8 encoding and default allocator. ">rapidjson::GenericReader</a></code>)。RapidJSON 也提供一个生成器 API(<code><a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer ">rapidjson::Writer</a></code>),可以处理相同的事件集合。</li>
</ul>
</li>
<li>DOM(Document Object Model)风格 API<ul>
diff --git a/zh-cn/md_doc_internals_8zh-cn.html b/zh-cn/md_doc_internals_8zh-cn.html
index 7fdabcaa..7f8c1b74 100644
--- a/zh-cn/md_doc_internals_8zh-cn.html
+++ b/zh-cn/md_doc_internals_8zh-cn.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 内部架构</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('md_doc_internals_8zh-cn.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -273,25 +274,7 @@ $(document).ready(function(){initNavTree('md_doc_internals_8zh-cn.html','');});
<p>这个优化可以减少字符串拷贝内存占用。它也改善了缓存一致性,并进一步提高了运行时性能。</p>
<h1><a class="anchor" id="InternalAllocator"></a>
分配器(Allocator)</h1>
-<p><code>Allocator</code> 是 RapidJSON 中的概念: </p><div class="fragment"><div class="line">concept Allocator {</div>
-<div class="line"> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> kNeedFree; <span class="comment">//!&lt; 表明这个分配器是否需要调用 Free()。</span></div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"> <span class="comment">// 申请内存块。</span></div>
-<div class="line"> <span class="comment">// \param size 内存块的大小,以字节记。</span></div>
-<div class="line"> <span class="comment">// \returns 指向内存块的指针。</span></div>
-<div class="line"> <span class="keywordtype">void</span>* Malloc(<span class="keywordtype">size_t</span> size);</div>
-<div class="line"></div>
-<div class="line"> <span class="comment">// 调整内存块的大小。</span></div>
-<div class="line"> <span class="comment">// \param originalPtr 当前内存块的指针。空指针是被允许的。</span></div>
-<div class="line"> <span class="comment">// \param originalSize 当前大小,以字节记。(设计问题:因为有些分配器可能不会记录它,显示的传递它可以节约内存。)</span></div>
-<div class="line"> <span class="comment">// \param newSize 新大小,以字节记。</span></div>
-<div class="line"> <span class="keywordtype">void</span>* Realloc(<span class="keywordtype">void</span>* originalPtr, <span class="keywordtype">size_t</span> originalSize, <span class="keywordtype">size_t</span> newSize);</div>
-<div class="line"></div>
-<div class="line"> <span class="comment">// 释放内存块。</span></div>
-<div class="line"> <span class="comment">// \param ptr 指向内存块的指针。空指针是被允许的。</span></div>
-<div class="line"> <span class="keyword">static</span> <span class="keywordtype">void</span> Free(<span class="keywordtype">void</span> *ptr);</div>
-<div class="line">};</div>
-</div><!-- fragment --><p>需要注意的是 <code>Malloc()</code> 和 <code>Realloc()</code> 是成员函数而 <code>Free()</code> 是静态成员函数。</p>
+<p><code>Allocator</code> 是 RapidJSON 中的概念: </p><div class="fragment"><div class="line">concept Allocator {</div><div class="line"> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> kNeedFree; <span class="comment">//!&lt; 表明这个分配器是否需要调用 Free()。</span></div><div class="line"><span class="comment"></span></div><div class="line"> <span class="comment">// 申请内存块。</span></div><div class="line"> <span class="comment">// \param size 内存块的大小,以字节记。</span></div><div class="line"> <span class="comment">// \returns 指向内存块的指针。</span></div><div class="line"> <span class="keywordtype">void</span>* Malloc(<span class="keywordtype">size_t</span> size);</div><div class="line"></div><div class="line"> <span class="comment">// 调整内存块的大小。</span></div><div class="line"> <span class="comment">// \param originalPtr 当前内存块的指针。空指针是被允许的。</span></div><div class="line"> <span class="comment">// \param originalSize 当前大小,以字节记。(设计问题:因为有些分配器可能不会记录它,显示的传递它可以节约内存。)</span></div><div class="line"> <span class="comment">// \param newSize 新大小,以字节记。</span></div><div class="line"> <span class="keywordtype">void</span>* Realloc(<span class="keywordtype">void</span>* originalPtr, <span class="keywordtype">size_t</span> originalSize, <span class="keywordtype">size_t</span> newSize);</div><div class="line"></div><div class="line"> <span class="comment">// 释放内存块。</span></div><div class="line"> <span class="comment">// \param ptr 指向内存块的指针。空指针是被允许的。</span></div><div class="line"> <span class="keyword">static</span> <span class="keywordtype">void</span> Free(<span class="keywordtype">void</span> *ptr);</div><div class="line">};</div></div><!-- fragment --><p>需要注意的是 <code>Malloc()</code> 和 <code>Realloc()</code> 是成员函数而 <code>Free()</code> 是静态成员函数。</p>
<h2><a class="anchor" id="MemoryPoolAllocator"></a>
MemoryPoolAllocator</h2>
<p><code>MemoryPoolAllocator</code> 是 DOM 的默认内存分配器。它只申请内存而不释放内存。这对于构建 DOM 树非常合适。</p>
@@ -312,24 +295,10 @@ MemoryPoolAllocator</h2>
<li>换行 (<code>U+000A</code>)</li>
<li>回车 (<code>U+000D</code>)</li>
</ol>
-<p>这是一份简单的实现: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(InputStream&amp; s) {</div>
-<div class="line"> <span class="keywordflow">while</span> (s.Peek() == <span class="charliteral">&#39; &#39;</span> || s.Peek() == <span class="charliteral">&#39;\n&#39;</span> || s.Peek() == <span class="charliteral">&#39;\r&#39;</span> || s.Peek() == <span class="charliteral">&#39;\t&#39;</span>)</div>
-<div class="line"> s.Take();</div>
-<div class="line">}</div>
-</div><!-- fragment --><p>但是,这需要对每个字符进行4次比较以及一些分支。这被发现是一个热点。</p>
-<p>为了加速这一处理,RapidJSON 使用 SIMD 来在一次迭代中比较16个字符和4个空格。目前 RapidJSON 支持 SSE2 , SSE4.2 和 ARM Neon 指令。同时它也只会对 UTF-8 内存流启用,包括字符串流或 *原位* 解析。</p>
+<p>这是一份简单的实现: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(InputStream&amp; s) {</div><div class="line"> <span class="keywordflow">while</span> (s.Peek() == <span class="charliteral">&#39; &#39;</span> || s.Peek() == <span class="charliteral">&#39;\n&#39;</span> || s.Peek() == <span class="charliteral">&#39;\r&#39;</span> || s.Peek() == <span class="charliteral">&#39;\t&#39;</span>)</div><div class="line"> s.Take();</div><div class="line">}</div></div><!-- fragment --><p>但是,这需要对每个字符进行4次比较以及一些分支。这被发现是一个热点。</p>
+<p>为了加速这一处理,RapidJSON 使用 SIMD 来在一次迭代中比较16个字符和4个空格。目前 RapidJSON 支持 SSE2 , SSE4.2 和 ARM Neon 指令。同时它也只会对 UTF-8 内存流启用,包括字符串流或 <em>原位</em> 解析。</p>
<p>你可以通过在包含 <code><a class="el" href="rapidjson_8h.html" title="common definitions and configuration ">rapidjson.h</a></code> 之前定义 <code>RAPIDJSON_SSE2</code> , <code>RAPIDJSON_SSE42</code> 或 <code>RAPIDJSON_NEON</code> 来启用这个优化。一些编译器可以检测这个设置,如 <code>perftest.h</code>:</p>
-<div class="fragment"><div class="line"><span class="comment">// __SSE2__ 和 __SSE4_2__ 可被 gcc、clang 和 Intel 编译器识别:</span></div>
-<div class="line"><span class="comment">// 如果支持的话,我们在 gmake 中使用了 -march=native 来启用 -msse2 和 -msse4.2</span></div>
-<div class="line"><span class="comment">// 同样的, __ARM_NEON 被用于识别Neon</span></div>
-<div class="line"><span class="preprocessor">#if defined(__SSE4_2__)</span></div>
-<div class="line"><span class="preprocessor"># define RAPIDJSON_SSE42</span></div>
-<div class="line"><span class="preprocessor">#elif defined(__SSE2__)</span></div>
-<div class="line"><span class="preprocessor"># define RAPIDJSON_SSE2</span></div>
-<div class="line"><span class="preprocessor">#elif defined(__ARM_NEON)</span></div>
-<div class="line"><span class="preprocessor"># define RAPIDJSON_NEON</span></div>
-<div class="line"><span class="preprocessor">#endif</span></div>
-</div><!-- fragment --><p>需要注意的是,这是编译期的设置。在不支持这些指令的机器上运行可执行文件会使它崩溃。</p>
+<div class="fragment"><div class="line"><span class="comment">// __SSE2__ 和 __SSE4_2__ 可被 gcc、clang 和 Intel 编译器识别:</span></div><div class="line"><span class="comment">// 如果支持的话,我们在 gmake 中使用了 -march=native 来启用 -msse2 和 -msse4.2</span></div><div class="line"><span class="comment">// 同样的, __ARM_NEON 被用于识别Neon</span></div><div class="line"><span class="preprocessor">#if defined(__SSE4_2__)</span></div><div class="line"><span class="preprocessor"># define RAPIDJSON_SSE42</span></div><div class="line"><span class="preprocessor">#elif defined(__SSE2__)</span></div><div class="line"><span class="preprocessor"># define RAPIDJSON_SSE2</span></div><div class="line"><span class="preprocessor">#elif defined(__ARM_NEON)</span></div><div class="line"><span class="preprocessor"># define RAPIDJSON_NEON</span></div><div class="line"><span class="preprocessor">#endif</span></div></div><!-- fragment --><p>需要注意的是,这是编译期的设置。在不支持这些指令的机器上运行可执行文件会使它崩溃。</p>
<h3>页面对齐问题</h3>
<p>在 RapidJSON 的早期版本中,被报告了<a href="https://code.google.com/archive/p/rapidjson/issues/104">一个问题</a>:<code>SkipWhitespace_SIMD()</code> 会罕见地导致崩溃(约五十万分之一的几率)。在调查之后,怀疑是 <code>_mm_loadu_si128()</code> 访问了 `'\0'` 之后的内存,并越过被保护的页面边界。</p>
<p>在 <a href="http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html">Intel® 64 and IA-32 Architectures Optimization Reference Manual</a> 中,章节 10.2.1:</p>
@@ -341,15 +310,7 @@ MemoryPoolAllocator</h2>
<h2><a class="anchor" id="LocalStreamCopy"></a>
局部流拷贝</h2>
<p>在优化的过程中,我们发现一些编译器不能将访问流的一些成员数据放入局部变量或者寄存器中。测试结果显示,对于一些流类型,创建流的拷贝并将其用于内层循环中可以改善性能。例如,实际(非 SIMD)的 <code><a class="el" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a" title="Skip the JSON white spaces in a stream. ">SkipWhitespace()</a></code> 被实现为:</p>
-<div class="fragment"><div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(InputStream&amp; is) {</div>
-<div class="line"> internal::StreamLocalCopy&lt;InputStream&gt; copy(is);</div>
-<div class="line"> InputStream&amp; s(copy.s);</div>
-<div class="line"></div>
-<div class="line"> <span class="keywordflow">while</span> (s.Peek() == <span class="charliteral">&#39; &#39;</span> || s.Peek() == <span class="charliteral">&#39;\n&#39;</span> || s.Peek() == <span class="charliteral">&#39;\r&#39;</span> || s.Peek() == <span class="charliteral">&#39;\t&#39;</span>)</div>
-<div class="line"> s.Take();</div>
-<div class="line">}</div>
-</div><!-- fragment --><p>基于流的特征,<code>StreamLocalCopy</code> 会创建(或不创建)流对象的拷贝,在局部使用它并将流的状态拷贝回原来的流。</p>
+<div class="fragment"><div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(InputStream&amp; is) {</div><div class="line"> internal::StreamLocalCopy&lt;InputStream&gt; copy(is);</div><div class="line"> InputStream&amp; s(copy.s);</div><div class="line"></div><div class="line"> <span class="keywordflow">while</span> (s.Peek() == <span class="charliteral">&#39; &#39;</span> || s.Peek() == <span class="charliteral">&#39;\n&#39;</span> || s.Peek() == <span class="charliteral">&#39;\r&#39;</span> || s.Peek() == <span class="charliteral">&#39;\t&#39;</span>)</div><div class="line"> s.Take();</div><div class="line">}</div></div><!-- fragment --><p>基于流的特征,<code>StreamLocalCopy</code> 会创建(或不创建)流对象的拷贝,在局部使用它并将流的状态拷贝回原来的流。</p>
<h2><a class="anchor" id="ParsingDouble"></a>
解析为双精度浮点数</h2>
<p>将字符串解析为 <code>double</code> 并不简单。标准库函数 <code>strtod()</code> 可以胜任这项工作,但它比较缓慢。默认情况下,解析器使用默认的精度设置。这最多有 3<a href="http://en.wikipedia.org/wiki/Unit_in_the_last_place">ULP</a> 的误差,并实现在 <code>internal::StrtodNormalPrecision()</code> 中。</p>
@@ -378,18 +339,7 @@ MemoryPoolAllocator</h2>
<p>迭代解析器是一个以非递归方式实现的递归下降的 LL(1) 解析器。</p>
<h3><a class="anchor" id="IterativeParserGrammar"></a>
语法</h3>
-<p>解析器使用的语法是基于严格 JSON 语法的: </p><div class="fragment"><div class="line">S -&gt; array | <span class="keywordtype">object</span></div>
-<div class="line">array -&gt; [ values ]</div>
-<div class="line"><span class="keywordtype">object</span> -&gt; { members }</div>
-<div class="line">values -&gt; non-empty-values | ε</div>
-<div class="line">non-empty-values -&gt; value addition-values</div>
-<div class="line">addition-values -&gt; ε | , non-empty-values</div>
-<div class="line">members -&gt; non-empty-members | ε</div>
-<div class="line">non-empty-members -&gt; member addition-members</div>
-<div class="line">addition-members -&gt; ε | , non-empty-members</div>
-<div class="line">member -&gt; STRING : value</div>
-<div class="line">value -&gt; STRING | NUMBER | NULL | BOOLEAN | <span class="keywordtype">object</span> | array</div>
-</div><!-- fragment --><p>注意到左因子被加入了非终结符的 <code>values</code> 和 <code>members</code> 来保证语法是 LL(1) 的。</p>
+<p>解析器使用的语法是基于严格 JSON 语法的: </p><div class="fragment"><div class="line">S -&gt; array | object</div><div class="line">array -&gt; [ values ]</div><div class="line">object -&gt; { members }</div><div class="line">values -&gt; non-empty-values | ε</div><div class="line">non-empty-values -&gt; value addition-values</div><div class="line">addition-values -&gt; ε | , non-empty-values</div><div class="line">members -&gt; non-empty-members | ε</div><div class="line">non-empty-members -&gt; member addition-members</div><div class="line">addition-members -&gt; ε | , non-empty-members</div><div class="line">member -&gt; STRING : value</div><div class="line">value -&gt; STRING | NUMBER | NULL | BOOLEAN | object | array</div></div><!-- fragment --><p>注意到左因子被加入了非终结符的 <code>values</code> 和 <code>members</code> 来保证语法是 LL(1) 的。</p>
<h3><a class="anchor" id="IterativeParserParsingTable"></a>
解析表</h3>
<p>基于这份语法,我们可以构造 FIRST 和 FOLLOW 集合。</p>
diff --git a/zh-cn/md_doc_performance_8zh-cn.html b/zh-cn/md_doc_performance_8zh-cn.html
index 812d014f..e2580617 100644
--- a/zh-cn/md_doc_performance_8zh-cn.html
+++ b/zh-cn/md_doc_performance_8zh-cn.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 性能</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('md_doc_performance_8zh-cn.html','');})
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/md_doc_pointer_8zh-cn.html b/zh-cn/md_doc_pointer_8zh-cn.html
index 80919b73..10100c8c 100644
--- a/zh-cn/md_doc_pointer_8zh-cn.html
+++ b/zh-cn/md_doc_pointer_8zh-cn.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: Pointer</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('md_doc_pointer_8zh-cn.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -95,11 +96,7 @@ $(document).ready(function(){initNavTree('md_doc_pointer_8zh-cn.html','');});
<p>使用 RapidJSON 的 JSON Pointer 实现能简化一些 DOM 的操作。</p>
<h1><a class="anchor" id="JsonPointer"></a>
JSON Pointer</h1>
-<p>一个 JSON Pointer 由一串(零至多个)token 所组成,每个 token 都有 <code>/</code> 前缀。每个 token 可以是一个字符串或数字。例如,给定一个 JSON: </p><div class="fragment"><div class="line">{</div>
-<div class="line"> <span class="stringliteral">&quot;foo&quot;</span> : [<span class="stringliteral">&quot;bar&quot;</span>, <span class="stringliteral">&quot;baz&quot;</span>],</div>
-<div class="line"> <span class="stringliteral">&quot;pi&quot;</span> : 3.1416</div>
-<div class="line">}</div>
-</div><!-- fragment --><p>以下的 JSON Pointer 解析为:</p>
+<p>一个 JSON Pointer 由一串(零至多个)token 所组成,每个 token 都有 <code>/</code> 前缀。每个 token 可以是一个字符串或数字。例如,给定一个 JSON: </p><div class="fragment"><div class="line">{</div><div class="line"> &quot;foo&quot; : [&quot;bar&quot;, &quot;baz&quot;],</div><div class="line"> &quot;pi&quot; : 3.1416</div><div class="line">}</div></div><!-- fragment --><p>以下的 JSON Pointer 解析为:</p>
<ol type="1">
<li><code>"/foo"</code> → <code>[ "bar", "baz" ]</code></li>
<li><code>"/foo/0"</code> → <code>"bar"</code></li>
@@ -110,67 +107,11 @@ JSON Pointer</h1>
<h1><a class="anchor" id="BasicUsage"></a>
基本使用方法</h1>
<p>以下的代码范例不解自明。</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/pointer.h&quot;</span></div>
-<div class="line"></div>
-<div class="line"><span class="comment">// ...</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// 使用 Set() 创建 DOM</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a>(<span class="stringliteral">&quot;/project&quot;</span>).Set(d, <span class="stringliteral">&quot;RapidJSON&quot;</span>);</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a>(<span class="stringliteral">&quot;/stars&quot;</span>).Set(d, 10);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// { &quot;project&quot; : &quot;RapidJSON&quot;, &quot;stars&quot; : 10 }</span></div>
-<div class="line"></div>
-<div class="line"><span class="comment">// 使用 Get() 访问 DOM。若该值不存在则返回 nullptr。</span></div>
-<div class="line"><span class="keywordflow">if</span> (<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>* stars = <a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a>(<span class="stringliteral">&quot;/stars&quot;</span>).Get(d))</div>
-<div class="line"> stars-&gt;SetInt(stars-&gt;GetInt() + 1);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// { &quot;project&quot; : &quot;RapidJSON&quot;, &quot;stars&quot; : 11 }</span></div>
-<div class="line"></div>
-<div class="line"><span class="comment">// Set() 和 Create() 自动生成父值(如果它们不存在)。</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a>(<span class="stringliteral">&quot;/a/b/0&quot;</span>).Create(d);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// { &quot;project&quot; : &quot;RapidJSON&quot;, &quot;stars&quot; : 11, &quot;a&quot; : { &quot;b&quot; : [ null ] } }</span></div>
-<div class="line"></div>
-<div class="line"><span class="comment">// GetWithDefault() 返回引用。若该值不存在则会深拷贝缺省值。</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>&amp; hello = <a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a>(<span class="stringliteral">&quot;/hello&quot;</span>).GetWithDefault(d, <span class="stringliteral">&quot;world&quot;</span>);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// { &quot;project&quot; : &quot;RapidJSON&quot;, &quot;stars&quot; : 11, &quot;a&quot; : { &quot;b&quot; : [ null ] }, &quot;hello&quot; : &quot;world&quot; }</span></div>
-<div class="line"></div>
-<div class="line"><span class="comment">// Swap() 和 Set() 相似</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> x(<span class="stringliteral">&quot;C++&quot;</span>);</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a>(<span class="stringliteral">&quot;/hello&quot;</span>).Swap(d, x);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// { &quot;project&quot; : &quot;RapidJSON&quot;, &quot;stars&quot; : 11, &quot;a&quot; : { &quot;b&quot; : [ null ] }, &quot;hello&quot; : &quot;C++&quot; }</span></div>
-<div class="line"><span class="comment">// x 变成 &quot;world&quot;</span></div>
-<div class="line"></div>
-<div class="line"><span class="comment">// 删去一个成员或元素,若值存在返回 true</span></div>
-<div class="line"><span class="keywordtype">bool</span> success = <a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a>(<span class="stringliteral">&quot;/a&quot;</span>).Erase(d);</div>
-<div class="line">assert(success);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// { &quot;project&quot; : &quot;RapidJSON&quot;, &quot;stars&quot; : 10 }</span></div>
-</div><!-- fragment --><h1><a class="anchor" id="HelperFunctions"></a>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/pointer.h&quot;</span></div><div class="line"></div><div class="line"><span class="comment">// ...</span></div><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div><div class="line"></div><div class="line"><span class="comment">// 使用 Set() 创建 DOM</span></div><div class="line"><a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a>(<span class="stringliteral">&quot;/project&quot;</span>).Set(d, <span class="stringliteral">&quot;RapidJSON&quot;</span>);</div><div class="line"><a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a>(<span class="stringliteral">&quot;/stars&quot;</span>).Set(d, 10);</div><div class="line"></div><div class="line"><span class="comment">// { &quot;project&quot; : &quot;RapidJSON&quot;, &quot;stars&quot; : 10 }</span></div><div class="line"></div><div class="line"><span class="comment">// 使用 Get() 访问 DOM。若该值不存在则返回 nullptr。</span></div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>* stars = <a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a>(<span class="stringliteral">&quot;/stars&quot;</span>).Get(d))</div><div class="line"> stars-&gt;SetInt(stars-&gt;GetInt() + 1);</div><div class="line"></div><div class="line"><span class="comment">// { &quot;project&quot; : &quot;RapidJSON&quot;, &quot;stars&quot; : 11 }</span></div><div class="line"></div><div class="line"><span class="comment">// Set() 和 Create() 自动生成父值(如果它们不存在)。</span></div><div class="line"><a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a>(<span class="stringliteral">&quot;/a/b/0&quot;</span>).Create(d);</div><div class="line"></div><div class="line"><span class="comment">// { &quot;project&quot; : &quot;RapidJSON&quot;, &quot;stars&quot; : 11, &quot;a&quot; : { &quot;b&quot; : [ null ] } }</span></div><div class="line"></div><div class="line"><span class="comment">// GetWithDefault() 返回引用。若该值不存在则会深拷贝缺省值。</span></div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>&amp; hello = <a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a>(<span class="stringliteral">&quot;/hello&quot;</span>).GetWithDefault(d, <span class="stringliteral">&quot;world&quot;</span>);</div><div class="line"></div><div class="line"><span class="comment">// { &quot;project&quot; : &quot;RapidJSON&quot;, &quot;stars&quot; : 11, &quot;a&quot; : { &quot;b&quot; : [ null ] }, &quot;hello&quot; : &quot;world&quot; }</span></div><div class="line"></div><div class="line"><span class="comment">// Swap() 和 Set() 相似</span></div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> x(<span class="stringliteral">&quot;C++&quot;</span>);</div><div class="line"><a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a>(<span class="stringliteral">&quot;/hello&quot;</span>).Swap(d, x);</div><div class="line"></div><div class="line"><span class="comment">// { &quot;project&quot; : &quot;RapidJSON&quot;, &quot;stars&quot; : 11, &quot;a&quot; : { &quot;b&quot; : [ null ] }, &quot;hello&quot; : &quot;C++&quot; }</span></div><div class="line"><span class="comment">// x 变成 &quot;world&quot;</span></div><div class="line"></div><div class="line"><span class="comment">// 删去一个成员或元素,若值存在返回 true</span></div><div class="line"><span class="keywordtype">bool</span> success = <a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a>(<span class="stringliteral">&quot;/a&quot;</span>).Erase(d);</div><div class="line">assert(success);</div><div class="line"></div><div class="line"><span class="comment">// { &quot;project&quot; : &quot;RapidJSON&quot;, &quot;stars&quot; : 10 }</span></div></div><!-- fragment --><h1><a class="anchor" id="HelperFunctions"></a>
辅助函数</h1>
<p>由于面向对象的调用习惯可能不符直觉,RapidJSON 也提供了一些辅助函数,它们把成员函数包装成自由函数。</p>
<p>以下的例子与上面例子所做的事情完全相同。</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div>
-<div class="line"></div>
-<div class="line">SetValueByPointer(d, <span class="stringliteral">&quot;/project&quot;</span>, <span class="stringliteral">&quot;RapidJSON&quot;</span>);</div>
-<div class="line">SetValueByPointer(d, <span class="stringliteral">&quot;/stars&quot;</span>, 10);</div>
-<div class="line"></div>
-<div class="line"><span class="keywordflow">if</span> (<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>* stars = GetValueByPointer(d, <span class="stringliteral">&quot;/stars&quot;</span>))</div>
-<div class="line"> stars-&gt;SetInt(stars-&gt;GetInt() + 1);</div>
-<div class="line"></div>
-<div class="line">CreateValueByPointer(d, <span class="stringliteral">&quot;/a/b/0&quot;</span>);</div>
-<div class="line"></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>&amp; hello = GetValueByPointerWithDefault(d, <span class="stringliteral">&quot;/hello&quot;</span>, <span class="stringliteral">&quot;world&quot;</span>);</div>
-<div class="line"></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> x(<span class="stringliteral">&quot;C++&quot;</span>);</div>
-<div class="line">SwapValueByPointer(d, <span class="stringliteral">&quot;/hello&quot;</span>, x);</div>
-<div class="line"></div>
-<div class="line"><span class="keywordtype">bool</span> success = EraseValueByPointer(d, <span class="stringliteral">&quot;/a&quot;</span>);</div>
-<div class="line">assert(success);</div>
-</div><!-- fragment --><p>以下对比 3 种调用方式:</p>
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div><div class="line"></div><div class="line">SetValueByPointer(d, <span class="stringliteral">&quot;/project&quot;</span>, <span class="stringliteral">&quot;RapidJSON&quot;</span>);</div><div class="line">SetValueByPointer(d, <span class="stringliteral">&quot;/stars&quot;</span>, 10);</div><div class="line"></div><div class="line"><span class="keywordflow">if</span> (<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>* stars = GetValueByPointer(d, <span class="stringliteral">&quot;/stars&quot;</span>))</div><div class="line"> stars-&gt;SetInt(stars-&gt;GetInt() + 1);</div><div class="line"></div><div class="line">CreateValueByPointer(d, <span class="stringliteral">&quot;/a/b/0&quot;</span>);</div><div class="line"></div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>&amp; hello = GetValueByPointerWithDefault(d, <span class="stringliteral">&quot;/hello&quot;</span>, <span class="stringliteral">&quot;world&quot;</span>);</div><div class="line"></div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> x(<span class="stringliteral">&quot;C++&quot;</span>);</div><div class="line">SwapValueByPointer(d, <span class="stringliteral">&quot;/hello&quot;</span>, x);</div><div class="line"></div><div class="line"><span class="keywordtype">bool</span> success = EraseValueByPointer(d, <span class="stringliteral">&quot;/a&quot;</span>);</div><div class="line">assert(success);</div></div><!-- fragment --><p>以下对比 3 种调用方式:</p>
<ol type="1">
<li><code>Pointer(source).&lt;Method&gt;(root, ...)</code></li>
<li><code>&lt;Method&gt;ValueByPointer(root, Pointer(source), ...)</code></li>
@@ -180,51 +121,20 @@ JSON Pointer</h1>
解析 Pointer</h1>
<p><code>Pointer::Get()</code> 或 <code>GetValueByPointer()</code> 函数并不修改 DOM。若那些 token 不能匹配 DOM 里的值,这些函数便返回 <code>nullptr</code>。使用者可利用这个方法来检查一个值是否存在。</p>
<p>注意,数值 token 可表示数组索引或成员名字。解析过程中会按值的类型来匹配。</p>
-<div class="fragment"><div class="line">{</div>
-<div class="line"> <span class="stringliteral">&quot;0&quot;</span> : 123,</div>
-<div class="line"> <span class="stringliteral">&quot;1&quot;</span> : [456]</div>
-<div class="line">}</div>
-</div><!-- fragment --><ol type="1">
+<div class="fragment"><div class="line">{</div><div class="line"> &quot;0&quot; : 123,</div><div class="line"> &quot;1&quot; : [456]</div><div class="line">}</div></div><!-- fragment --><ol type="1">
<li><code>"/0"</code> → <code>123</code></li>
<li><code>"/1/0"</code> → <code>456</code></li>
</ol>
<p>Token <code>"0"</code> 在第一个 pointer 中被当作成员名字。它在第二个 pointer 中被当作成数组索引。</p>
<p>其他函数会改变 DOM,包括 <code>Create()</code>、<code>GetWithDefault()</code>、<code>Set()</code>、<code>Swap()</code>。这些函数总是成功的。若一些父值不存在,就会创建它们。若父值类型不匹配 token,也会强行改变其类型。改变类型也意味着完全移除其 DOM 子树的内容。</p>
<p>例如,把上面的 JSON 解译至 <code>d</code> 之后,</p>
-<div class="fragment"><div class="line">SetValueByPointer(d, <span class="stringliteral">&quot;1/a&quot;</span>, 789); <span class="comment">// { &quot;0&quot; : 123, &quot;1&quot; : { &quot;a&quot; : 789 } }</span></div>
-</div><!-- fragment --><h2>解析负号 token</h2>
+<div class="fragment"><div class="line">SetValueByPointer(d, <span class="stringliteral">&quot;1/a&quot;</span>, 789); <span class="comment">// { &quot;0&quot; : 123, &quot;1&quot; : { &quot;a&quot; : 789 } }</span></div></div><!-- fragment --><h2>解析负号 token</h2>
<p>另外,<a href="https://tools.ietf.org/html/rfc6901">RFC6901</a> 定义了一个特殊 token <code>-</code> (单个负号),用于表示数组最后元素的下一个元素。 <code>Get()</code> 只会把此 token 当作成员名字 '"-"'。而其他函数则会以此解析数组,等同于对数组调用 <code>Value::PushBack()</code> 。</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div>
-<div class="line">d.Parse(<span class="stringliteral">&quot;{\&quot;foo\&quot;:[123]}&quot;</span>);</div>
-<div class="line">SetValueByPointer(d, <span class="stringliteral">&quot;/foo/-&quot;</span>, 456); <span class="comment">// { &quot;foo&quot; : [123, 456] }</span></div>
-<div class="line">SetValueByPointer(d, <span class="stringliteral">&quot;/-&quot;</span>, 789); <span class="comment">// { &quot;foo&quot; : [123, 456], &quot;-&quot; : 789 }</span></div>
-</div><!-- fragment --><h2>解析 Document 及 Value</h2>
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div><div class="line">d.Parse(<span class="stringliteral">&quot;{\&quot;foo\&quot;:[123]}&quot;</span>);</div><div class="line">SetValueByPointer(d, <span class="stringliteral">&quot;/foo/-&quot;</span>, 456); <span class="comment">// { &quot;foo&quot; : [123, 456] }</span></div><div class="line">SetValueByPointer(d, <span class="stringliteral">&quot;/-&quot;</span>, 789); <span class="comment">// { &quot;foo&quot; : [123, 456], &quot;-&quot; : 789 }</span></div></div><!-- fragment --><h2>解析 Document 及 Value</h2>
<p>当使用 <code>p.Get(root)</code> 或 <code>GetValueByPointer(root, p)</code>,<code>root</code> 是一个(常数) <code>Value&amp;</code>。这意味着,它也可以是 DOM 里的一个子树。</p>
<p>其他函数有两组签名。一组使用 <code>Document&amp; document</code> 作为参数,另一组使用 <code>Value&amp; root</code>。第一组使用 <code>document.GetAllocator()</code> 去创建值,而第二组则需要使用者提供一个 allocator,如同 DOM 里的函数。</p>
<p>以上例子都不需要 allocator 参数,因为它的第一个参数是 <code>Document&amp;</code>。但如果你需要对一个子树进行解析,就需要如下面的例子般提供 allocator:</p>
-<div class="fragment"><div class="line"><span class="keyword">class </span>Person {</div>
-<div class="line"><span class="keyword">public</span>:</div>
-<div class="line"> Person() {</div>
-<div class="line"> document_ = <span class="keyword">new</span> <a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a>();</div>
-<div class="line"> <span class="comment">// CreateValueByPointer() here no need allocator</span></div>
-<div class="line"> SetLocation(CreateValueByPointer(*document_, <span class="stringliteral">&quot;/residence&quot;</span>), ...);</div>
-<div class="line"> SetLocation(CreateValueByPointer(*document_, <span class="stringliteral">&quot;/office&quot;</span>), ...);</div>
-<div class="line"> };</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">private</span>:</div>
-<div class="line"> <span class="keywordtype">void</span> SetLocation(<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>&amp; location, <span class="keyword">const</span> <span class="keywordtype">char</span>* country, <span class="keyword">const</span> <span class="keywordtype">char</span>* addresses[2]) {</div>
-<div class="line"> Value::Allocator&amp; a = document_-&gt;GetAllocator();</div>
-<div class="line"> <span class="comment">// SetValueByPointer() here need allocator</span></div>
-<div class="line"> SetValueByPointer(location, <span class="stringliteral">&quot;/country&quot;</span>, country, a);</div>
-<div class="line"> SetValueByPointer(location, <span class="stringliteral">&quot;/address/0&quot;</span>, address[0], a);</div>
-<div class="line"> SetValueByPointer(location, <span class="stringliteral">&quot;/address/1&quot;</span>, address[1], a);</div>
-<div class="line"> }</div>
-<div class="line"></div>
-<div class="line"> <span class="comment">// ...</span></div>
-<div class="line"></div>
-<div class="line"> <a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a>* document_;</div>
-<div class="line">};</div>
-</div><!-- fragment --><p><code>Erase()</code> 或 <code>EraseValueByPointer()</code> 不需要 allocator。而且它们成功删除值之后会返回 <code>true</code>。</p>
+<div class="fragment"><div class="line"><span class="keyword">class </span>Person {</div><div class="line"><span class="keyword">public</span>:</div><div class="line"> Person() {</div><div class="line"> document_ = <span class="keyword">new</span> <a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a>();</div><div class="line"> <span class="comment">// CreateValueByPointer() here no need allocator</span></div><div class="line"> SetLocation(CreateValueByPointer(*document_, <span class="stringliteral">&quot;/residence&quot;</span>), ...);</div><div class="line"> SetLocation(CreateValueByPointer(*document_, <span class="stringliteral">&quot;/office&quot;</span>), ...);</div><div class="line"> };</div><div class="line"></div><div class="line"><span class="keyword">private</span>:</div><div class="line"> <span class="keywordtype">void</span> SetLocation(<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>&amp; location, <span class="keyword">const</span> <span class="keywordtype">char</span>* country, <span class="keyword">const</span> <span class="keywordtype">char</span>* addresses[2]) {</div><div class="line"> Value::Allocator&amp; a = document_-&gt;GetAllocator();</div><div class="line"> <span class="comment">// SetValueByPointer() here need allocator</span></div><div class="line"> SetValueByPointer(location, <span class="stringliteral">&quot;/country&quot;</span>, country, a);</div><div class="line"> SetValueByPointer(location, <span class="stringliteral">&quot;/address/0&quot;</span>, address[0], a);</div><div class="line"> SetValueByPointer(location, <span class="stringliteral">&quot;/address/1&quot;</span>, address[1], a);</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="comment">// ...</span></div><div class="line"></div><div class="line"> <a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a>* document_;</div><div class="line">};</div></div><!-- fragment --><p><code>Erase()</code> 或 <code>EraseValueByPointer()</code> 不需要 allocator。而且它们成功删除值之后会返回 <code>true</code>。</p>
<h1><a class="anchor" id="ErrorHandling"></a>
错误处理</h1>
<p><code>Pointer</code> 在其建构函数里会解译源字符串。若有解析错误,<code>Pointer::IsValid()</code> 返回 <code>false</code>。你可使用 <code>Pointer::GetParseErrorCode()</code> 和 <code>GetParseErrorOffset()</code> 去获取错信息。</p>
@@ -245,29 +155,19 @@ URI 片段表示方式</h1>
<tr>
<td><code>"/ "</code> </td><td><code>"#/%20"</code> </td><td><code>{" "}</code> </td></tr>
<tr>
-<td><code>"/\\0"</code> </td><td><code>"#/%00"</code> </td><td><code>{"\\0"}</code> </td></tr>
+<td><code>"/\0"</code> </td><td><code>"#/%00"</code> </td><td><code>{"\0"}</code> </td></tr>
<tr>
<td><code>"/€"</code> </td><td><code>"#/%E2%82%AC"</code> </td><td><code>{"€"}</code> </td></tr>
</table>
<p>RapidJSON 完全支持 URI 片段表示方式。它在解译时会自动检测 <code>#</code> 号。</p>
<h1>字符串化</h1>
<p>你也可以把一个 <code>Pointer</code> 字符串化,储存于字符串或其他输出流。例如:</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a> p(...);</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21">StringBuffer</a> sb;</div>
-<div class="line">p.Stringify(sb);</div>
-<div class="line">std::cout &lt;&lt; sb.GetString() &lt;&lt; std::endl;</div>
-</div><!-- fragment --><p>使用 <code>StringifyUriFragment()</code> 可以把 pointer 字符串化为 URI 片段表示法。</p>
+<div class="fragment"><div class="line">Pointer p(...);</div><div class="line">StringBuffer sb;</div><div class="line">p.Stringify(sb);</div><div class="line">std::cout &lt;&lt; sb.GetString() &lt;&lt; std::endl;</div></div><!-- fragment --><p>使用 <code>StringifyUriFragment()</code> 可以把 pointer 字符串化为 URI 片段表示法。</p>
<h1><a class="anchor" id="UserSuppliedTokens"></a>
使用者提供的 tokens</h1>
<p>若一个 pointer 会用于多次解析,它应该只被创建一次,然后再施于不同的 DOM ,或在不同时间做解析。这样可以避免多次创键 <code>Pointer</code>,节省时间和内存分配。</p>
<p>我们甚至可以再更进一步,完全消去解析过程及动态内存分配。我们可以直接生成 token 数组:</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#define NAME(s) { s, sizeof(s) / sizeof(s[0]) - 1, kPointerInvalidIndex }</span></div>
-<div class="line"><span class="preprocessor">#define INDEX(i) { #i, sizeof(#i) - 1, i }</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">static</span> <span class="keyword">const</span> Pointer::Token kTokens[] = { NAME(<span class="stringliteral">&quot;foo&quot;</span>), INDEX(123) };</div>
-<div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a> p(kTokens, <span class="keyword">sizeof</span>(kTokens) / <span class="keyword">sizeof</span>(kTokens[0]));</div>
-<div class="line"><span class="comment">// Equivalent to static const Pointer p(&quot;/foo/123&quot;);</span></div>
-</div><!-- fragment --><p>这种做法可能适合内存受限的系统。 </p>
+<div class="fragment"><div class="line"><span class="preprocessor">#define NAME(s) { s, sizeof(s) / sizeof(s[0]) - 1, kPointerInvalidIndex }</span></div><div class="line"><span class="preprocessor">#define INDEX(i) { #i, sizeof(#i) - 1, i }</span></div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keyword">const</span> Pointer::Token kTokens[] = { NAME(<span class="stringliteral">&quot;foo&quot;</span>), INDEX(123) };</div><div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a> p(kTokens, <span class="keyword">sizeof</span>(kTokens) / <span class="keyword">sizeof</span>(kTokens[0]));</div><div class="line"><span class="comment">// Equivalent to static const Pointer p(&quot;/foo/123&quot;);</span></div></div><!-- fragment --><p>这种做法可能适合内存受限的系统。 </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/md_doc_sax_8zh-cn.html b/zh-cn/md_doc_sax_8zh-cn.html
index fc7c2bd8..168608b1 100644
--- a/zh-cn/md_doc_sax_8zh-cn.html
+++ b/zh-cn/md_doc_sax_8zh-cn.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: SAX</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('md_doc_sax_8zh-cn.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -83,11 +84,15 @@ $(document).ready(function(){initNavTree('md_doc_sax_8zh-cn.html','');});
<div class="toc"><h3>目录</h3>
<ul><li class="level1"><a href="#Reader">Reader</a><ul><li class="level2"><a href="#Handler">处理器</a></li>
<li class="level2"><a href="#GenericReader">GenericReader</a></li>
+<li class="level2"><a href="#SaxParsing">解析</a></li>
</ul>
</li>
-<li class="level1"><a href="#Writer">Writer</a><ul><li class="level2"><a href="#PrettyWriter">PrettyWriter</a></li>
+<li class="level1"><a href="#Writer">Writer</a><ul><li class="level2"><a href="#WriterTemplate">模板</a></li>
+<li class="level2"><a href="#PrettyWriter">PrettyWriter</a></li>
<li class="level2"><a href="#CompletenessReset">完整性及重置</a></li>
-<li class="level2"><a href="#CustomDataStructure">解析 JSON 至自定义结构</a></li>
+</ul>
+</li>
+<li class="level1"><a href="#SaxTechniques">技巧</a><ul><li class="level2"><a href="#CustomDataStructure">解析 JSON 至自定义结构</a></li>
<li class="level2"><a href="#Filtering">过滤 JSON</a></li>
</ul>
</li>
@@ -99,95 +104,13 @@ $(document).ready(function(){initNavTree('md_doc_sax_8zh-cn.html','');});
Reader</h1>
<p><code>Reader</code> 从输入流解析一个 JSON。当它从流中读取字符时,它会基于 JSON 的语法去分析字符,并向处理器发送事件。</p>
<p>例如,以下是一个 JSON。</p>
-<div class="fragment"><div class="line">{</div>
-<div class="line"> <span class="stringliteral">&quot;hello&quot;</span>: <span class="stringliteral">&quot;world&quot;</span>,</div>
-<div class="line"> <span class="stringliteral">&quot;t&quot;</span>: true ,</div>
-<div class="line"> <span class="stringliteral">&quot;f&quot;</span>: <span class="keyword">false</span>,</div>
-<div class="line"> <span class="stringliteral">&quot;n&quot;</span>: null,</div>
-<div class="line"> <span class="stringliteral">&quot;i&quot;</span>: 123,</div>
-<div class="line"> <span class="stringliteral">&quot;pi&quot;</span>: 3.1416,</div>
-<div class="line"> <span class="stringliteral">&quot;a&quot;</span>: [1, 2, 3, 4]</div>
-<div class="line">}</div>
-</div><!-- fragment --><p>当一个 <code>Reader</code> 解析此 JSON 时,它会顺序地向处理器发送以下的事件:</p>
-<div class="fragment"><div class="line">StartObject()</div>
-<div class="line">Key(&quot;hello&quot;, 5, true)</div>
-<div class="line">String(&quot;world&quot;, 5, true)</div>
-<div class="line">Key(&quot;t&quot;, 1, true)</div>
-<div class="line">Bool(true)</div>
-<div class="line">Key(&quot;f&quot;, 1, true)</div>
-<div class="line">Bool(false)</div>
-<div class="line">Key(&quot;n&quot;, 1, true)</div>
-<div class="line">Null()</div>
-<div class="line">Key(&quot;i&quot;)</div>
-<div class="line">UInt(123)</div>
-<div class="line">Key(&quot;pi&quot;)</div>
-<div class="line">Double(3.1416)</div>
-<div class="line">Key(&quot;a&quot;)</div>
-<div class="line">StartArray()</div>
-<div class="line">Uint(1)</div>
-<div class="line">Uint(2)</div>
-<div class="line">Uint(3)</div>
-<div class="line">Uint(4)</div>
-<div class="line">EndArray(4)</div>
-<div class="line">EndObject(7)</div>
-</div><!-- fragment --><p>除了一些事件参数需要再作解释,这些事件可以轻松地与 JSON 对上。我们可以看看 <code>simplereader</code> 例子怎样产生和以上完全相同的结果:</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="reader_8h.html">rapidjson/reader.h</a>&quot;</span></div>
-<div class="line"><span class="preprocessor">#include &lt;iostream&gt;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"><span class="keyword">using namespace </span>std;</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">struct </span>MyHandler : <span class="keyword">public</span> <a class="code" href="structrapidjson_1_1_base_reader_handler.html">BaseReaderHandler</a>&lt;UTF8&lt;&gt;, MyHandler&gt; {</div>
-<div class="line"> <span class="keywordtype">bool</span> Null() { cout &lt;&lt; <span class="stringliteral">&quot;Null()&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"> <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b) { cout &lt;&lt; <span class="stringliteral">&quot;Bool(&quot;</span> &lt;&lt; boolalpha &lt;&lt; b &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"> <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i) { cout &lt;&lt; <span class="stringliteral">&quot;Int(&quot;</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"> <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> u) { cout &lt;&lt; <span class="stringliteral">&quot;Uint(&quot;</span> &lt;&lt; u &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"> <span class="keywordtype">bool</span> Int64(int64_t i) { cout &lt;&lt; <span class="stringliteral">&quot;Int64(&quot;</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"> <span class="keywordtype">bool</span> Uint64(uint64_t u) { cout &lt;&lt; <span class="stringliteral">&quot;Uint64(&quot;</span> &lt;&lt; u &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"> <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span> d) { cout &lt;&lt; <span class="stringliteral">&quot;Double(&quot;</span> &lt;&lt; d &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"> <span class="keywordtype">bool</span> String(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy) { </div>
-<div class="line"> cout &lt;&lt; <span class="stringliteral">&quot;String(&quot;</span> &lt;&lt; str &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; length &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; boolalpha &lt;&lt; copy &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl;</div>
-<div class="line"> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"> }</div>
-<div class="line"> <span class="keywordtype">bool</span> StartObject() { cout &lt;&lt; <span class="stringliteral">&quot;StartObject()&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"> <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy) { </div>
-<div class="line"> cout &lt;&lt; <span class="stringliteral">&quot;Key(&quot;</span> &lt;&lt; str &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; length &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; boolalpha &lt;&lt; copy &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl;</div>
-<div class="line"> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"> }</div>
-<div class="line"> <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount) { cout &lt;&lt; <span class="stringliteral">&quot;EndObject(&quot;</span> &lt;&lt; memberCount &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"> <span class="keywordtype">bool</span> StartArray() { cout &lt;&lt; <span class="stringliteral">&quot;StartArray()&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"> <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount) { cout &lt;&lt; <span class="stringliteral">&quot;EndArray(&quot;</span> &lt;&lt; elementCount &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line">};</div>
-<div class="line"></div>
-<div class="line"><span class="keywordtype">void</span> main() {</div>
-<div class="line"> <span class="keyword">const</span> <span class="keywordtype">char</span> json[] = <span class="stringliteral">&quot; { \&quot;hello\&quot; : \&quot;world\&quot;, \&quot;t\&quot; : true , \&quot;f\&quot; : false, \&quot;n\&quot;: null, \&quot;i\&quot;:123, \&quot;pi\&quot;: 3.1416, \&quot;a\&quot;:[1, 2, 3, 4] } &quot;</span>;</div>
-<div class="line"></div>
-<div class="line"> MyHandler handler;</div>
-<div class="line"> <a class="code" href="classrapidjson_1_1_generic_reader.html">Reader</a> reader;</div>
-<div class="line"> <a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a> ss(json);</div>
-<div class="line"> reader.<a class="code" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b">Parse</a>(ss, handler);</div>
-<div class="line">}</div>
-</div><!-- fragment --><p>注意 RapidJSON 使用模板去静态挷定 <code>Reader</code> 类型及处理器的类形,而不是使用含虚函数的类。这个范式可以通过把函数内联而改善性能。</p>
+<div class="fragment"><div class="line">{</div><div class="line"> &quot;hello&quot;: &quot;world&quot;,</div><div class="line"> &quot;t&quot;: true ,</div><div class="line"> &quot;f&quot;: false,</div><div class="line"> &quot;n&quot;: null,</div><div class="line"> &quot;i&quot;: 123,</div><div class="line"> &quot;pi&quot;: 3.1416,</div><div class="line"> &quot;a&quot;: [1, 2, 3, 4]</div><div class="line">}</div></div><!-- fragment --><p>当一个 <code>Reader</code> 解析此 JSON 时,它会顺序地向处理器发送以下的事件:</p>
+<div class="fragment"><div class="line">StartObject()</div><div class="line">Key(&quot;hello&quot;, 5, true)</div><div class="line">String(&quot;world&quot;, 5, true)</div><div class="line">Key(&quot;t&quot;, 1, true)</div><div class="line">Bool(true)</div><div class="line">Key(&quot;f&quot;, 1, true)</div><div class="line">Bool(false)</div><div class="line">Key(&quot;n&quot;, 1, true)</div><div class="line">Null()</div><div class="line">Key(&quot;i&quot;)</div><div class="line">UInt(123)</div><div class="line">Key(&quot;pi&quot;)</div><div class="line">Double(3.1416)</div><div class="line">Key(&quot;a&quot;)</div><div class="line">StartArray()</div><div class="line">Uint(1)</div><div class="line">Uint(2)</div><div class="line">Uint(3)</div><div class="line">Uint(4)</div><div class="line">EndArray(4)</div><div class="line">EndObject(7)</div></div><!-- fragment --><p>除了一些事件参数需要再作解释,这些事件可以轻松地与 JSON 对上。我们可以看看 <code>simplereader</code> 例子怎样产生和以上完全相同的结果:</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="reader_8h.html">rapidjson/reader.h</a>&quot;</span></div><div class="line"><span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"></div><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"><span class="keyword">using namespace </span>std;</div><div class="line"></div><div class="line"><span class="keyword">struct </span>MyHandler : <span class="keyword">public</span> <a class="code" href="structrapidjson_1_1_base_reader_handler.html">BaseReaderHandler</a>&lt;UTF8&lt;&gt;, MyHandler&gt; {</div><div class="line"> <span class="keywordtype">bool</span> Null() { cout &lt;&lt; <span class="stringliteral">&quot;Null()&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"> <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b) { cout &lt;&lt; <span class="stringliteral">&quot;Bool(&quot;</span> &lt;&lt; boolalpha &lt;&lt; b &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"> <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i) { cout &lt;&lt; <span class="stringliteral">&quot;Int(&quot;</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"> <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> u) { cout &lt;&lt; <span class="stringliteral">&quot;Uint(&quot;</span> &lt;&lt; u &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"> <span class="keywordtype">bool</span> Int64(int64_t i) { cout &lt;&lt; <span class="stringliteral">&quot;Int64(&quot;</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"> <span class="keywordtype">bool</span> Uint64(uint64_t u) { cout &lt;&lt; <span class="stringliteral">&quot;Uint64(&quot;</span> &lt;&lt; u &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"> <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span> d) { cout &lt;&lt; <span class="stringliteral">&quot;Double(&quot;</span> &lt;&lt; d &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"> <span class="keywordtype">bool</span> String(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy) { </div><div class="line"> cout &lt;&lt; <span class="stringliteral">&quot;String(&quot;</span> &lt;&lt; str &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; length &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; boolalpha &lt;&lt; copy &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl;</div><div class="line"> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"> }</div><div class="line"> <span class="keywordtype">bool</span> StartObject() { cout &lt;&lt; <span class="stringliteral">&quot;StartObject()&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"> <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy) { </div><div class="line"> cout &lt;&lt; <span class="stringliteral">&quot;Key(&quot;</span> &lt;&lt; str &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; length &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; boolalpha &lt;&lt; copy &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl;</div><div class="line"> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"> }</div><div class="line"> <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount) { cout &lt;&lt; <span class="stringliteral">&quot;EndObject(&quot;</span> &lt;&lt; memberCount &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"> <span class="keywordtype">bool</span> StartArray() { cout &lt;&lt; <span class="stringliteral">&quot;StartArray()&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"> <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount) { cout &lt;&lt; <span class="stringliteral">&quot;EndArray(&quot;</span> &lt;&lt; elementCount &lt;&lt; <span class="stringliteral">&quot;)&quot;</span> &lt;&lt; endl; <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> main() {</div><div class="line"> <span class="keyword">const</span> <span class="keywordtype">char</span> json[] = <span class="stringliteral">&quot; { \&quot;hello\&quot; : \&quot;world\&quot;, \&quot;t\&quot; : true , \&quot;f\&quot; : false, \&quot;n\&quot;: null, \&quot;i\&quot;:123, \&quot;pi\&quot;: 3.1416, \&quot;a\&quot;:[1, 2, 3, 4] } &quot;</span>;</div><div class="line"></div><div class="line"> MyHandler handler;</div><div class="line"> <a class="code" href="classrapidjson_1_1_generic_reader.html">Reader</a> reader;</div><div class="line"> <a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a> ss(json);</div><div class="line"> reader.<a class="code" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b">Parse</a>(ss, handler);</div><div class="line">}</div></div><!-- fragment --><p>注意 RapidJSON 使用模板去静态挷定 <code>Reader</code> 类型及处理器的类形,而不是使用含虚函数的类。这个范式可以通过把函数内联而改善性能。</p>
<h2><a class="anchor" id="Handler"></a>
处理器</h2>
<p>如前例所示,使用者需要实现一个处理器(handler),用于处理来自 <code>Reader</code> 的事件(函数调用)。处理器必须包含以下的成员函数。</p>
-<div class="fragment"><div class="line"><span class="keyword">class </span>Handler {</div>
-<div class="line"> <span class="keywordtype">bool</span> Null();</div>
-<div class="line"> <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b);</div>
-<div class="line"> <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i);</div>
-<div class="line"> <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> i);</div>
-<div class="line"> <span class="keywordtype">bool</span> Int64(int64_t i);</div>
-<div class="line"> <span class="keywordtype">bool</span> Uint64(uint64_t i);</div>
-<div class="line"> <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span> d);</div>
-<div class="line"> <span class="keywordtype">bool</span> RawNumber(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy);</div>
-<div class="line"> <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy);</div>
-<div class="line"> <span class="keywordtype">bool</span> StartObject();</div>
-<div class="line"> <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy);</div>
-<div class="line"> <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount);</div>
-<div class="line"> <span class="keywordtype">bool</span> StartArray();</div>
-<div class="line"> <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount);</div>
-<div class="line">};</div>
-</div><!-- fragment --><p>当 <code>Reader</code> 遇到 JSON null 值时会调用 <code>Null()</code>。</p>
+<div class="fragment"><div class="line"><span class="keyword">class </span>Handler {</div><div class="line"> <span class="keywordtype">bool</span> Null();</div><div class="line"> <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b);</div><div class="line"> <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i);</div><div class="line"> <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> i);</div><div class="line"> <span class="keywordtype">bool</span> Int64(int64_t i);</div><div class="line"> <span class="keywordtype">bool</span> Uint64(uint64_t i);</div><div class="line"> <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span> d);</div><div class="line"> <span class="keywordtype">bool</span> RawNumber(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy);</div><div class="line"> <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy);</div><div class="line"> <span class="keywordtype">bool</span> StartObject();</div><div class="line"> <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy);</div><div class="line"> <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount);</div><div class="line"> <span class="keywordtype">bool</span> StartArray();</div><div class="line"> <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount);</div><div class="line">};</div></div><!-- fragment --><p>当 <code>Reader</code> 遇到 JSON null 值时会调用 <code>Null()</code>。</p>
<p>当 <code>Reader</code> 遇到 JSON true 或 false 值时会调用 <code>Bool(bool)</code>。</p>
<p>当 <code>Reader</code> 遇到 JSON number,它会选择一个合适的 C++ 类型映射,然后调用 <code>Int(int)</code>、<code>Uint(unsigned)</code>、<code>Int64(int64_t)</code>、<code>Uint64(uint64_t)</code> 及 <code>Double(double)</code> 的 * 其中之一个 *。 若开启了 <code>kParseNumbersAsStrings</code> 选项,<code>Reader</code> 便会改为调用 <code>RawNumber()</code>。</p>
<p>当 <code>Reader</code> 遇到 JSON string,它会调用 <code>String(const char* str, SizeType length, bool copy)</code>。第一个参数是字符串的指针。第二个参数是字符串的长度(不包含空终止符号)。注意 RapidJSON 支持字串中含有空字符 <code>\0</code>。若出现这种情况,便会有 <code>strlen(str) &lt; length</code>。最后的 <code>copy</code> 参数表示处理器是否需要复制该字符串。在正常解析时,<code>copy = true</code>。仅当使用原位解析时,<code>copy = false</code>。此外,还要注意字符的类型与目标编码相关,我们稍后会再谈这一点。</p>
@@ -198,70 +121,19 @@ Reader</h1>
<h2><a class="anchor" id="GenericReader"></a>
GenericReader</h2>
<p>前面提及,<code>Reader</code> 是 <code>GenericReader</code> 模板类的 typedef:</p>
-<div class="fragment"><div class="line"><span class="keyword">namespace </span>rapidjson {</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> TargetEncoding, <span class="keyword">typename</span> Allocator = MemoryPoolAllocator&lt;&gt; &gt;</div>
-<div class="line"><span class="keyword">class </span>GenericReader {</div>
-<div class="line"> <span class="comment">// ...</span></div>
-<div class="line">};</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">typedef</span> GenericReader&lt;UTF8&lt;&gt;, UTF8&lt;&gt; &gt; <a class="code" href="namespacerapidjson.html#ad5310edd1226f5b3ea82dc0d4d3740c6">Reader</a>;</div>
-<div class="line"></div>
-<div class="line">} <span class="comment">// namespace rapidjson</span></div>
-</div><!-- fragment --><p><code>Reader</code> 使用 UTF-8 作为来源及目标编码。来源编码是指 JSON 流的编码。目标编码是指 <code>String()</code> 的 <code>str</code> 参数所用的编码。例如,要解析一个 UTF-8 流并输出至 UTF-16 string 事件,你需要这么定义一个 reader:</p>
-<div class="fragment"><div class="line">GenericReader&lt;UTF8&lt;&gt;, UTF16&lt;&gt; &gt; reader;</div>
-</div><!-- fragment --><p>注意到 <code>UTF16</code> 的缺省类型是 <code>wchar_t</code>。因此这个 <code>reader</code> 需要调用处理器的 <code>String(const wchar_t*, SizeType, bool)</code>。</p>
+<div class="fragment"><div class="line"><span class="keyword">namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a> {</div><div class="line"></div><div class="line"><span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> TargetEncoding, <span class="keyword">typename</span> Allocator = MemoryPoolAllocator&lt;&gt; &gt;</div><div class="line"><span class="keyword">class </span>GenericReader {</div><div class="line"> <span class="comment">// ...</span></div><div class="line">};</div><div class="line"></div><div class="line"><span class="keyword">typedef</span> GenericReader&lt;UTF8&lt;&gt;, UTF8&lt;&gt; &gt; <a class="code" href="namespacerapidjson.html#ad5310edd1226f5b3ea82dc0d4d3740c6">Reader</a>;</div><div class="line"></div><div class="line">} <span class="comment">// namespace rapidjson</span></div></div><!-- fragment --><p><code>Reader</code> 使用 UTF-8 作为来源及目标编码。来源编码是指 JSON 流的编码。目标编码是指 <code>String()</code> 的 <code>str</code> 参数所用的编码。例如,要解析一个 UTF-8 流并输出至 UTF-16 string 事件,你需要这么定义一个 reader:</p>
+<div class="fragment"><div class="line">GenericReader&lt;UTF8&lt;&gt;, UTF16&lt;&gt; &gt; reader;</div></div><!-- fragment --><p>注意到 <code>UTF16</code> 的缺省类型是 <code>wchar_t</code>。因此这个 <code>reader</code> 需要调用处理器的 <code>String(const wchar_t*, SizeType, bool)</code>。</p>
<p>第三个模板参数 <code>Allocator</code> 是内部数据结构(实际上是一个堆栈)的分配器类型。</p>
-<h2><a class="anchor" id=""></a>
-</h2>
+<h2><a class="anchor" id="SaxParsing"></a>
+解析</h2>
<p><code>Reader</code> 的唯一功能就是解析 JSON。</p>
-<div class="fragment"><div class="line"><span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><span class="keywordtype">bool</span> Parse(InputStream&amp; is, Handler&amp; handler);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// 使用 parseFlags = kDefaultParseFlags</span></div>
-<div class="line"><span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><span class="keywordtype">bool</span> Parse(InputStream&amp; is, Handler&amp; handler);</div>
-</div><!-- fragment --><p>若在解析中出现错误,它会返回 <code>false</code>。使用者可调用 <code>bool HasParseEror()</code>, <code>ParseErrorCode GetParseErrorCode()</code> 及 <code>size_t GetErrorOffset()</code> 获取错误状态。实际上 <code>Document</code> 使用这些 <code>Reader</code> 函数去获取解析错误。请参考 <a class="el" href="md_doc_dom_8zh-cn.html">DOM</a> 去了解有关解析错误的细节。</p>
+<div class="fragment"><div class="line"><span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div><div class="line"><span class="keywordtype">bool</span> Parse(InputStream&amp; is, Handler&amp; handler);</div><div class="line"></div><div class="line"><span class="comment">// 使用 parseFlags = kDefaultParseFlags</span></div><div class="line"><span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div><div class="line"><span class="keywordtype">bool</span> Parse(InputStream&amp; is, Handler&amp; handler);</div></div><!-- fragment --><p>若在解析中出现错误,它会返回 <code>false</code>。使用者可调用 <code>bool HasParseEror()</code>, <code>ParseErrorCode GetParseErrorCode()</code> 及 <code>size_t GetErrorOffset()</code> 获取错误状态。实际上 <code>Document</code> 使用这些 <code>Reader</code> 函数去获取解析错误。请参考 <a class="el" href="md_doc_dom_8zh-cn.html">DOM</a> 去了解有关解析错误的细节。</p>
<h1><a class="anchor" id="Writer"></a>
Writer</h1>
<p><code>Reader</code> 把 JSON 转换(解析)成为事件。<code>Writer</code> 做完全相反的事情。它把事件转换成 JSON。</p>
<p><code>Writer</code> 是非常容易使用的。若你的应用程序只需把一些数据转换成 JSON,可能直接使用 <code>Writer</code>,会比建立一个 <code>Document</code> 然后用 <code>Writer</code> 把它转换成 JSON 更加方便。</p>
<p>在 <code>simplewriter</code> 例子里,我们做 <code>simplereader</code> 完全相反的事情。</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/writer.h&quot;</span></div>
-<div class="line"><span class="preprocessor">#include &quot;rapidjson/stringbuffer.h&quot;</span></div>
-<div class="line"><span class="preprocessor">#include &lt;iostream&gt;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"><span class="keyword">using namespace </span>std;</div>
-<div class="line"></div>
-<div class="line"><span class="keywordtype">void</span> main() {</div>
-<div class="line"> <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">StringBuffer</a> s;</div>
-<div class="line"> <a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;StringBuffer&gt;</a> writer(s);</div>
-<div class="line"></div>
-<div class="line"> writer.StartObject();</div>
-<div class="line"> writer.Key(<span class="stringliteral">&quot;hello&quot;</span>);</div>
-<div class="line"> writer.String(<span class="stringliteral">&quot;world&quot;</span>);</div>
-<div class="line"> writer.Key(<span class="stringliteral">&quot;t&quot;</span>);</div>
-<div class="line"> writer.Bool(<span class="keyword">true</span>);</div>
-<div class="line"> writer.Key(<span class="stringliteral">&quot;f&quot;</span>);</div>
-<div class="line"> writer.Bool(<span class="keyword">false</span>);</div>
-<div class="line"> writer.Key(<span class="stringliteral">&quot;n&quot;</span>);</div>
-<div class="line"> writer.Null();</div>
-<div class="line"> writer.Key(<span class="stringliteral">&quot;i&quot;</span>);</div>
-<div class="line"> writer.Uint(123);</div>
-<div class="line"> writer.Key(<span class="stringliteral">&quot;pi&quot;</span>);</div>
-<div class="line"> writer.Double(3.1416);</div>
-<div class="line"> writer.Key(<span class="stringliteral">&quot;a&quot;</span>);</div>
-<div class="line"> writer.StartArray();</div>
-<div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; 4; i++)</div>
-<div class="line"> writer.Uint(i);</div>
-<div class="line"> writer.EndArray();</div>
-<div class="line"> writer.EndObject();</div>
-<div class="line"></div>
-<div class="line"> cout &lt;&lt; s.GetString() &lt;&lt; endl;</div>
-<div class="line">}</div>
-</div><!-- fragment --><div class="fragment"><div class="line">{<span class="stringliteral">&quot;hello&quot;</span>:<span class="stringliteral">&quot;world&quot;</span>,<span class="stringliteral">&quot;t&quot;</span>:<span class="keyword">true</span>,<span class="stringliteral">&quot;f&quot;</span>:<span class="keyword">false</span>,<span class="stringliteral">&quot;n&quot;</span>:null,<span class="stringliteral">&quot;i&quot;</span>:123,<span class="stringliteral">&quot;pi&quot;</span>:3.1416,<span class="stringliteral">&quot;a&quot;</span>:[0,1,2,3]}</div>
-</div><!-- fragment --><p><code>String()</code> 及 <code>Key()</code> 各有两个重载。一个是如处理器 concept 般,有 3 个参数。它能处理含空字符的字符串。另一个是如上中使用的较简单版本。</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/writer.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;rapidjson/stringbuffer.h&quot;</span></div><div class="line"><span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"></div><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"><span class="keyword">using namespace </span>std;</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> main() {</div><div class="line"> <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">StringBuffer</a> s;</div><div class="line"> <a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;StringBuffer&gt;</a> writer(s);</div><div class="line"></div><div class="line"> writer.StartObject();</div><div class="line"> writer.Key(<span class="stringliteral">&quot;hello&quot;</span>);</div><div class="line"> writer.String(<span class="stringliteral">&quot;world&quot;</span>);</div><div class="line"> writer.Key(<span class="stringliteral">&quot;t&quot;</span>);</div><div class="line"> writer.Bool(<span class="keyword">true</span>);</div><div class="line"> writer.Key(<span class="stringliteral">&quot;f&quot;</span>);</div><div class="line"> writer.Bool(<span class="keyword">false</span>);</div><div class="line"> writer.Key(<span class="stringliteral">&quot;n&quot;</span>);</div><div class="line"> writer.Null();</div><div class="line"> writer.Key(<span class="stringliteral">&quot;i&quot;</span>);</div><div class="line"> writer.Uint(123);</div><div class="line"> writer.Key(<span class="stringliteral">&quot;pi&quot;</span>);</div><div class="line"> writer.<a class="code" href="classrapidjson_1_1_writer.html#aff66881798d01e932a0b8b8ef97b0373">Double</a>(3.1416);</div><div class="line"> writer.Key(<span class="stringliteral">&quot;a&quot;</span>);</div><div class="line"> writer.StartArray();</div><div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; 4; i++)</div><div class="line"> writer.Uint(i);</div><div class="line"> writer.EndArray();</div><div class="line"> writer.EndObject();</div><div class="line"></div><div class="line"> cout &lt;&lt; s.GetString() &lt;&lt; endl;</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line">{&quot;hello&quot;:&quot;world&quot;,&quot;t&quot;:true,&quot;f&quot;:false,&quot;n&quot;:null,&quot;i&quot;:123,&quot;pi&quot;:3.1416,&quot;a&quot;:[0,1,2,3]}</div></div><!-- fragment --><p><code>String()</code> 及 <code>Key()</code> 各有两个重载。一个是如处理器 concept 般,有 3 个参数。它能处理含空字符的字符串。另一个是如上中使用的较简单版本。</p>
<p>注意到,例子代码中的 <code>EndArray()</code> 及 <code>EndObject()</code> 并没有参数。可以传递一个 <code>SizeType</code> 的参数,但它会被 <code>Writer</code> 忽略。</p>
<p>你可能会怀疑,为什么不使用 <code>sprintf()</code> 或 <code>std::stringstream</code> 去建立一个 JSON?</p>
<p>这有几个原因:</p><ol type="1">
@@ -272,20 +144,10 @@ Writer</h1>
<li><code>Writer</code> 可对不同平台进行优化。</li>
</ol>
<p>无论如何,使用 <code>Writer</code> API 去生成 JSON 甚至乎比这些临时方法更简单。</p>
-<h2><a class="anchor" id=""></a>
-</h2>
+<h2><a class="anchor" id="WriterTemplate"></a>
+模板</h2>
<p><code>Writer</code> 与 <code>Reader</code> 有少许设计区别。<code>Writer</code> 是一个模板类,而不是一个 typedef。 并没有 <code>GenericWriter</code>。以下是 <code>Writer</code> 的声明。</p>
-<div class="fragment"><div class="line"><span class="keyword">namespace </span>rapidjson {</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream, <span class="keyword">typename</span> SourceEncoding = UTF8&lt;&gt;, <span class="keyword">typename</span> TargetEncoding = UTF8&lt;&gt;, <span class="keyword">typename</span> Allocator = CrtAllocator&lt;&gt; &gt;</div>
-<div class="line"><span class="keyword">class </span>Writer {</div>
-<div class="line"><span class="keyword">public</span>:</div>
-<div class="line"> <a class="code" href="classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2">Writer</a>(OutputStream&amp; os, Allocator* allocator = 0, <span class="keywordtype">size_t</span> levelDepth = kDefaultLevelDepth)</div>
-<div class="line"><span class="comment">// ...</span></div>
-<div class="line">};</div>
-<div class="line"></div>
-<div class="line">} <span class="comment">// namespace rapidjson</span></div>
-</div><!-- fragment --><p><code>OutputStream</code> 模板参数是输出流的类型。它的类型不可以被自动推断,必须由使用者提供。</p>
+<div class="fragment"><div class="line"><span class="keyword">namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a> {</div><div class="line"></div><div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream, <span class="keyword">typename</span> SourceEncoding = UTF8&lt;&gt;, <span class="keyword">typename</span> TargetEncoding = UTF8&lt;&gt;, <span class="keyword">typename</span> Allocator = CrtAllocator&lt;&gt; &gt;</div><div class="line"><span class="keyword">class </span>Writer {</div><div class="line"><span class="keyword">public</span>:</div><div class="line"> <a class="code" href="classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2">Writer</a>(OutputStream&amp; os, Allocator* allocator = 0, <span class="keywordtype">size_t</span> levelDepth = kDefaultLevelDepth)</div><div class="line"><span class="comment">// ...</span></div><div class="line">};</div><div class="line"></div><div class="line">} <span class="comment">// namespace rapidjson</span></div></div><!-- fragment --><p><code>OutputStream</code> 模板参数是输出流的类型。它的类型不可以被自动推断,必须由使用者提供。</p>
<p><code>SourceEncoding</code> 模板参数指定了 <code>String(const Ch*, ...)</code> 的编码。</p>
<p><code>TargetEncoding</code> 模板参数指定输出流的编码。</p>
<p><code>Allocator</code> 是分配器的类型,用于分配内部数据结构(一个堆栈)。</p>
@@ -312,6 +174,20 @@ PrettyWriter</h2>
完整性及重置</h2>
<p>一个 <code>Writer</code> 只可输出单个 JSON,其根节点可以是任何 JSON 类型。当处理完单个根节点事件(如 <code>String()</code>),或匹配的最后 <code>EndObject()</code> 或 <code>EndArray()</code> 事件,输出的 JSON 是结构完整(well-formed)及完整的。使用者可调用 <code>Writer::IsComplete()</code> 去检测完整性。</p>
<p>当 JSON 完整时,<code>Writer</code> 不能再接受新的事件。不然其输出便会是不合法的(例如有超过一个根节点)。为了重新利用 <code>Writer</code> 对象,使用者可调用 <code>Writer::Reset(OutputStream&amp; os)</code> 去重置其所有内部状态及设置新的输出流。</p>
+<h1><a class="anchor" id="SaxTechniques"></a>
+技巧</h1>
+<h2><a class="anchor" id="CustomDataStructure"></a>
+解析 JSON 至自定义结构</h2>
+<p><code>Document</code> 的解析功能完全依靠 <code>Reader</code>。实际上 <code>Document</code> 是一个处理器,在解析 JSON 时接收事件去建立一个 DOM。</p>
+<p>使用者可以直接使用 <code>Reader</code> 去建立其他数据结构。这消除了建立 DOM 的步骤,从而减少了内存开销并改善性能。</p>
+<p>在以下的 <code>messagereader</code> 例子中,<code>ParseMessages()</code> 解析一个 JSON,该 JSON 应该是一个含键值对的 object。</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="reader_8h.html">rapidjson/reader.h</a>&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;rapidjson/error/en.h&quot;</span></div><div class="line"><span class="preprocessor">#include &lt;iostream&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;map&gt;</span></div><div class="line"></div><div class="line"><span class="keyword">using namespace </span>std;</div><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"></div><div class="line"><span class="keyword">typedef</span> map&lt;string, string&gt; MessageMap;</div><div class="line"></div><div class="line"><span class="keyword">struct </span>MessageHandler</div><div class="line"> : <span class="keyword">public</span> <a class="code" href="structrapidjson_1_1_base_reader_handler.html">BaseReaderHandler</a>&lt;UTF8&lt;&gt;, MessageHandler&gt; {</div><div class="line"> MessageHandler() : state_(kExpectObjectStart) {</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">bool</span> StartObject() {</div><div class="line"> <span class="keywordflow">switch</span> (state_) {</div><div class="line"> <span class="keywordflow">case</span> kExpectObjectStart:</div><div class="line"> state_ = kExpectNameOrObjectEnd;</div><div class="line"> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"> <span class="keywordflow">default</span>:</div><div class="line"> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"> }</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">bool</span> String(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span>) {</div><div class="line"> <span class="keywordflow">switch</span> (state_) {</div><div class="line"> <span class="keywordflow">case</span> kExpectNameOrObjectEnd:</div><div class="line"> name_ = string(str, length);</div><div class="line"> state_ = kExpectValue;</div><div class="line"> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"> <span class="keywordflow">case</span> kExpectValue:</div><div class="line"> messages_.insert(MessageMap::value_type(name_, <span class="keywordtype">string</span>(str, length)));</div><div class="line"> state_ = kExpectNameOrObjectEnd;</div><div class="line"> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"> <span class="keywordflow">default</span>:</div><div class="line"> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"> }</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) { <span class="keywordflow">return</span> state_ == kExpectNameOrObjectEnd; }</div><div class="line"></div><div class="line"> <span class="keywordtype">bool</span> Default() { <span class="keywordflow">return</span> <span class="keyword">false</span>; } <span class="comment">// All other events are invalid.</span></div><div class="line"></div><div class="line"> MessageMap messages_;</div><div class="line"> <span class="keyword">enum</span> State {</div><div class="line"> kExpectObjectStart,</div><div class="line"> kExpectNameOrObjectEnd,</div><div class="line"> kExpectValue,</div><div class="line"> }state_;</div><div class="line"> std::string name_;</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> ParseMessages(<span class="keyword">const</span> <span class="keywordtype">char</span>* json, MessageMap&amp; messages) {</div><div class="line"> <a class="code" href="classrapidjson_1_1_generic_reader.html">Reader</a> reader;</div><div class="line"> MessageHandler handler;</div><div class="line"> <a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a> ss(json);</div><div class="line"> <span class="keywordflow">if</span> (reader.<a class="code" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b">Parse</a>(ss, handler))</div><div class="line"> messages.swap(handler.messages_); <span class="comment">// Only change it if success.</span></div><div class="line"> <span class="keywordflow">else</span> {</div><div class="line"> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> e = reader.<a class="code" href="classrapidjson_1_1_generic_reader.html#a042c621cf745c5ed3a6f5ff9418dd05e">GetParseErrorCode</a>();</div><div class="line"> <span class="keywordtype">size_t</span> o = reader.<a class="code" href="classrapidjson_1_1_generic_reader.html#ab50019e0a715320f83b7610b83dcef8f">GetErrorOffset</a>();</div><div class="line"> cout &lt;&lt; <span class="stringliteral">&quot;Error: &quot;</span> &lt;&lt; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">GetParseError_En</a>(e) &lt;&lt; endl;;</div><div class="line"> cout &lt;&lt; <span class="stringliteral">&quot; at offset &quot;</span> &lt;&lt; o &lt;&lt; <span class="stringliteral">&quot; near &#39;&quot;</span> &lt;&lt; string(json).substr(o, 10) &lt;&lt; <span class="stringliteral">&quot;...&#39;&quot;</span> &lt;&lt; endl;</div><div class="line"> }</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> main() {</div><div class="line"> MessageMap messages;</div><div class="line"></div><div class="line"> <span class="keyword">const</span> <span class="keywordtype">char</span>* json1 = <span class="stringliteral">&quot;{ \&quot;greeting\&quot; : \&quot;Hello!\&quot;, \&quot;farewell\&quot; : \&quot;bye-bye!\&quot; }&quot;</span>;</div><div class="line"> cout &lt;&lt; json1 &lt;&lt; endl;</div><div class="line"> ParseMessages(json1, messages);</div><div class="line"></div><div class="line"> <span class="keywordflow">for</span> (MessageMap::const_iterator itr = messages.begin(); itr != messages.end(); ++itr)</div><div class="line"> cout &lt;&lt; itr-&gt;first &lt;&lt; <span class="stringliteral">&quot;: &quot;</span> &lt;&lt; itr-&gt;second &lt;&lt; endl;</div><div class="line"></div><div class="line"> cout &lt;&lt; endl &lt;&lt; <span class="stringliteral">&quot;Parse a JSON with invalid schema.&quot;</span> &lt;&lt; endl;</div><div class="line"> <span class="keyword">const</span> <span class="keywordtype">char</span>* json2 = <span class="stringliteral">&quot;{ \&quot;greeting\&quot; : \&quot;Hello!\&quot;, \&quot;farewell\&quot; : \&quot;bye-bye!\&quot;, \&quot;foo\&quot; : {} }&quot;</span>;</div><div class="line"> cout &lt;&lt; json2 &lt;&lt; endl;</div><div class="line"> ParseMessages(json2, messages);</div><div class="line"></div><div class="line"> <span class="keywordflow">return</span> 0;</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line">{ &quot;greeting&quot; : &quot;Hello!&quot;, &quot;farewell&quot; : &quot;bye-bye!&quot; }</div><div class="line">farewell: bye-bye!</div><div class="line">greeting: Hello!</div><div class="line"></div><div class="line">Parse a JSON with invalid schema.</div><div class="line">{ &quot;greeting&quot; : &quot;Hello!&quot;, &quot;farewell&quot; : &quot;bye-bye!&quot;, &quot;foo&quot; : {} }</div><div class="line">Error: Terminate parsing due to Handler error.</div><div class="line"> at offset 59 near &#39;} }...&#39;</div></div><!-- fragment --><p>第一个 JSON(<code>json1</code>)被成功地解析至 <code>MessageMap</code>。由于 <code>MessageMap</code> 是一个 <code>std::map</code>,打印次序按键值排序。此次序与 JSON 中的次序不同。</p>
+<p>在第二个 JSON(<code>json2</code>)中,<code>foo</code> 的值是一个空 object。由于它是一个 object,<code>MessageHandler::StartObject()</code> 会被调用。然而,在 <code>state_ = kExpectValue</code> 的情况下,该函数会返回 <code>false</code>,并导致解析过程终止。错误代码是 <code>kParseErrorTermination</code>。</p>
+<h2><a class="anchor" id="Filtering"></a>
+过滤 JSON</h2>
+<p>如前面提及过,<code>Writer</code> 可处理 <code>Reader</code> 发出的事件。<code>example/condense/condense.cpp</code> 例子简单地设置 <code>Writer</code> 作为一个 <code>Reader</code> 的处理器,因此它能移除 JSON 中的所有空白字符。<code>example/pretty/pretty.cpp</code> 例子使用同样的关系,只是以 <code>PrettyWriter</code> 取代 <code>Writer</code>。因此 <code>pretty</code> 能够重新格式化 JSON,加入缩进及换行。</p>
+<p>实际上,我们可以使用 SAX 风格 API 去加入(多个)中间层去过滤 JSON 的内容。例如 <code>capitalize</code> 例子可以把所有 JSON string 改为大写。</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="reader_8h.html">rapidjson/reader.h</a>&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;rapidjson/writer.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;rapidjson/filereadstream.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;rapidjson/filewritestream.h&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;rapidjson/error/en.h&quot;</span></div><div class="line"><span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;cctype&gt;</span></div><div class="line"></div><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"></div><div class="line"><span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputHandler&gt;</div><div class="line"><span class="keyword">struct </span>CapitalizeFilter {</div><div class="line"> CapitalizeFilter(OutputHandler&amp; out) : out_(out), buffer_() {</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">bool</span> Null() { <span class="keywordflow">return</span> out_.Null(); }</div><div class="line"> <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b) { <span class="keywordflow">return</span> out_.Bool(b); }</div><div class="line"> <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i) { <span class="keywordflow">return</span> out_.Int(i); }</div><div class="line"> <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> u) { <span class="keywordflow">return</span> out_.Uint(u); }</div><div class="line"> <span class="keywordtype">bool</span> Int64(int64_t i) { <span class="keywordflow">return</span> out_.Int64(i); }</div><div class="line"> <span class="keywordtype">bool</span> Uint64(uint64_t u) { <span class="keywordflow">return</span> out_.Uint64(u); }</div><div class="line"> <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span> d) { <span class="keywordflow">return</span> out_.Double(d); }</div><div class="line"> <span class="keywordtype">bool</span> RawNumber(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy) { <span class="keywordflow">return</span> out_.RawNumber(str, length, copy); }</div><div class="line"> <span class="keywordtype">bool</span> String(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span>) { </div><div class="line"> buffer_.clear();</div><div class="line"> <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; length; i++)</div><div class="line"> buffer_.push_back(std::toupper(str[i]));</div><div class="line"> <span class="keywordflow">return</span> out_.String(&amp;buffer_.front(), length, <span class="keyword">true</span>); <span class="comment">// true = output handler need to copy the string</span></div><div class="line"> }</div><div class="line"> <span class="keywordtype">bool</span> StartObject() { <span class="keywordflow">return</span> out_.StartObject(); }</div><div class="line"> <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> <span class="keywordtype">char</span>* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy) { <span class="keywordflow">return</span> String(str, length, copy); }</div><div class="line"> <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount) { <span class="keywordflow">return</span> out_.EndObject(memberCount); }</div><div class="line"> <span class="keywordtype">bool</span> StartArray() { <span class="keywordflow">return</span> out_.StartArray(); }</div><div class="line"> <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount) { <span class="keywordflow">return</span> out_.EndArray(elementCount); }</div><div class="line"></div><div class="line"> OutputHandler&amp; out_;</div><div class="line"> std::vector&lt;char&gt; buffer_;</div><div class="line">};</div><div class="line"></div><div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span>, <span class="keywordtype">char</span>*[]) {</div><div class="line"> <span class="comment">// Prepare JSON reader and input stream.</span></div><div class="line"> <a class="code" href="classrapidjson_1_1_generic_reader.html">Reader</a> reader;</div><div class="line"> <span class="keywordtype">char</span> readBuffer[65536];</div><div class="line"> <a class="code" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a> is(stdin, readBuffer, <span class="keyword">sizeof</span>(readBuffer));</div><div class="line"></div><div class="line"> <span class="comment">// Prepare JSON writer and output stream.</span></div><div class="line"> <span class="keywordtype">char</span> writeBuffer[65536];</div><div class="line"> <a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a> os(stdout, writeBuffer, <span class="keyword">sizeof</span>(writeBuffer));</div><div class="line"> <a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;FileWriteStream&gt;</a> writer(os);</div><div class="line"></div><div class="line"> <span class="comment">// JSON reader parse from the input stream and let writer generate the output.</span></div><div class="line"> CapitalizeFilter&lt;Writer&lt;FileWriteStream&gt; &gt; filter(writer);</div><div class="line"> <span class="keywordflow">if</span> (!reader.<a class="code" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b">Parse</a>(is, filter)) {</div><div class="line"> fprintf(stderr, <span class="stringliteral">&quot;\nError(%u): %s\n&quot;</span>, (<span class="keywordtype">unsigned</span>)reader.<a class="code" href="classrapidjson_1_1_generic_reader.html#ab50019e0a715320f83b7610b83dcef8f">GetErrorOffset</a>(), <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">GetParseError_En</a>(reader.<a class="code" href="classrapidjson_1_1_generic_reader.html#a042c621cf745c5ed3a6f5ff9418dd05e">GetParseErrorCode</a>()));</div><div class="line"> <span class="keywordflow">return</span> 1;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordflow">return</span> 0;</div><div class="line">}</div></div><!-- fragment --><p>注意到,不可简单地把 JSON 当作字符串去改为大写。例如: </p><div class="fragment"><div class="line">[&quot;Hello\nWorld&quot;]</div></div><!-- fragment --><p>简单地把整个 JSON 转为大写的话会产生错误的转义符: </p><div class="fragment"><div class="line">[&quot;HELLO\NWORLD&quot;]</div></div><!-- fragment --><p>而 <code>capitalize</code> 就会产生正确的结果: </p><div class="fragment"><div class="line">[&quot;HELLO\nWORLD&quot;]</div></div><!-- fragment --><p>我们还可以开发更复杂的过滤器。然而,由于 SAX 风格 API 在某一时间点只能提供单一事件的信息,使用者需要自行记录一些上下文信息(例如从根节点起的路径、储存其他相关值)。对于处理某些情况,用 DOM 会比 SAX 更容易实现。 </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/md_doc_schema_8zh-cn.html b/zh-cn/md_doc_schema_8zh-cn.html
index 744776bc..32a99751 100644
--- a/zh-cn/md_doc_schema_8zh-cn.html
+++ b/zh-cn/md_doc_schema_8zh-cn.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: Schema</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('md_doc_schema_8zh-cn.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -86,37 +87,7 @@ $(document).ready(function(){initNavTree('md_doc_schema_8zh-cn.html','');});
<h2>基本用法</h2>
<p>首先,你要把 JSON Schema 解析成 <code>Document</code>,再把它编译成一个 <code>SchemaDocument</code>。</p>
<p>然后,利用该 <code>SchemaDocument</code> 创建一个 <code>SchemaValidator</code>。它与 <code>Writer</code> 相似,都是能够处理 SAX 事件的。因此,你可以用 <code>document.Accept(validator)</code> 去校验一个 JSON,然后再获取校验结果。</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/schema.h&quot;</span></div>
-<div class="line"></div>
-<div class="line"><span class="comment">// ...</span></div>
-<div class="line"></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> sd;</div>
-<div class="line"><span class="keywordflow">if</span> (sd.Parse(schemaJson).HasParseError()) {</div>
-<div class="line"> <span class="comment">// 此 schema 不是合法的 JSON</span></div>
-<div class="line"> <span class="comment">// ... </span></div>
-<div class="line">}</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf">SchemaDocument</a> schema(sd); <span class="comment">// 把一个 Document 编译至 SchemaDocument</span></div>
-<div class="line"><span class="comment">// 之后不再需要 sd</span></div>
-<div class="line"></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div>
-<div class="line"><span class="keywordflow">if</span> (d.Parse(inputJson).HasParseError()) {</div>
-<div class="line"> <span class="comment">// 输入不是一个合法的 JSON</span></div>
-<div class="line"> <span class="comment">// ... </span></div>
-<div class="line">}</div>
-<div class="line"></div>
-<div class="line">SchemaValidator validator(schema);</div>
-<div class="line"><span class="keywordflow">if</span> (!d.Accept(validator)) {</div>
-<div class="line"> <span class="comment">// 输入的 JSON 不合乎 schema</span></div>
-<div class="line"> <span class="comment">// 打印诊断信息</span></div>
-<div class="line"> <a class="code" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21">StringBuffer</a> sb;</div>
-<div class="line"> validator.GetInvalidSchemaPointer().StringifyUriFragment(sb);</div>
-<div class="line"> printf(<span class="stringliteral">&quot;Invalid schema: %s\n&quot;</span>, sb.GetString());</div>
-<div class="line"> printf(<span class="stringliteral">&quot;Invalid keyword: %s\n&quot;</span>, validator.GetInvalidSchemaKeyword());</div>
-<div class="line"> sb.Clear();</div>
-<div class="line"> validator.GetInvalidDocumentPointer().StringifyUriFragment(sb);</div>
-<div class="line"> printf(<span class="stringliteral">&quot;Invalid document: %s\n&quot;</span>, sb.GetString());</div>
-<div class="line">}</div>
-</div><!-- fragment --><p>一些注意点:</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/schema.h&quot;</span></div><div class="line"></div><div class="line"><span class="comment">// ...</span></div><div class="line"></div><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> sd;</div><div class="line"><span class="keywordflow">if</span> (sd.Parse(schemaJson).HasParseError()) {</div><div class="line"> <span class="comment">// 此 schema 不是合法的 JSON</span></div><div class="line"> <span class="comment">// ... </span></div><div class="line">}</div><div class="line"><a class="code" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf">SchemaDocument</a> schema(sd); <span class="comment">// 把一个 Document 编译至 SchemaDocument</span></div><div class="line"><span class="comment">// 之后不再需要 sd</span></div><div class="line"></div><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div><div class="line"><span class="keywordflow">if</span> (d.Parse(inputJson).HasParseError()) {</div><div class="line"> <span class="comment">// 输入不是一个合法的 JSON</span></div><div class="line"> <span class="comment">// ... </span></div><div class="line">}</div><div class="line"></div><div class="line">SchemaValidator validator(schema);</div><div class="line"><span class="keywordflow">if</span> (!d.Accept(validator)) {</div><div class="line"> <span class="comment">// 输入的 JSON 不合乎 schema</span></div><div class="line"> <span class="comment">// 打印诊断信息</span></div><div class="line"> <a class="code" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21">StringBuffer</a> sb;</div><div class="line"> validator.GetInvalidSchemaPointer().StringifyUriFragment(sb);</div><div class="line"> printf(<span class="stringliteral">&quot;Invalid schema: %s\n&quot;</span>, sb.GetString());</div><div class="line"> printf(<span class="stringliteral">&quot;Invalid keyword: %s\n&quot;</span>, validator.GetInvalidSchemaKeyword());</div><div class="line"> sb.Clear();</div><div class="line"> validator.GetInvalidDocumentPointer().StringifyUriFragment(sb);</div><div class="line"> printf(<span class="stringliteral">&quot;Invalid document: %s\n&quot;</span>, sb.GetString());</div><div class="line">}</div></div><!-- fragment --><p>一些注意点:</p>
<ul>
<li>一个 <code>SchemaDocment</code> 能被多个 <code>SchemaValidator</code> 引用。它不会被 <code>SchemaValidator</code> 修改。</li>
<li>可以重复使用一个 <code>SchemaValidator</code> 来校验多个文件。在校验其他文件前,须先调用 <code>validator.Reset()</code>。</li>
@@ -125,87 +96,17 @@ $(document).ready(function(){initNavTree('md_doc_schema_8zh-cn.html','');});
<p>与大部分 JSON Schema 校验器有所不同,RapidJSON 提供了一个基于 SAX 的 schema 校验器实现。因此,你可以在输入流解析 JSON 的同时进行校验。若校验器遇到一个与 schema 不符的值,就会立即终止解析。这设计对于解析大型 JSON 文件时特别有用。</p>
<h3>DOM 解析</h3>
<p>在使用 DOM 进行解析时,<code>Document</code> 除了接收 SAX 事件外,还需做一些准备及结束工作,因此,为了连接 <code>Reader</code>、<code>SchemaValidator</code> 和 <code>Document</code> 要做多一点事情。<code>SchemaValidatingReader</code> 是一个辅助类去做那些工作。</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/filereadstream.h&quot;</span></div>
-<div class="line"></div>
-<div class="line"><span class="comment">// ...</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf">SchemaDocument</a> schema(sd); <span class="comment">// 把一个 Document 编译至 SchemaDocument</span></div>
-<div class="line"></div>
-<div class="line"><span class="comment">// 使用 reader 解析 JSON</span></div>
-<div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;big.json&quot;</span>, <span class="stringliteral">&quot;r&quot;</span>);</div>
-<div class="line">FileReadStream is(fp, buffer, <span class="keyword">sizeof</span>(buffer));</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// 用 reader 解析 JSON,校验它的 SAX 事件,并存储至 d</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div>
-<div class="line">SchemaValidatingReader&lt;kParseDefaultFlags, FileReadStream, UTF8&lt;&gt; &gt; reader(is, schema);</div>
-<div class="line">d.Populate(reader);</div>
-<div class="line"></div>
-<div class="line"><span class="keywordflow">if</span> (!reader.GetParseResult()) {</div>
-<div class="line"> <span class="comment">// 不是一个合法的 JSON</span></div>
-<div class="line"> <span class="comment">// 当 reader.GetParseResult().Code() == kParseErrorTermination,</span></div>
-<div class="line"> <span class="comment">// 它可能是被以下原因中止:</span></div>
-<div class="line"> <span class="comment">// (1) 校验器发现 JSON 不合乎 schema;或</span></div>
-<div class="line"> <span class="comment">// (2) 输入流有 I/O 错误。</span></div>
-<div class="line"></div>
-<div class="line"> <span class="comment">// 检查校验结果</span></div>
-<div class="line"> <span class="keywordflow">if</span> (!reader.IsValid()) {</div>
-<div class="line"> <span class="comment">// 输入的 JSON 不合乎 schema</span></div>
-<div class="line"> <span class="comment">// 打印诊断信息</span></div>
-<div class="line"> <a class="code" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21">StringBuffer</a> sb;</div>
-<div class="line"> reader.GetInvalidSchemaPointer().StringifyUriFragment(sb);</div>
-<div class="line"> printf(<span class="stringliteral">&quot;Invalid schema: %s\n&quot;</span>, sb.GetString());</div>
-<div class="line"> printf(<span class="stringliteral">&quot;Invalid keyword: %s\n&quot;</span>, reader.GetInvalidSchemaKeyword());</div>
-<div class="line"> sb.Clear();</div>
-<div class="line"> reader.GetInvalidDocumentPointer().StringifyUriFragment(sb);</div>
-<div class="line"> printf(<span class="stringliteral">&quot;Invalid document: %s\n&quot;</span>, sb.GetString());</div>
-<div class="line"> }</div>
-<div class="line">}</div>
-</div><!-- fragment --><h3>SAX 解析</h3>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/filereadstream.h&quot;</span></div><div class="line"></div><div class="line"><span class="comment">// ...</span></div><div class="line"><a class="code" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf">SchemaDocument</a> schema(sd); <span class="comment">// 把一个 Document 编译至 SchemaDocument</span></div><div class="line"></div><div class="line"><span class="comment">// 使用 reader 解析 JSON</span></div><div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;big.json&quot;</span>, <span class="stringliteral">&quot;r&quot;</span>);</div><div class="line">FileReadStream is(fp, buffer, <span class="keyword">sizeof</span>(buffer));</div><div class="line"></div><div class="line"><span class="comment">// 用 reader 解析 JSON,校验它的 SAX 事件,并存储至 d</span></div><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div><div class="line">SchemaValidatingReader&lt;kParseDefaultFlags, FileReadStream, UTF8&lt;&gt; &gt; reader(is, schema);</div><div class="line">d.Populate(reader);</div><div class="line"></div><div class="line"><span class="keywordflow">if</span> (!reader.GetParseResult()) {</div><div class="line"> <span class="comment">// 不是一个合法的 JSON</span></div><div class="line"> <span class="comment">// 当 reader.GetParseResult().Code() == kParseErrorTermination,</span></div><div class="line"> <span class="comment">// 它可能是被以下原因中止:</span></div><div class="line"> <span class="comment">// (1) 校验器发现 JSON 不合乎 schema;或</span></div><div class="line"> <span class="comment">// (2) 输入流有 I/O 错误。</span></div><div class="line"></div><div class="line"> <span class="comment">// 检查校验结果</span></div><div class="line"> <span class="keywordflow">if</span> (!reader.IsValid()) {</div><div class="line"> <span class="comment">// 输入的 JSON 不合乎 schema</span></div><div class="line"> <span class="comment">// 打印诊断信息</span></div><div class="line"> <a class="code" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21">StringBuffer</a> sb;</div><div class="line"> reader.GetInvalidSchemaPointer().StringifyUriFragment(sb);</div><div class="line"> printf(<span class="stringliteral">&quot;Invalid schema: %s\n&quot;</span>, sb.GetString());</div><div class="line"> printf(<span class="stringliteral">&quot;Invalid keyword: %s\n&quot;</span>, reader.GetInvalidSchemaKeyword());</div><div class="line"> sb.Clear();</div><div class="line"> reader.GetInvalidDocumentPointer().StringifyUriFragment(sb);</div><div class="line"> printf(<span class="stringliteral">&quot;Invalid document: %s\n&quot;</span>, sb.GetString());</div><div class="line"> }</div><div class="line">}</div></div><!-- fragment --><h3>SAX 解析</h3>
<p>使用 SAX 解析时,情况就简单得多。若只需要校验 JSON 而无需进一步处理,那么仅需要:</p>
-<div class="fragment"><div class="line">SchemaValidator validator(schema);</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ad5310edd1226f5b3ea82dc0d4d3740c6">Reader</a> reader;</div>
-<div class="line"><span class="keywordflow">if</span> (!reader.Parse(stream, validator)) {</div>
-<div class="line"> <span class="keywordflow">if</span> (!validator.IsValid()) {</div>
-<div class="line"> <span class="comment">// ... </span></div>
-<div class="line"> }</div>
-<div class="line">}</div>
-</div><!-- fragment --><p>这种方式和 <a href="example/schemavalidator/schemavalidator.cpp">schemavalidator</a> 例子完全相同。这带来的独特优势是,无论 JSON 多巨大,永远维持低内存用量(内存用量只与 Schema 的复杂度相关)。</p>
+<div class="fragment"><div class="line">SchemaValidator validator(schema);</div><div class="line">Reader reader;</div><div class="line">if (!reader.Parse(stream, validator)) {</div><div class="line"> if (!validator.IsValid()) {</div><div class="line"> // ... </div><div class="line"> }</div><div class="line">}</div></div><!-- fragment --><p>这种方式和 <a href="example/schemavalidator/schemavalidator.cpp">schemavalidator</a> 例子完全相同。这带来的独特优势是,无论 JSON 多巨大,永远维持低内存用量(内存用量只与 Schema 的复杂度相关)。</p>
<p>若你需要进一步处理 SAX 事件,便可使用模板类 <code>GenericSchemaValidator</code> 去设置校验器的输出 <code>Handler</code>:</p>
-<div class="fragment"><div class="line">MyHandler handler;</div>
-<div class="line">GenericSchemaValidator&lt;SchemaDocument, MyHandler&gt; validator(schema, handler);</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ad5310edd1226f5b3ea82dc0d4d3740c6">Reader</a> reader;</div>
-<div class="line"><span class="keywordflow">if</span> (!reader.Parse(ss, validator)) {</div>
-<div class="line"> <span class="keywordflow">if</span> (!validator.IsValid()) {</div>
-<div class="line"> <span class="comment">// ... </span></div>
-<div class="line"> }</div>
-<div class="line">}</div>
-</div><!-- fragment --><h3>生成</h3>
+<div class="fragment"><div class="line">MyHandler handler;</div><div class="line">GenericSchemaValidator&lt;SchemaDocument, MyHandler&gt; validator(schema, handler);</div><div class="line">Reader reader;</div><div class="line">if (!reader.Parse(ss, validator)) {</div><div class="line"> if (!validator.IsValid()) {</div><div class="line"> // ... </div><div class="line"> }</div><div class="line">}</div></div><!-- fragment --><h3>生成</h3>
<p>我们也可以在生成(serialization)的时候进行校验。这能确保输出的 JSON 符合一个 JSON Schema。</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21">StringBuffer</a> sb;</div>
-<div class="line">Writer&lt;StringBuffer&gt; writer(sb);</div>
-<div class="line">GenericSchemaValidator&lt;SchemaDocument, Writer&lt;StringBuffer&gt; &gt; validator(s, writer);</div>
-<div class="line"><span class="keywordflow">if</span> (!d.Accept(validator)) {</div>
-<div class="line"> <span class="comment">// Some problem during Accept(), it may be validation or encoding issues.</span></div>
-<div class="line"> <span class="keywordflow">if</span> (!validator.IsValid()) {</div>
-<div class="line"> <span class="comment">// ...</span></div>
-<div class="line"> }</div>
-<div class="line">}</div>
-</div><!-- fragment --><p>当然,如果你的应用仅需要 SAX 风格的生成,那么只需要把 SAX 事件由原来发送到 <code>Writer</code>,改为发送到 <code>SchemaValidator</code>。</p>
+<div class="fragment"><div class="line">StringBuffer sb;</div><div class="line">Writer&lt;StringBuffer&gt; writer(sb);</div><div class="line">GenericSchemaValidator&lt;SchemaDocument, Writer&lt;StringBuffer&gt; &gt; validator(s, writer);</div><div class="line">if (!d.Accept(validator)) {</div><div class="line"> // Some problem during Accept(), it may be validation or encoding issues.</div><div class="line"> if (!validator.IsValid()) {</div><div class="line"> // ...</div><div class="line"> }</div><div class="line">}</div></div><!-- fragment --><p>当然,如果你的应用仅需要 SAX 风格的生成,那么只需要把 SAX 事件由原来发送到 <code>Writer</code>,改为发送到 <code>SchemaValidator</code>。</p>
<h2>远程 Schema</h2>
-<p>JSON Schema 支持 <a href="http://spacetelescope.github.io/understanding-json-schema/structuring.html">`$ref` 关键字</a>,它是一个 <a class="el" href="md_doc_pointer_8zh-cn.html">JSON pointer</a> 引用至一个本地(local)或远程(remote) schema。本地指针的首字符是 <code>#</code>,而远程指针是一个相对或绝对 URI。例如:</p>
-<div class="fragment"><div class="line">{ <span class="stringliteral">&quot;$ref&quot;</span>: <span class="stringliteral">&quot;definitions.json#/address&quot;</span> }</div>
-</div><!-- fragment --><p>由于 <code>SchemaDocument</code> 并不知道如何处理那些 URI,它需要使用者提供一个 <code>IRemoteSchemaDocumentProvider</code> 的实例去处理。</p>
-<div class="fragment"><div class="line"><span class="keyword">class </span>MyRemoteSchemaDocumentProvider : <span class="keyword">public</span> <a class="code" href="namespacerapidjson.html#af91eb8eea47b79d75b23e29fa9c0abb5">IRemoteSchemaDocumentProvider</a> {</div>
-<div class="line"><span class="keyword">public</span>:</div>
-<div class="line"> <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf">SchemaDocument</a>* GetRemoteDocument(<span class="keyword">const</span> <span class="keywordtype">char</span>* uri, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length) {</div>
-<div class="line"> <span class="comment">// Resolve the uri and returns a pointer to that schema.</span></div>
-<div class="line"> }</div>
-<div class="line">};</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// ...</span></div>
-<div class="line"></div>
-<div class="line">MyRemoteSchemaDocumentProvider provider;</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf">SchemaDocument</a> schema(sd, &amp;provider);</div>
-</div><!-- fragment --><h2>标准的符合程度</h2>
+<p>JSON Schema 支持 <a href="http://spacetelescope.github.io/understanding-json-schema/structuring.html"><code>$ref</code> 关键字</a>,它是一个 <a class="el" href="md_doc_pointer_8zh-cn.html">JSON pointer</a> 引用至一个本地(local)或远程(remote) schema。本地指针的首字符是 <code>#</code>,而远程指针是一个相对或绝对 URI。例如:</p>
+<div class="fragment"><div class="line">{ &quot;$ref&quot;: &quot;definitions.json#/address&quot; }</div></div><!-- fragment --><p>由于 <code>SchemaDocument</code> 并不知道如何处理那些 URI,它需要使用者提供一个 <code>IRemoteSchemaDocumentProvider</code> 的实例去处理。</p>
+<div class="fragment"><div class="line">class MyRemoteSchemaDocumentProvider : public IRemoteSchemaDocumentProvider {</div><div class="line">public:</div><div class="line"> virtual const SchemaDocument* GetRemoteDocument(const char* uri, SizeType length) {</div><div class="line"> // Resolve the uri and returns a pointer to that schema.</div><div class="line"> }</div><div class="line">};</div><div class="line"></div><div class="line">// ...</div><div class="line"></div><div class="line">MyRemoteSchemaDocumentProvider provider;</div><div class="line">SchemaDocument schema(sd, &amp;provider);</div></div><!-- fragment --><h2>标准的符合程度</h2>
<p>RapidJSON 通过了 <a href="https://github.com/json-schema/JSON-Schema-Test-Suite">JSON Schema Test Suite</a> (Json Schema draft 4) 中 263 个测试的 262 个。</p>
<p>没通过的测试是 <code>refRemote.json</code> 中的 "change resolution scope" - "changed scope ref invalid"。这是由于未实现 <code>id</code> schema 关键字及 URI 合并功能。</p>
<p>除此以外,关于字符串类型的 <code>format</code> schema 关键字也会被忽略,因为标准中并没需求必须实现。</p>
@@ -267,7 +168,7 @@ $(document).ready(function(){initNavTree('md_doc_schema_8zh-cn.html','');});
<p>对于使用 C++11 编译器的使用者,也可使用 <code>std::regex</code>,只需定义 <code>RAPIDJSON_SCHEMA_USE_INTERNALREGEX=0</code> 及 <code>RAPIDJSON_SCHEMA_USE_STDREGEX=1</code>。若你的 schema 无需使用 <code>pattern</code> 或 <code>patternProperties</code>,可以把两个宏都设为零,以禁用此功能,这样做可节省一些代码体积。</p>
<h2>性能</h2>
<p>大部分 C++ JSON 库都未支持 JSON Schema。因此我们尝试按照 <a href="https://github.com/ebdrup/json-schema-benchmark">json-schema-benchmark</a> 去评估 RapidJSON 的 JSON Schema 校验器。该评测测试了 11 个运行在 node.js 上的 JavaScript 库。</p>
-<p>该评测校验 <a href="https://github.com/json-schema/JSON-Schema-Test-Suite">JSON Schema Test Suite</a> 中的测试,当中排除了一些测试套件及个别测试。我们在 <a href="test/perftest/schematest.cpp">`schematest.cpp`</a> 实现了相同的评测。</p>
+<p>该评测校验 <a href="https://github.com/json-schema/JSON-Schema-Test-Suite">JSON Schema Test Suite</a> 中的测试,当中排除了一些测试套件及个别测试。我们在 <a href="test/perftest/schematest.cpp"><code>schematest.cpp</code></a> 实现了相同的评测。</p>
<p>在 MacBook Pro (2.8 GHz Intel Core i7) 上收集到以下结果。</p>
<table class="doxtable">
<tr>
@@ -275,27 +176,27 @@ $(document).ready(function(){initNavTree('md_doc_schema_8zh-cn.html','');});
<tr>
<td>RapidJSON</td><td align="center">155%</td><td align="center">30682 </td></tr>
<tr>
-<td><a href="https://github.com/epoberezkin/ajv">`ajv`</a></td><td align="center">100%</td><td align="center">19770 (± 1.31%) </td></tr>
+<td><a href="https://github.com/epoberezkin/ajv"><code>ajv</code></a></td><td align="center">100%</td><td align="center">19770 (± 1.31%) </td></tr>
<tr>
-<td><a href="https://github.com/mafintosh/is-my-json-valid">`is-my-json-valid`</a></td><td align="center">70%</td><td align="center">13835 (± 2.84%) </td></tr>
+<td><a href="https://github.com/mafintosh/is-my-json-valid"><code>is-my-json-valid</code></a></td><td align="center">70%</td><td align="center">13835 (± 2.84%) </td></tr>
<tr>
-<td><a href="https://github.com/bugventure/jsen">`jsen`</a></td><td align="center">57.7%</td><td align="center">11411 (± 1.27%) </td></tr>
+<td><a href="https://github.com/bugventure/jsen"><code>jsen</code></a></td><td align="center">57.7%</td><td align="center">11411 (± 1.27%) </td></tr>
<tr>
-<td><a href="https://github.com/AlexeyGrishin/schemasaurus">`schemasaurus`</a></td><td align="center">26%</td><td align="center">5145 (± 1.62%) </td></tr>
+<td><a href="https://github.com/AlexeyGrishin/schemasaurus"><code>schemasaurus</code></a></td><td align="center">26%</td><td align="center">5145 (± 1.62%) </td></tr>
<tr>
-<td><a href="https://github.com/playlyfe/themis">`themis`</a></td><td align="center">19.9%</td><td align="center">3935 (± 2.69%) </td></tr>
+<td><a href="https://github.com/playlyfe/themis"><code>themis</code></a></td><td align="center">19.9%</td><td align="center">3935 (± 2.69%) </td></tr>
<tr>
-<td><a href="https://github.com/zaggino/z-schema">`z-schema`</a></td><td align="center">7%</td><td align="center">1388 (± 0.84%) </td></tr>
+<td><a href="https://github.com/zaggino/z-schema"><code>z-schema</code></a></td><td align="center">7%</td><td align="center">1388 (± 0.84%) </td></tr>
<tr>
-<td><a href="https://github.com/pandastrike/jsck#readme">`jsck`</a></td><td align="center">3.1%</td><td align="center">606 (± 2.84%) </td></tr>
+<td><a href="https://github.com/pandastrike/jsck#readme"><code>jsck</code></a></td><td align="center">3.1%</td><td align="center">606 (± 2.84%) </td></tr>
<tr>
-<td><a href="https://github.com/tdegrunt/jsonschema#readme">`jsonschema`</a></td><td align="center">0.9%</td><td align="center">185 (± 1.01%) </td></tr>
+<td><a href="https://github.com/tdegrunt/jsonschema#readme"><code>jsonschema</code></a></td><td align="center">0.9%</td><td align="center">185 (± 1.01%) </td></tr>
<tr>
-<td><a href="https://github.com/Prestaul/skeemas#readme">`skeemas`</a></td><td align="center">0.8%</td><td align="center">154 (± 0.79%) </td></tr>
+<td><a href="https://github.com/Prestaul/skeemas#readme"><code>skeemas</code></a></td><td align="center">0.8%</td><td align="center">154 (± 0.79%) </td></tr>
<tr>
<td>tv4</td><td align="center">0.5%</td><td align="center">93 (± 0.94%) </td></tr>
<tr>
-<td><a href="https://github.com/natesilva/jayschema">`jayschema`</a></td><td align="center">0.1%</td><td align="center">21 (± 1.14%) </td></tr>
+<td><a href="https://github.com/natesilva/jayschema"><code>jayschema</code></a></td><td align="center">0.1%</td><td align="center">21 (± 1.14%) </td></tr>
</table>
<p>换言之,RapidJSON 比最快的 JavaScript 库(ajv)快约 1.5x。比最慢的快 1400x。 </p>
</div></div><!-- contents -->
diff --git a/zh-cn/md_doc_stream_8zh-cn.html b/zh-cn/md_doc_stream_8zh-cn.html
index e9de630f..7de4e5d4 100644
--- a/zh-cn/md_doc_stream_8zh-cn.html
+++ b/zh-cn/md_doc_stream_8zh-cn.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 流</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('md_doc_stream_8zh-cn.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -113,36 +114,13 @@ $(document).ready(function(){initNavTree('md_doc_stream_8zh-cn.html','');});
<h2><a class="anchor" id="StringStream"></a>
StringStream(输入)</h2>
<p><code>StringStream</code> 是最基本的输入流,它表示一个完整的、只读的、存储于内存的 JSON。它在 <code><a class="el" href="rapidjson_8h.html" title="common definitions and configuration ">rapidjson/rapidjson.h</a></code> 中定义。</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">rapidjson/document.h</a>&quot;</span> <span class="comment">// 会包含 &quot;rapidjson/rapidjson.h&quot;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// ...</span></div>
-<div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span> json[] = <span class="stringliteral">&quot;[1, 2, 3, 4]&quot;</span>;</div>
-<div class="line"><a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a> s(json);</div>
-<div class="line"></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d;</div>
-<div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">ParseStream</a>(s);</div>
-</div><!-- fragment --><p>由于这是非常常用的用法,RapidJSON 提供 <code>Document::Parse(const char*)</code> 去做完全相同的事情:</p>
-<div class="fragment"><div class="line"><span class="comment">// ...</span></div>
-<div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span> json[] = <span class="stringliteral">&quot;[1, 2, 3, 4]&quot;</span>;</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div>
-<div class="line">d.Parse(json);</div>
-</div><!-- fragment --><p>需要注意,<code>StringStream</code> 是 <code>GenericStringStream&lt;UTF8&lt;&gt; &gt;</code> 的 typedef,使用者可用其他编码类去代表流所使用的字符集。</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">rapidjson/document.h</a>&quot;</span> <span class="comment">// 会包含 &quot;rapidjson/rapidjson.h&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"></div><div class="line"><span class="comment">// ...</span></div><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span> json[] = <span class="stringliteral">&quot;[1, 2, 3, 4]&quot;</span>;</div><div class="line"><a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a> s(json);</div><div class="line"></div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d;</div><div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">ParseStream</a>(s);</div></div><!-- fragment --><p>由于这是非常常用的用法,RapidJSON 提供 <code>Document::Parse(const char*)</code> 去做完全相同的事情:</p>
+<div class="fragment"><div class="line"><span class="comment">// ...</span></div><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span> json[] = <span class="stringliteral">&quot;[1, 2, 3, 4]&quot;</span>;</div><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div><div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">Parse</a>(json);</div></div><!-- fragment --><p>需要注意,<code>StringStream</code> 是 <code>GenericStringStream&lt;UTF8&lt;&gt; &gt;</code> 的 typedef,使用者可用其他编码类去代表流所使用的字符集。</p>
<h2><a class="anchor" id="StringBuffer"></a>
StringBuffer(输出)</h2>
<p><code>StringBuffer</code> 是一个简单的输出流。它分配一个内存缓冲区,供写入整个 JSON。可使用 <code>GetString()</code> 来获取该缓冲区。</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/stringbuffer.h&quot;</span></div>
-<div class="line"></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21">StringBuffer</a> buffer;</div>
-<div class="line">Writer&lt;StringBuffer&gt; writer(buffer);</div>
-<div class="line">d.Accept(writer);</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* output = buffer.GetString();</div>
-</div><!-- fragment --><p>当缓冲区满溢,它将自动增加容量。缺省容量是 256 个字符(UTF8 是 256 字节,UTF16 是 512 字节等)。使用者能自行提供分配器及初始容量。</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21">StringBuffer</a> buffer1(0, 1024); <span class="comment">// 使用它的分配器,初始大小 = 1024</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21">StringBuffer</a> buffer2(allocator, 1024);</div>
-</div><!-- fragment --><p>如无设置分配器,<code>StringBuffer</code> 会自行实例化一个内部分配器。</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/stringbuffer.h&quot;</span></div><div class="line"></div><div class="line"><a class="code" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21">StringBuffer</a> buffer;</div><div class="line">Writer&lt;StringBuffer&gt; writer(buffer);</div><div class="line">d.Accept(writer);</div><div class="line"></div><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* output = buffer.GetString();</div></div><!-- fragment --><p>当缓冲区满溢,它将自动增加容量。缺省容量是 256 个字符(UTF8 是 256 字节,UTF16 是 512 字节等)。使用者能自行提供分配器及初始容量。</p>
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21">StringBuffer</a> buffer1(0, 1024); <span class="comment">// 使用它的分配器,初始大小 = 1024</span></div><div class="line"><a class="code" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21">StringBuffer</a> buffer2(allocator, 1024);</div></div><!-- fragment --><p>如无设置分配器,<code>StringBuffer</code> 会自行实例化一个内部分配器。</p>
<p>相似地,<code>StringBuffer</code> 是 <code>GenericStringBuffer&lt;UTF8&lt;&gt; &gt;</code> 的 typedef。</p>
<h1><a class="anchor" id="FileStreams"></a>
文件流</h1>
@@ -151,85 +129,23 @@ StringBuffer(输出)</h2>
<h2><a class="anchor" id="FileReadStream"></a>
FileReadStream(输入)</h2>
<p><code>FileReadStream</code> 通过 <code>FILE</code> 指针读取文件。使用者需要提供一个缓冲区。</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/filereadstream.h&quot;</span></div>
-<div class="line"><span class="preprocessor">#include &lt;cstdio&gt;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"></div>
-<div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;big.json&quot;</span>, <span class="stringliteral">&quot;rb&quot;</span>); <span class="comment">// 非 Windows 平台使用 &quot;r&quot;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keywordtype">char</span> readBuffer[65536];</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a> is(fp, readBuffer, <span class="keyword">sizeof</span>(readBuffer));</div>
-<div class="line"></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d;</div>
-<div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">ParseStream</a>(is);</div>
-<div class="line"></div>
-<div class="line">fclose(fp);</div>
-</div><!-- fragment --><p>与 <code>StringStreams</code> 不一样,<code>FileReadStream</code> 是一个字节流。它不处理编码。若文件并非 UTF-8 编码,可以把字节流用 <code>EncodedInputStream</code> 包装。我们很快会讨论这个问题。</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/filereadstream.h&quot;</span></div><div class="line"><span class="preprocessor">#include &lt;cstdio&gt;</span></div><div class="line"></div><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"></div><div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;big.json&quot;</span>, <span class="stringliteral">&quot;rb&quot;</span>); <span class="comment">// 非 Windows 平台使用 &quot;r&quot;</span></div><div class="line"></div><div class="line"><span class="keywordtype">char</span> readBuffer[65536];</div><div class="line"><a class="code" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a> is(fp, readBuffer, <span class="keyword">sizeof</span>(readBuffer));</div><div class="line"></div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d;</div><div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">ParseStream</a>(is);</div><div class="line"></div><div class="line">fclose(fp);</div></div><!-- fragment --><p>与 <code>StringStreams</code> 不一样,<code>FileReadStream</code> 是一个字节流。它不处理编码。若文件并非 UTF-8 编码,可以把字节流用 <code>EncodedInputStream</code> 包装。我们很快会讨论这个问题。</p>
<p>除了读取文件,使用者也可以使用 <code>FileReadStream</code> 来读取 <code>stdin</code>。</p>
<h2><a class="anchor" id="FileWriteStream"></a>
FileWriteStream(输出)</h2>
<p><code>FileWriteStream</code> 是一个含缓冲功能的输出流。它的用法与 <code>FileReadStream</code> 非常相似。</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/filewritestream.h&quot;</span></div>
-<div class="line"><span class="preprocessor">#include &lt;cstdio&gt;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d;</div>
-<div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">Parse</a>(json);</div>
-<div class="line"><span class="comment">// ...</span></div>
-<div class="line"></div>
-<div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;output.json&quot;</span>, <span class="stringliteral">&quot;wb&quot;</span>); <span class="comment">// 非 Windows 平台使用 &quot;w&quot;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keywordtype">char</span> writeBuffer[65536];</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a> os(fp, writeBuffer, <span class="keyword">sizeof</span>(writeBuffer));</div>
-<div class="line"></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;FileWriteStream&gt;</a> writer(os);</div>
-<div class="line">d.Accept(writer);</div>
-<div class="line"></div>
-<div class="line">fclose(fp);</div>
-</div><!-- fragment --><p>它也可以把输出导向 <code>stdout</code>。</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/filewritestream.h&quot;</span></div><div class="line"><span class="preprocessor">#include &lt;cstdio&gt;</span></div><div class="line"></div><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"></div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d;</div><div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">Parse</a>(json);</div><div class="line"><span class="comment">// ...</span></div><div class="line"></div><div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;output.json&quot;</span>, <span class="stringliteral">&quot;wb&quot;</span>); <span class="comment">// 非 Windows 平台使用 &quot;w&quot;</span></div><div class="line"></div><div class="line"><span class="keywordtype">char</span> writeBuffer[65536];</div><div class="line"><a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a> os(fp, writeBuffer, <span class="keyword">sizeof</span>(writeBuffer));</div><div class="line"></div><div class="line"><a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;FileWriteStream&gt;</a> writer(os);</div><div class="line">d.<a class="code" href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c">Accept</a>(writer);</div><div class="line"></div><div class="line">fclose(fp);</div></div><!-- fragment --><p>它也可以把输出导向 <code>stdout</code>。</p>
<h1><a class="anchor" id="iostreamWrapper"></a>
iostream 包装类</h1>
<p>基于用户的要求,RapidJSON 提供了正式的 <code>std::basic_istream</code> 和 <code>std::basic_ostream</code> 包装类。然而,请注意其性能会大大低于以上的其他流。</p>
<h2><a class="anchor" id="IStreamWrapper"></a>
IStreamWrapper</h2>
<p><code>IStreamWrapper</code> 把任何继承自 <code>std::istream</code> 的类(如 <code>std::istringstream</code>、<code>std::stringstream</code>、<code>std::ifstream</code>、<code>std::fstream</code>)包装成 RapidJSON 的输入流。</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="document_8h.html">rapidjson/document.h</a>&gt;</span></div>
-<div class="line"><span class="preprocessor">#include &lt;rapidjson/istreamwrapper.h&gt;</span></div>
-<div class="line"><span class="preprocessor">#include &lt;fstream&gt;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"><span class="keyword">using namespace </span>std;</div>
-<div class="line"></div>
-<div class="line">ifstream ifs(<span class="stringliteral">&quot;test.json&quot;</span>);</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">IStreamWrapper</a> isw(ifs);</div>
-<div class="line"></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d;</div>
-<div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">ParseStream</a>(isw);</div>
-</div><!-- fragment --><p>对于继承自 <code>std::wistream</code> 的类,则使用 <code>WIStreamWrapper</code>。</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="document_8h.html">rapidjson/document.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;rapidjson/istreamwrapper.h&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;fstream&gt;</span></div><div class="line"></div><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"><span class="keyword">using namespace </span>std;</div><div class="line"></div><div class="line">ifstream ifs(<span class="stringliteral">&quot;test.json&quot;</span>);</div><div class="line"><a class="code" href="classrapidjson_1_1_basic_i_stream_wrapper.html">IStreamWrapper</a> isw(ifs);</div><div class="line"></div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d;</div><div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">ParseStream</a>(isw);</div></div><!-- fragment --><p>对于继承自 <code>std::wistream</code> 的类,则使用 <code>WIStreamWrapper</code>。</p>
<h2><a class="anchor" id="OStreamWrapper"></a>
OStreamWrapper</h2>
<p>相似地,<code>OStreamWrapper</code> 把任何继承自 <code>std::ostream</code> 的类(如 <code>std::ostringstream</code>、<code>std::stringstream</code>、<code>std::ofstream</code>、<code>std::fstream</code>)包装成 RapidJSON 的输出流。</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="document_8h.html">rapidjson/document.h</a>&gt;</span></div>
-<div class="line"><span class="preprocessor">#include &lt;rapidjson/ostreamwrapper.h&gt;</span></div>
-<div class="line"><span class="preprocessor">#include &lt;rapidjson/writer.h&gt;</span></div>
-<div class="line"><span class="preprocessor">#include &lt;fstream&gt;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"><span class="keyword">using namespace </span>std;</div>
-<div class="line"></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d;</div>
-<div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">Parse</a>(json);</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// ...</span></div>
-<div class="line"></div>
-<div class="line">ofstream ofs(<span class="stringliteral">&quot;output.json&quot;</span>);</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">OStreamWrapper</a> osw(ofs);</div>
-<div class="line"></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;OStreamWrapper&gt;</a> writer(osw);</div>
-<div class="line">d.Accept(writer);</div>
-</div><!-- fragment --><p>对于继承自 <code>std::wistream</code> 的类,则使用 <code>WIStreamWrapper</code>。</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="document_8h.html">rapidjson/document.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;rapidjson/ostreamwrapper.h&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;rapidjson/writer.h&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;fstream&gt;</span></div><div class="line"></div><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"><span class="keyword">using namespace </span>std;</div><div class="line"></div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d;</div><div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">Parse</a>(json);</div><div class="line"></div><div class="line"><span class="comment">// ...</span></div><div class="line"></div><div class="line">ofstream ofs(<span class="stringliteral">&quot;output.json&quot;</span>);</div><div class="line"><a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">OStreamWrapper</a> osw(ofs);</div><div class="line"></div><div class="line"><a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;OStreamWrapper&gt;</a> writer(osw);</div><div class="line">d.<a class="code" href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c">Accept</a>(writer);</div></div><!-- fragment --><p>对于继承自 <code>std::wistream</code> 的类,则使用 <code>WIStreamWrapper</code>。</p>
<h1><a class="anchor" id="EncodedStreams"></a>
编码流</h1>
<p>编码流(encoded streams)本身不存储 JSON,它们是通过包装字节流来提供基本的编码/解码功能。</p>
@@ -240,195 +156,34 @@ OStreamWrapper</h2>
<h2><a class="anchor" id="EncodedInputStream"></a>
EncodedInputStream</h2>
<p><code>EncodedInputStream</code> 含两个模板参数。第一个是 <code>Encoding</code> 类型,例如定义于 <code><a class="el" href="encodings_8h_source.html">rapidjson/encodings.h</a></code> 的 <code>UTF8</code>、<code>UTF16LE</code>。第二个参数是被包装的流的类型。</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">rapidjson/document.h</a>&quot;</span></div>
-<div class="line"><span class="preprocessor">#include &quot;rapidjson/filereadstream.h&quot;</span> <span class="comment">// FileReadStream</span></div>
-<div class="line"><span class="preprocessor">#include &quot;rapidjson/encodedstream.h&quot;</span> <span class="comment">// EncodedInputStream</span></div>
-<div class="line"><span class="preprocessor">#include &lt;cstdio&gt;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"></div>
-<div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;utf16le.json&quot;</span>, <span class="stringliteral">&quot;rb&quot;</span>); <span class="comment">// 非 Windows 平台使用 &quot;r&quot;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keywordtype">char</span> readBuffer[256];</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a> bis(fp, readBuffer, <span class="keyword">sizeof</span>(readBuffer));</div>
-<div class="line"></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream&lt;UTF16LE&lt;&gt;</a>, <a class="code" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a>&gt; eis(bis); <span class="comment">// 用 eis 包装 bis</span></div>
-<div class="line"></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d; <span class="comment">// Document 为 GenericDocument&lt;UTF8&lt;&gt; &gt; </span></div>
-<div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">ParseStream</a>&lt;0, <a class="code" href="structrapidjson_1_1_u_t_f16_l_e.html">UTF16LE&lt;&gt;</a> &gt;(eis); <span class="comment">// 把 UTF-16LE 文件解析至内存中的 UTF-8</span></div>
-<div class="line"></div>
-<div class="line">fclose(fp);</div>
-</div><!-- fragment --><h2><a class="anchor" id="EncodedOutputStream"></a>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">rapidjson/document.h</a>&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;rapidjson/filereadstream.h&quot;</span> <span class="comment">// FileReadStream</span></div><div class="line"><span class="preprocessor">#include &quot;rapidjson/encodedstream.h&quot;</span> <span class="comment">// EncodedInputStream</span></div><div class="line"><span class="preprocessor">#include &lt;cstdio&gt;</span></div><div class="line"></div><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"></div><div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;utf16le.json&quot;</span>, <span class="stringliteral">&quot;rb&quot;</span>); <span class="comment">// 非 Windows 平台使用 &quot;r&quot;</span></div><div class="line"></div><div class="line"><span class="keywordtype">char</span> readBuffer[256];</div><div class="line"><a class="code" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a> bis(fp, readBuffer, <span class="keyword">sizeof</span>(readBuffer));</div><div class="line"></div><div class="line"><a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream&lt;UTF16LE&lt;&gt;</a>, <a class="code" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a>&gt; eis(bis); <span class="comment">// 用 eis 包装 bis</span></div><div class="line"></div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d; <span class="comment">// Document 为 GenericDocument&lt;UTF8&lt;&gt; &gt; </span></div><div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">ParseStream</a>&lt;0, <a class="code" href="structrapidjson_1_1_u_t_f16_l_e.html">UTF16LE&lt;&gt;</a> &gt;(eis); <span class="comment">// 把 UTF-16LE 文件解析至内存中的 UTF-8</span></div><div class="line"></div><div class="line">fclose(fp);</div></div><!-- fragment --><h2><a class="anchor" id="EncodedOutputStream"></a>
EncodedOutputStream</h2>
<p><code>EncodedOutputStream</code> 也是相似的,但它的构造函数有一个 <code>bool putBOM</code> 参数,用于控制是否在输出字节流写入 BOM。</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/filewritestream.h&quot;</span> <span class="comment">// FileWriteStream</span></div>
-<div class="line"><span class="preprocessor">#include &quot;rapidjson/encodedstream.h&quot;</span> <span class="comment">// EncodedOutputStream</span></div>
-<div class="line"><span class="preprocessor">#include &lt;cstdio&gt;</span></div>
-<div class="line"></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d; <span class="comment">// Document 为 GenericDocument&lt;UTF8&lt;&gt; &gt; </span></div>
-<div class="line"><span class="comment">// ...</span></div>
-<div class="line"></div>
-<div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;output_utf32le.json&quot;</span>, <span class="stringliteral">&quot;wb&quot;</span>); <span class="comment">// 非 Windows 平台使用 &quot;w&quot;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keywordtype">char</span> writeBuffer[256];</div>
-<div class="line">FileWriteStream bos(fp, writeBuffer, <span class="keyword">sizeof</span>(writeBuffer));</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">typedef</span> EncodedOutputStream&lt;UTF32LE&lt;&gt;, FileWriteStream&gt; OutputStream;</div>
-<div class="line">OutputStream eos(bos, <span class="keyword">true</span>); <span class="comment">// 写入 BOM</span></div>
-<div class="line"></div>
-<div class="line">Writer&lt;OutputStream, UTF32LE&lt;&gt;, UTF8&lt;&gt;&gt; writer(eos);</div>
-<div class="line">d.Accept(writer); <span class="comment">// 这里从内存的 UTF-8 生成 UTF32-LE 文件</span></div>
-<div class="line"></div>
-<div class="line">fclose(fp);</div>
-</div><!-- fragment --><h2><a class="anchor" id="AutoUTFInputStream"></a>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;rapidjson/filewritestream.h&quot;</span> <span class="comment">// FileWriteStream</span></div><div class="line"><span class="preprocessor">#include &quot;rapidjson/encodedstream.h&quot;</span> <span class="comment">// EncodedOutputStream</span></div><div class="line"><span class="preprocessor">#include &lt;cstdio&gt;</span></div><div class="line"></div><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d; <span class="comment">// Document 为 GenericDocument&lt;UTF8&lt;&gt; &gt; </span></div><div class="line"><span class="comment">// ...</span></div><div class="line"></div><div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;output_utf32le.json&quot;</span>, <span class="stringliteral">&quot;wb&quot;</span>); <span class="comment">// 非 Windows 平台使用 &quot;w&quot;</span></div><div class="line"></div><div class="line"><span class="keywordtype">char</span> writeBuffer[256];</div><div class="line">FileWriteStream bos(fp, writeBuffer, <span class="keyword">sizeof</span>(writeBuffer));</div><div class="line"></div><div class="line"><span class="keyword">typedef</span> EncodedOutputStream&lt;UTF32LE&lt;&gt;, FileWriteStream&gt; OutputStream;</div><div class="line">OutputStream eos(bos, <span class="keyword">true</span>); <span class="comment">// 写入 BOM</span></div><div class="line"></div><div class="line">Writer&lt;OutputStream, UTF32LE&lt;&gt;, UTF8&lt;&gt;&gt; writer(eos);</div><div class="line">d.Accept(writer); <span class="comment">// 这里从内存的 UTF-8 生成 UTF32-LE 文件</span></div><div class="line"></div><div class="line">fclose(fp);</div></div><!-- fragment --><h2><a class="anchor" id="AutoUTFInputStream"></a>
AutoUTFInputStream</h2>
<p>有时候,应用软件可能需要㲃理所有可支持的 JSON 编码。<code>AutoUTFInputStream</code> 会先使用 BOM 来检测编码。若 BOM 不存在,它便会使用合法 JSON 的特性来检测。若两种方法都失败,它就会倒退至构造函数提供的 UTF 类型。</p>
<p>由于字符(编码单元/code unit)可能是 8 位、16 位或 32 位,<code>AutoUTFInputStream</code> 需要一个能至少储存 32 位的字符类型。我们可以使用 <code>unsigned</code> 作为模板参数:</p>
-<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">rapidjson/document.h</a>&quot;</span></div>
-<div class="line"><span class="preprocessor">#include &quot;rapidjson/filereadstream.h&quot;</span> <span class="comment">// FileReadStream</span></div>
-<div class="line"><span class="preprocessor">#include &quot;rapidjson/encodedstream.h&quot;</span> <span class="comment">// AutoUTFInputStream</span></div>
-<div class="line"><span class="preprocessor">#include &lt;cstdio&gt;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"></div>
-<div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;any.json&quot;</span>, <span class="stringliteral">&quot;rb&quot;</span>); <span class="comment">// 非 Windows 平台使用 &quot;r&quot;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keywordtype">char</span> readBuffer[256];</div>
-<div class="line"><a class="code" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a> bis(fp, readBuffer, <span class="keyword">sizeof</span>(readBuffer));</div>
-<div class="line"></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">AutoUTFInputStream&lt;unsigned, FileReadStream&gt;</a> eis(bis); <span class="comment">// 用 eis 包装 bis</span></div>
-<div class="line"></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d; <span class="comment">// Document 为 GenericDocument&lt;UTF8&lt;&gt; &gt; </span></div>
-<div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">ParseStream</a>&lt;0, <a class="code" href="structrapidjson_1_1_auto_u_t_f.html">AutoUTF&lt;unsigned&gt;</a> &gt;(eis); <span class="comment">// 把任何 UTF 编码的文件解析至内存中的 UTF-8</span></div>
-<div class="line"></div>
-<div class="line">fclose(fp);</div>
-</div><!-- fragment --><p>当要指定流的编码,可使用上面例子中 <code>ParseStream()</code> 的参数 <code>AutoUTF&lt;CharType&gt;</code>。</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">rapidjson/document.h</a>&quot;</span></div><div class="line"><span class="preprocessor">#include &quot;rapidjson/filereadstream.h&quot;</span> <span class="comment">// FileReadStream</span></div><div class="line"><span class="preprocessor">#include &quot;rapidjson/encodedstream.h&quot;</span> <span class="comment">// AutoUTFInputStream</span></div><div class="line"><span class="preprocessor">#include &lt;cstdio&gt;</span></div><div class="line"></div><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"></div><div class="line">FILE* fp = fopen(<span class="stringliteral">&quot;any.json&quot;</span>, <span class="stringliteral">&quot;rb&quot;</span>); <span class="comment">// 非 Windows 平台使用 &quot;r&quot;</span></div><div class="line"></div><div class="line"><span class="keywordtype">char</span> readBuffer[256];</div><div class="line"><a class="code" href="classrapidjson_1_1_file_read_stream.html">FileReadStream</a> bis(fp, readBuffer, <span class="keyword">sizeof</span>(readBuffer));</div><div class="line"></div><div class="line"><a class="code" href="classrapidjson_1_1_auto_u_t_f_input_stream.html">AutoUTFInputStream&lt;unsigned, FileReadStream&gt;</a> eis(bis); <span class="comment">// 用 eis 包装 bis</span></div><div class="line"></div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> d; <span class="comment">// Document 为 GenericDocument&lt;UTF8&lt;&gt; &gt; </span></div><div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">ParseStream</a>&lt;0, <a class="code" href="structrapidjson_1_1_auto_u_t_f.html">AutoUTF&lt;unsigned&gt;</a> &gt;(eis); <span class="comment">// 把任何 UTF 编码的文件解析至内存中的 UTF-8</span></div><div class="line"></div><div class="line">fclose(fp);</div></div><!-- fragment --><p>当要指定流的编码,可使用上面例子中 <code>ParseStream()</code> 的参数 <code>AutoUTF&lt;CharType&gt;</code>。</p>
<p>你可以使用 <code>UTFType GetType()</code> 去获取 UTF 类型,并且用 <code>HasBOM()</code> 检测输入流是否含有 BOM。</p>
<h2><a class="anchor" id="AutoUTFOutputStream"></a>
AutoUTFOutputStream</h2>
<p>相似地,要在运行时选择输出的编码,我们可使用 <code>AutoUTFOutputStream</code>。这个类本身并非「自动」。你需要在运行时指定 UTF 类型,以及是否写入 BOM。</p>
-<div class="fragment"><div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"></div>
-<div class="line"><span class="keywordtype">void</span> WriteJSONFile(FILE* fp, <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> type, <span class="keywordtype">bool</span> putBOM, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_document.html">Document</a>&amp; d) {</div>
-<div class="line"> <span class="keywordtype">char</span> writeBuffer[256];</div>
-<div class="line"> <a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a> bos(fp, writeBuffer, <span class="keyword">sizeof</span>(writeBuffer));</div>
-<div class="line"></div>
-<div class="line"> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">AutoUTFOutputStream&lt;unsigned, FileWriteStream&gt;</a> OutputStream;</div>
-<div class="line"> OutputStream eos(bos, type, putBOM);</div>
-<div class="line"></div>
-<div class="line"> <a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;OutputStream, UTF8&lt;&gt;</a>, <a class="code" href="structrapidjson_1_1_auto_u_t_f.html">AutoUTF&lt;&gt;</a> &gt; writer;</div>
-<div class="line"> d.<a class="code" href="classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e">Accept</a>(writer);</div>
-<div class="line">}</div>
-</div><!-- fragment --><p><code>AutoUTFInputStream</code>/<code>AutoUTFOutputStream</code> 是比 <code>EncodedInputStream</code>/<code>EncodedOutputStream</code> 方便。但前者会产生一点运行期额外开销。</p>
+<div class="fragment"><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"></div><div class="line"><span class="keywordtype">void</span> WriteJSONFile(FILE* fp, <a class="code" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> type, <span class="keywordtype">bool</span> putBOM, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_document.html">Document</a>&amp; d) {</div><div class="line"> <span class="keywordtype">char</span> writeBuffer[256];</div><div class="line"> <a class="code" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a> bos(fp, writeBuffer, <span class="keyword">sizeof</span>(writeBuffer));</div><div class="line"></div><div class="line"> <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_auto_u_t_f_output_stream.html">AutoUTFOutputStream&lt;unsigned, FileWriteStream&gt;</a> OutputStream;</div><div class="line"> OutputStream eos(bos, type, putBOM);</div><div class="line"></div><div class="line"> <a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;OutputStream, UTF8&lt;&gt;</a>, <a class="code" href="structrapidjson_1_1_auto_u_t_f.html">AutoUTF&lt;&gt;</a> &gt; writer;</div><div class="line"> d.<a class="code" href="classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c">Accept</a>(writer);</div><div class="line">}</div></div><!-- fragment --><p><code>AutoUTFInputStream</code>/<code>AutoUTFOutputStream</code> 是比 <code>EncodedInputStream</code>/<code>EncodedOutputStream</code> 方便。但前者会产生一点运行期额外开销。</p>
<h1><a class="anchor" id="CustomStream"></a>
自定义流</h1>
<p>除了内存/文件流,使用者可创建自行定义适配 RapidJSON API 的流类。例如,你可以创建网络流、从压缩文件读取的流等等。</p>
<p>RapidJSON 利用模板结合不同的类型。只要一个类包含所有所需的接口,就可以作为一个流。流的接合定义在 <code><a class="el" href="rapidjson_8h.html" title="common definitions and configuration ">rapidjson/rapidjson.h</a></code> 的注释里:</p>
-<div class="fragment"><div class="line">concept Stream {</div>
-<div class="line"> <span class="keyword">typename</span> Ch; <span class="comment">//!&lt; 流的字符类型</span></div>
-<div class="line"><span class="comment"></span><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! 从流读取当前字符,不移动读取指针(read cursor)</span></div>
-<div class="line"><span class="comment"></span> Ch Peek() <span class="keyword">const</span>;</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! 从流读取当前字符,移动读取指针至下一字符。</span></div>
-<div class="line"><span class="comment"></span> Ch Take();</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! 获取读取指针。</span></div>
-<div class="line"><span class="comment"> //! \return 从开始以来所读过的字符数量。</span></div>
-<div class="line"><span class="comment"></span> <span class="keywordtype">size_t</span> Tell();</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! 从当前读取指针开始写入操作。</span></div>
-<div class="line"><span class="comment"> //! \return 返回开始写入的指针。</span></div>
-<div class="line"><span class="comment"></span> Ch* PutBegin();</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! 写入一个字符。</span></div>
-<div class="line"><span class="comment"></span> <span class="keywordtype">void</span> Put(Ch c);</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! 清空缓冲区。</span></div>
-<div class="line"><span class="comment"></span> <span class="keywordtype">void</span> Flush();</div>
-<div class="line"><span class="comment"></span></div>
-<div class="line"><span class="comment"> //! 完成写作操作。</span></div>
-<div class="line"><span class="comment"> //! \param begin PutBegin() 返回的开始写入指针。</span></div>
-<div class="line"><span class="comment"> //! \return 已写入的字符数量。</span></div>
-<div class="line"><span class="comment"></span> <span class="keywordtype">size_t</span> PutEnd(Ch* begin);</div>
-<div class="line">}</div>
-</div><!-- fragment --><p>输入流必须实现 <code>Peek()</code>、<code>Take()</code> 及 <code>Tell()</code>。 输出流必须实现 <code>Put()</code> 及 <code>Flush()</code>。 <code>PutBegin()</code> 及 <code>PutEnd()</code> 是特殊的接口,仅用于原位(*in situ*)解析。一般的流不需实现它们。然而,即使接口不需用于某些流,仍然需要提供空实现,否则会产生编译错误。</p>
+<div class="fragment"><div class="line">concept Stream {</div><div class="line"> <span class="keyword">typename</span> Ch; <span class="comment">//!&lt; 流的字符类型</span></div><div class="line"><span class="comment"></span><span class="comment"></span></div><div class="line"><span class="comment"> //! 从流读取当前字符,不移动读取指针(read cursor)</span></div><div class="line"><span class="comment"></span> Ch Peek() <span class="keyword">const</span>;</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! 从流读取当前字符,移动读取指针至下一字符。</span></div><div class="line"><span class="comment"></span> Ch Take();</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! 获取读取指针。</span></div><div class="line"><span class="comment"> //! \return 从开始以来所读过的字符数量。</span></div><div class="line"><span class="comment"></span> <span class="keywordtype">size_t</span> Tell();</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! 从当前读取指针开始写入操作。</span></div><div class="line"><span class="comment"> //! \return 返回开始写入的指针。</span></div><div class="line"><span class="comment"></span> Ch* PutBegin();</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! 写入一个字符。</span></div><div class="line"><span class="comment"></span> <span class="keywordtype">void</span> Put(Ch c);</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! 清空缓冲区。</span></div><div class="line"><span class="comment"></span> <span class="keywordtype">void</span> Flush();</div><div class="line"><span class="comment"></span></div><div class="line"><span class="comment"> //! 完成写作操作。</span></div><div class="line"><span class="comment"> //! \param begin PutBegin() 返回的开始写入指针。</span></div><div class="line"><span class="comment"> //! \return 已写入的字符数量。</span></div><div class="line"><span class="comment"></span> <span class="keywordtype">size_t</span> PutEnd(Ch* begin);</div><div class="line">}</div></div><!-- fragment --><p>输入流必须实现 <code>Peek()</code>、<code>Take()</code> 及 <code>Tell()</code>。 输出流必须实现 <code>Put()</code> 及 <code>Flush()</code>。 <code>PutBegin()</code> 及 <code>PutEnd()</code> 是特殊的接口,仅用于原位(*in situ*)解析。一般的流不需实现它们。然而,即使接口不需用于某些流,仍然需要提供空实现,否则会产生编译错误。</p>
<h2><a class="anchor" id="ExampleIStreamWrapper"></a>
例子:istream 的包装类</h2>
<p>以下的简单例子是 <code>std::istream</code> 的包装类,它只需现 3 个函数。</p>
-<div class="fragment"><div class="line"><span class="keyword">class </span>MyIStreamWrapper {</div>
-<div class="line"><span class="keyword">public</span>:</div>
-<div class="line"> <span class="keyword">typedef</span> <span class="keywordtype">char</span> Ch;</div>
-<div class="line"></div>
-<div class="line"> MyIStreamWrapper(std::istream&amp; is) : is_(is) {</div>
-<div class="line"> }</div>
-<div class="line"></div>
-<div class="line"> Ch Peek()<span class="keyword"> const </span>{ <span class="comment">// 1</span></div>
-<div class="line"> <span class="keywordtype">int</span> c = is_.peek();</div>
-<div class="line"> <span class="keywordflow">return</span> c == std::char_traits&lt;char&gt;::eof() ? <span class="charliteral">&#39;\0&#39;</span> : (Ch)c;</div>
-<div class="line"> }</div>
-<div class="line"></div>
-<div class="line"> Ch Take() { <span class="comment">// 2</span></div>
-<div class="line"> <span class="keywordtype">int</span> c = is_.get();</div>
-<div class="line"> <span class="keywordflow">return</span> c == std::char_traits&lt;char&gt;::eof() ? <span class="charliteral">&#39;\0&#39;</span> : (Ch)c;</div>
-<div class="line"> }</div>
-<div class="line"></div>
-<div class="line"> <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<span class="keywordtype">size_t</span>)is_.tellg(); } <span class="comment">// 3</span></div>
-<div class="line"></div>
-<div class="line"> Ch* PutBegin() { assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"> <span class="keywordtype">void</span> Put(Ch) { assert(<span class="keyword">false</span>); }</div>
-<div class="line"> <span class="keywordtype">void</span> Flush() { assert(<span class="keyword">false</span>); }</div>
-<div class="line"> <span class="keywordtype">size_t</span> PutEnd(Ch*) { assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">private</span>:</div>
-<div class="line"> MyIStreamWrapper(<span class="keyword">const</span> MyIStreamWrapper&amp;);</div>
-<div class="line"> MyIStreamWrapper&amp; operator=(<span class="keyword">const</span> MyIStreamWrapper&amp;);</div>
-<div class="line"></div>
-<div class="line"> std::istream&amp; is_;</div>
-<div class="line">};</div>
-</div><!-- fragment --><p>使用者能用它来包装 <code>std::stringstream</code>、<code>std::ifstream</code> 的实例。</p>
-<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* json = <span class="stringliteral">&quot;[1,2,3,4]&quot;</span>;</div>
-<div class="line">std::stringstream ss(json);</div>
-<div class="line">MyIStreamWrapper is(ss);</div>
-<div class="line"></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div>
-<div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">ParseStream</a>(is);</div>
-</div><!-- fragment --><p>但要注意,由于标准库的内部开销问,此实现的性能可能不如 RapidJSON 的内存/文件流。</p>
+<div class="fragment"><div class="line"><span class="keyword">class </span>MyIStreamWrapper {</div><div class="line"><span class="keyword">public</span>:</div><div class="line"> <span class="keyword">typedef</span> <span class="keywordtype">char</span> Ch;</div><div class="line"></div><div class="line"> MyIStreamWrapper(std::istream&amp; is) : is_(is) {</div><div class="line"> }</div><div class="line"></div><div class="line"> Ch Peek()<span class="keyword"> const </span>{ <span class="comment">// 1</span></div><div class="line"> <span class="keywordtype">int</span> c = is_.peek();</div><div class="line"> <span class="keywordflow">return</span> c == std::char_traits&lt;char&gt;::eof() ? <span class="charliteral">&#39;\0&#39;</span> : (Ch)c;</div><div class="line"> }</div><div class="line"></div><div class="line"> Ch Take() { <span class="comment">// 2</span></div><div class="line"> <span class="keywordtype">int</span> c = is_.get();</div><div class="line"> <span class="keywordflow">return</span> c == std::char_traits&lt;char&gt;::eof() ? <span class="charliteral">&#39;\0&#39;</span> : (Ch)c;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<span class="keywordtype">size_t</span>)is_.tellg(); } <span class="comment">// 3</span></div><div class="line"></div><div class="line"> Ch* PutBegin() { assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"> <span class="keywordtype">void</span> Put(Ch) { assert(<span class="keyword">false</span>); }</div><div class="line"> <span class="keywordtype">void</span> Flush() { assert(<span class="keyword">false</span>); }</div><div class="line"> <span class="keywordtype">size_t</span> PutEnd(Ch*) { assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"></div><div class="line"><span class="keyword">private</span>:</div><div class="line"> MyIStreamWrapper(<span class="keyword">const</span> MyIStreamWrapper&amp;);</div><div class="line"> MyIStreamWrapper&amp; operator=(<span class="keyword">const</span> MyIStreamWrapper&amp;);</div><div class="line"></div><div class="line"> std::istream&amp; is_;</div><div class="line">};</div></div><!-- fragment --><p>使用者能用它来包装 <code>std::stringstream</code>、<code>std::ifstream</code> 的实例。</p>
+<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* json = <span class="stringliteral">&quot;[1,2,3,4]&quot;</span>;</div><div class="line">std::stringstream ss(json);</div><div class="line">MyIStreamWrapper is(ss);</div><div class="line"></div><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div><div class="line">d.<a class="code" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85">ParseStream</a>(is);</div></div><!-- fragment --><p>但要注意,由于标准库的内部开销问,此实现的性能可能不如 RapidJSON 的内存/文件流。</p>
<h2><a class="anchor" id="ExampleOStreamWrapper"></a>
例子:ostream 的包装类</h2>
<p>以下的例子是 <code>std::istream</code> 的包装类,它只需实现 2 个函数。</p>
-<div class="fragment"><div class="line"><span class="keyword">class </span>MyOStreamWrapper {</div>
-<div class="line"><span class="keyword">public</span>:</div>
-<div class="line"> <span class="keyword">typedef</span> <span class="keywordtype">char</span> Ch;</div>
-<div class="line"></div>
-<div class="line"> OStreamWrapper(std::ostream&amp; os) : os_(os) {</div>
-<div class="line"> }</div>
-<div class="line"></div>
-<div class="line"> Ch Peek()<span class="keyword"> const </span>{ assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> <span class="charliteral">&#39;\0&#39;</span>; }</div>
-<div class="line"> Ch Take() { assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> <span class="charliteral">&#39;\0&#39;</span>; }</div>
-<div class="line"> <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ }</div>
-<div class="line"></div>
-<div class="line"> Ch* PutBegin() { assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"> <span class="keywordtype">void</span> Put(Ch c) { os_.put(c); } <span class="comment">// 1</span></div>
-<div class="line"> <span class="keywordtype">void</span> Flush() { os_.flush(); } <span class="comment">// 2</span></div>
-<div class="line"> <span class="keywordtype">size_t</span> PutEnd(Ch*) { assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"></div>
-<div class="line"><span class="keyword">private</span>:</div>
-<div class="line"> MyOStreamWrapper(<span class="keyword">const</span> MyOStreamWrapper&amp;);</div>
-<div class="line"> MyOStreamWrapper&amp; operator=(<span class="keyword">const</span> MyOStreamWrapper&amp;);</div>
-<div class="line"></div>
-<div class="line"> std::ostream&amp; os_;</div>
-<div class="line">};</div>
-</div><!-- fragment --><p>使用者能用它来包装 <code>std::stringstream</code>、<code>std::ofstream</code> 的实例。</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div>
-<div class="line"><span class="comment">// ...</span></div>
-<div class="line"></div>
-<div class="line">std::stringstream ss;</div>
-<div class="line">MyOStreamWrapper os(ss);</div>
-<div class="line"></div>
-<div class="line">Writer&lt;MyOStreamWrapper&gt; writer(os);</div>
-<div class="line">d.Accept(writer);</div>
-</div><!-- fragment --><p>但要注意,由于标准库的内部开销问,此实现的性能可能不如 RapidJSON 的内存/文件流。</p>
+<div class="fragment"><div class="line"><span class="keyword">class </span>MyOStreamWrapper {</div><div class="line"><span class="keyword">public</span>:</div><div class="line"> <span class="keyword">typedef</span> <span class="keywordtype">char</span> Ch;</div><div class="line"></div><div class="line"> OStreamWrapper(std::ostream&amp; os) : os_(os) {</div><div class="line"> }</div><div class="line"></div><div class="line"> Ch Peek()<span class="keyword"> const </span>{ assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> <span class="charliteral">&#39;\0&#39;</span>; }</div><div class="line"> Ch Take() { assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> <span class="charliteral">&#39;\0&#39;</span>; }</div><div class="line"> <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ }</div><div class="line"></div><div class="line"> Ch* PutBegin() { assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"> <span class="keywordtype">void</span> Put(Ch c) { os_.put(c); } <span class="comment">// 1</span></div><div class="line"> <span class="keywordtype">void</span> Flush() { os_.flush(); } <span class="comment">// 2</span></div><div class="line"> <span class="keywordtype">size_t</span> PutEnd(Ch*) { assert(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"></div><div class="line"><span class="keyword">private</span>:</div><div class="line"> MyOStreamWrapper(<span class="keyword">const</span> MyOStreamWrapper&amp;);</div><div class="line"> MyOStreamWrapper&amp; operator=(<span class="keyword">const</span> MyOStreamWrapper&amp;);</div><div class="line"></div><div class="line"> std::ostream&amp; os_;</div><div class="line">};</div></div><!-- fragment --><p>使用者能用它来包装 <code>std::stringstream</code>、<code>std::ofstream</code> 的实例。</p>
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div><div class="line"><span class="comment">// ...</span></div><div class="line"></div><div class="line">std::stringstream ss;</div><div class="line">MyOStreamWrapper os(ss);</div><div class="line"></div><div class="line">Writer&lt;MyOStreamWrapper&gt; writer(os);</div><div class="line">d.Accept(writer);</div></div><!-- fragment --><p>但要注意,由于标准库的内部开销问,此实现的性能可能不如 RapidJSON 的内存/文件流。</p>
<h1><a class="anchor" id="Summary"></a>
总结</h1>
<p>本节描述了 RapidJSON 提供的各种流的类。内存流很简单。若 JSON 存储在文件中,文件流可减少 JSON 解析及生成所需的内存量。编码流在字节流和字符流之间作转换。最后,使用者可使用一个简单接口创建自定义的流。 </p>
diff --git a/zh-cn/md_doc_tutorial_8zh-cn.html b/zh-cn/md_doc_tutorial_8zh-cn.html
index a4ad0266..43aca427 100644
--- a/zh-cn/md_doc_tutorial_8zh-cn.html
+++ b/zh-cn/md_doc_tutorial_8zh-cn.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 教程</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('md_doc_tutorial_8zh-cn.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -110,105 +111,32 @@ Value 及 Document</h1>
<h1><a class="anchor" id="QueryValue"></a>
查询 Value</h1>
<p>在本节中,我们会使用到 <code>example/tutorial/tutorial.cpp</code> 中的代码片段。</p>
-<p>假设我们用 C 语言的字符串储存一个 JSON(<code>const char* json</code>): </p><div class="fragment"><div class="line">{</div>
-<div class="line"> <span class="stringliteral">&quot;hello&quot;</span>: <span class="stringliteral">&quot;world&quot;</span>,</div>
-<div class="line"> <span class="stringliteral">&quot;t&quot;</span>: true ,</div>
-<div class="line"> <span class="stringliteral">&quot;f&quot;</span>: <span class="keyword">false</span>,</div>
-<div class="line"> <span class="stringliteral">&quot;n&quot;</span>: null,</div>
-<div class="line"> <span class="stringliteral">&quot;i&quot;</span>: 123,</div>
-<div class="line"> <span class="stringliteral">&quot;pi&quot;</span>: 3.1416,</div>
-<div class="line"> <span class="stringliteral">&quot;a&quot;</span>: [1, 2, 3, 4]</div>
-<div class="line">}</div>
-</div><!-- fragment --><p>把它解析至一个 <code>Document</code>: </p><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">rapidjson/document.h</a>&quot;</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">using namespace </span>rapidjson;</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// ...</span></div>
-<div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> document;</div>
-<div class="line">document.<a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">Parse</a>(json);</div>
-</div><!-- fragment --><p>那么现在该 JSON 就会被解析至 <code>document</code> 中,成为一棵 *DOM 树 *:</p>
+<p>假设我们用 C 语言的字符串储存一个 JSON(<code>const char* json</code>): </p><div class="fragment"><div class="line">{</div><div class="line"> &quot;hello&quot;: &quot;world&quot;,</div><div class="line"> &quot;t&quot;: true ,</div><div class="line"> &quot;f&quot;: false,</div><div class="line"> &quot;n&quot;: null,</div><div class="line"> &quot;i&quot;: 123,</div><div class="line"> &quot;pi&quot;: 3.1416,</div><div class="line"> &quot;a&quot;: [1, 2, 3, 4]</div><div class="line">}</div></div><!-- fragment --><p>把它解析至一个 <code>Document</code>: </p><div class="fragment"><div class="line"><span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">rapidjson/document.h</a>&quot;</span></div><div class="line"></div><div class="line"><span class="keyword">using namespace </span><a class="code" href="namespacerapidjson.html">rapidjson</a>;</div><div class="line"></div><div class="line"><span class="comment">// ...</span></div><div class="line"><a class="code" href="classrapidjson_1_1_generic_document.html">Document</a> document;</div><div class="line">document.<a class="code" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c">Parse</a>(json);</div></div><!-- fragment --><p>那么现在该 JSON 就会被解析至 <code>document</code> 中,成为一棵 *DOM 树 *:</p>
<div class="image">
<img src="tutorial.png" alt="tutorial.png"/>
<div class="caption">
教程中的 DOM</div></div>
-<p> 自从 RFC 7159 作出更新,合法 JSON 文件的根可以是任何类型的 JSON 值。而在较早的 RFC 4627 中,根值只允许是 Object 或 Array。而在上述例子中,根是一个 Object。 </p><div class="fragment"><div class="line">assert(document.IsObject());</div>
-</div><!-- fragment --><p>让我们查询一下根 Object 中有没有 <code>"hello"</code> 成员。由于一个 <code>Value</code> 可包含不同类型的值,我们可能需要验证它的类型,并使用合适的 API 去获取其值。在此例中,<code>"hello"</code> 成员关联到一个 JSON String。 </p><div class="fragment"><div class="line">assert(document.HasMember(<span class="stringliteral">&quot;hello&quot;</span>));</div>
-<div class="line">assert(document[<span class="stringliteral">&quot;hello&quot;</span>].IsString());</div>
-<div class="line">printf(<span class="stringliteral">&quot;hello = %s\n&quot;</span>, document[<span class="stringliteral">&quot;hello&quot;</span>].GetString());</div>
-</div><!-- fragment --><div class="fragment"><div class="line">world</div>
-</div><!-- fragment --><p>JSON True/False 值是以 <code>bool</code> 表示的。 </p><div class="fragment"><div class="line">assert(document[<span class="stringliteral">&quot;t&quot;</span>].IsBool());</div>
-<div class="line">printf(<span class="stringliteral">&quot;t = %s\n&quot;</span>, document[<span class="stringliteral">&quot;t&quot;</span>].GetBool() ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>);</div>
-</div><!-- fragment --><div class="fragment"><div class="line"><span class="keyword">true</span></div>
-</div><!-- fragment --><p>JSON Null 值可用 <code>IsNull()</code> 查询。 </p><div class="fragment"><div class="line">printf(<span class="stringliteral">&quot;n = %s\n&quot;</span>, document[<span class="stringliteral">&quot;n&quot;</span>].IsNull() ? <span class="stringliteral">&quot;null&quot;</span> : <span class="stringliteral">&quot;?&quot;</span>);</div>
-</div><!-- fragment --><div class="fragment"><div class="line">null</div>
-</div><!-- fragment --><p>JSON Number 类型表示所有数值。然而,C++ 需要使用更专门的类型。</p>
-<div class="fragment"><div class="line">assert(document[<span class="stringliteral">&quot;i&quot;</span>].IsNumber());</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// 在此情况下,IsUint()/IsInt64()/IsUInt64() 也会返回 true</span></div>
-<div class="line">assert(document[<span class="stringliteral">&quot;i&quot;</span>].IsInt()); </div>
-<div class="line">printf(<span class="stringliteral">&quot;i = %d\n&quot;</span>, document[<span class="stringliteral">&quot;i&quot;</span>].GetInt());</div>
-<div class="line"><span class="comment">// 另一种用法: (int)document[&quot;i&quot;]</span></div>
-<div class="line"></div>
-<div class="line">assert(document[<span class="stringliteral">&quot;pi&quot;</span>].IsNumber());</div>
-<div class="line">assert(document[<span class="stringliteral">&quot;pi&quot;</span>].IsDouble());</div>
-<div class="line">printf(<span class="stringliteral">&quot;pi = %g\n&quot;</span>, document[<span class="stringliteral">&quot;pi&quot;</span>].GetDouble());</div>
-</div><!-- fragment --><div class="fragment"><div class="line">i = 123</div>
-<div class="line">pi = 3.1416</div>
-</div><!-- fragment --><p>JSON Array 包含一些元素。 </p><div class="fragment"><div class="line"><span class="comment">// 使用引用来连续访问,方便之余还更高效。</span></div>
-<div class="line"><span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>&amp; a = document[<span class="stringliteral">&quot;a&quot;</span>];</div>
-<div class="line">assert(a.IsArray());</div>
-<div class="line"><span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; a.Size(); i++) <span class="comment">// 使用 SizeType 而不是 size_t</span></div>
-<div class="line"> printf(<span class="stringliteral">&quot;a[%d] = %d\n&quot;</span>, i, a[i].GetInt());</div>
-</div><!-- fragment --><div class="fragment"><div class="line">a[0] = 1</div>
-<div class="line">a[1] = 2</div>
-<div class="line">a[2] = 3</div>
-<div class="line">a[3] = 4</div>
-</div><!-- fragment --><p>注意,RapidJSON 并不自动转换各种 JSON 类型。例如,对一个 String 的 Value 调用 <code>GetInt()</code> 是非法的。在调试模式下,它会被断言失败。在发布模式下,其行为是未定义的。</p>
+<p> 自从 RFC 7159 作出更新,合法 JSON 文件的根可以是任何类型的 JSON 值。而在较早的 RFC 4627 中,根值只允许是 Object 或 Array。而在上述例子中,根是一个 Object。 </p><div class="fragment"><div class="line">assert(document.IsObject());</div></div><!-- fragment --><p>让我们查询一下根 Object 中有没有 <code>"hello"</code> 成员。由于一个 <code>Value</code> 可包含不同类型的值,我们可能需要验证它的类型,并使用合适的 API 去获取其值。在此例中,<code>"hello"</code> 成员关联到一个 JSON String。 </p><div class="fragment"><div class="line">assert(document.<a class="code" href="classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b">HasMember</a>(<span class="stringliteral">&quot;hello&quot;</span>));</div><div class="line">assert(document[<span class="stringliteral">&quot;hello&quot;</span>].IsString());</div><div class="line">printf(<span class="stringliteral">&quot;hello = %s\n&quot;</span>, document[<span class="stringliteral">&quot;hello&quot;</span>].GetString());</div></div><!-- fragment --><div class="fragment"><div class="line">world</div></div><!-- fragment --><p>JSON True/False 值是以 <code>bool</code> 表示的。 </p><div class="fragment"><div class="line">assert(document[<span class="stringliteral">&quot;t&quot;</span>].IsBool());</div><div class="line">printf(<span class="stringliteral">&quot;t = %s\n&quot;</span>, document[<span class="stringliteral">&quot;t&quot;</span>].GetBool() ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>);</div></div><!-- fragment --><div class="fragment"><div class="line">true</div></div><!-- fragment --><p>JSON Null 值可用 <code>IsNull()</code> 查询。 </p><div class="fragment"><div class="line">printf(<span class="stringliteral">&quot;n = %s\n&quot;</span>, document[<span class="stringliteral">&quot;n&quot;</span>].IsNull() ? <span class="stringliteral">&quot;null&quot;</span> : <span class="stringliteral">&quot;?&quot;</span>);</div></div><!-- fragment --><div class="fragment"><div class="line">null</div></div><!-- fragment --><p>JSON Number 类型表示所有数值。然而,C++ 需要使用更专门的类型。</p>
+<div class="fragment"><div class="line">assert(document[<span class="stringliteral">&quot;i&quot;</span>].IsNumber());</div><div class="line"></div><div class="line"><span class="comment">// 在此情况下,IsUint()/IsInt64()/IsUInt64() 也会返回 true</span></div><div class="line">assert(document[<span class="stringliteral">&quot;i&quot;</span>].IsInt()); </div><div class="line">printf(<span class="stringliteral">&quot;i = %d\n&quot;</span>, document[<span class="stringliteral">&quot;i&quot;</span>].GetInt());</div><div class="line"><span class="comment">// 另一种用法: (int)document[&quot;i&quot;]</span></div><div class="line"></div><div class="line">assert(document[<span class="stringliteral">&quot;pi&quot;</span>].IsNumber());</div><div class="line">assert(document[<span class="stringliteral">&quot;pi&quot;</span>].IsDouble());</div><div class="line">printf(<span class="stringliteral">&quot;pi = %g\n&quot;</span>, document[<span class="stringliteral">&quot;pi&quot;</span>].GetDouble());</div></div><!-- fragment --><div class="fragment"><div class="line">i = 123</div><div class="line">pi = 3.1416</div></div><!-- fragment --><p>JSON Array 包含一些元素。 </p><div class="fragment"><div class="line"><span class="comment">// 使用引用来连续访问,方便之余还更高效。</span></div><div class="line"><span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>&amp; a = document[<span class="stringliteral">&quot;a&quot;</span>];</div><div class="line">assert(a.IsArray());</div><div class="line"><span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; a.Size(); i++) <span class="comment">// 使用 SizeType 而不是 size_t</span></div><div class="line"> printf(<span class="stringliteral">&quot;a[%d] = %d\n&quot;</span>, i, a[i].GetInt());</div></div><!-- fragment --><div class="fragment"><div class="line">a[0] = 1</div><div class="line">a[1] = 2</div><div class="line">a[2] = 3</div><div class="line">a[3] = 4</div></div><!-- fragment --><p>注意,RapidJSON 并不自动转换各种 JSON 类型。例如,对一个 String 的 Value 调用 <code>GetInt()</code> 是非法的。在调试模式下,它会被断言失败。在发布模式下,其行为是未定义的。</p>
<p>以下将会讨论有关查询各类型的细节。</p>
<h2><a class="anchor" id="QueryArray"></a>
查询 Array</h2>
<p>缺省情况下,<code>SizeType</code> 是 <code>unsigned</code> 的 typedef。在多数系统中,Array 最多能存储 2^32-1 个元素。</p>
<p>你可以用整数字面量访问元素,如 <code>a[0]</code>、<code>a[1]</code>、<code>a[2]</code>。</p>
-<p>Array 与 <code>std::vector</code> 相似,除了使用索引,也可使用迭代器来访问所有元素。 </p><div class="fragment"><div class="line"><span class="keywordflow">for</span> (Value::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr)</div>
-<div class="line"> printf(<span class="stringliteral">&quot;%d &quot;</span>, itr-&gt;GetInt());</div>
-</div><!-- fragment --><p>还有一些熟悉的查询函数:</p><ul>
+<p>Array 与 <code>std::vector</code> 相似,除了使用索引,也可使用迭代器来访问所有元素。 </p><div class="fragment"><div class="line"><span class="keywordflow">for</span> (Value::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr)</div><div class="line"> printf(<span class="stringliteral">&quot;%d &quot;</span>, itr-&gt;GetInt());</div></div><!-- fragment --><p>还有一些熟悉的查询函数:</p><ul>
<li><code>SizeType Capacity() const</code></li>
<li><code>bool Empty() const</code></li>
</ul>
<h3>范围 for 循环 (v1.1.0 中的新功能)</h3>
<p>当使用 C++11 功能时,你可使用范围 for 循环去访问 Array 内的所有元素。</p>
-<div class="fragment"><div class="line"><span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; v : a.GetArray())</div>
-<div class="line"> printf(<span class="stringliteral">&quot;%d &quot;</span>, v.GetInt());</div>
-</div><!-- fragment --><h2><a class="anchor" id="QueryObject"></a>
+<div class="fragment"><div class="line"><span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; v : a.GetArray())</div><div class="line"> printf(<span class="stringliteral">&quot;%d &quot;</span>, v.GetInt());</div></div><!-- fragment --><h2><a class="anchor" id="QueryObject"></a>
查询 Object</h2>
<p>和 Array 相似,我们可以用迭代器去访问所有 Object 成员:</p>
-<div class="fragment"><div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* kTypeNames[] = </div>
-<div class="line"> { <span class="stringliteral">&quot;Null&quot;</span>, <span class="stringliteral">&quot;False&quot;</span>, <span class="stringliteral">&quot;True&quot;</span>, <span class="stringliteral">&quot;Object&quot;</span>, <span class="stringliteral">&quot;Array&quot;</span>, <span class="stringliteral">&quot;String&quot;</span>, <span class="stringliteral">&quot;Number&quot;</span> };</div>
-<div class="line"></div>
-<div class="line"><span class="keywordflow">for</span> (Value::ConstMemberIterator itr = document.MemberBegin();</div>
-<div class="line"> itr != document.MemberEnd(); ++itr)</div>
-<div class="line">{</div>
-<div class="line"> printf(<span class="stringliteral">&quot;Type of member %s is %s\n&quot;</span>,</div>
-<div class="line"> itr-&gt;name.GetString(), kTypeNames[itr-&gt;value.GetType()]);</div>
-<div class="line">}</div>
-</div><!-- fragment --><div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> of member hello is String</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> of member t is True</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> of member f is False</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> of member n is Null</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> of member i is Number</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> of member pi is Number</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> of member a is Array</div>
-</div><!-- fragment --><p>注意,当 <code>operator[](const char*)</code> 找不到成员,它会断言失败。</p>
+<div class="fragment"><div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* kTypeNames[] = </div><div class="line"> { <span class="stringliteral">&quot;Null&quot;</span>, <span class="stringliteral">&quot;False&quot;</span>, <span class="stringliteral">&quot;True&quot;</span>, <span class="stringliteral">&quot;Object&quot;</span>, <span class="stringliteral">&quot;Array&quot;</span>, <span class="stringliteral">&quot;String&quot;</span>, <span class="stringliteral">&quot;Number&quot;</span> };</div><div class="line"></div><div class="line"><span class="keywordflow">for</span> (Value::ConstMemberIterator itr = document.<a class="code" href="classrapidjson_1_1_generic_value.html#ae89a77887aa3eb1f1f913727cbff6786">MemberBegin</a>();</div><div class="line"> itr != document.<a class="code" href="classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c">MemberEnd</a>(); ++itr)</div><div class="line">{</div><div class="line"> printf(<span class="stringliteral">&quot;Type of member %s is %s\n&quot;</span>,</div><div class="line"> itr-&gt;name.GetString(), kTypeNames[itr-&gt;value.GetType()]);</div><div class="line">}</div></div><!-- fragment --><div class="fragment"><div class="line">Type of member hello is String</div><div class="line">Type of member t is True</div><div class="line">Type of member f is False</div><div class="line">Type of member n is Null</div><div class="line">Type of member i is Number</div><div class="line">Type of member pi is Number</div><div class="line">Type of member a is Array</div></div><!-- fragment --><p>注意,当 <code>operator[](const char*)</code> 找不到成员,它会断言失败。</p>
<p>若我们不确定一个成员是否存在,便需要在调用 <code>operator[](const char*)</code> 前先调用 <code>HasMember()</code>。然而,这会导致两次查找。更好的做法是调用 <code>FindMember()</code>,它能同时检查成员是否存在并返回它的 Value:</p>
-<div class="fragment"><div class="line">Value::ConstMemberIterator itr = document.FindMember(<span class="stringliteral">&quot;hello&quot;</span>);</div>
-<div class="line"><span class="keywordflow">if</span> (itr != document.MemberEnd())</div>
-<div class="line"> printf(<span class="stringliteral">&quot;%s\n&quot;</span>, itr-&gt;value.GetString());</div>
-</div><!-- fragment --><h3>范围 for 循环 (v1.1.0 中的新功能)</h3>
+<div class="fragment"><div class="line">Value::ConstMemberIterator itr = document.<a class="code" href="classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811">FindMember</a>(<span class="stringliteral">&quot;hello&quot;</span>);</div><div class="line"><span class="keywordflow">if</span> (itr != document.<a class="code" href="classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c">MemberEnd</a>())</div><div class="line"> printf(<span class="stringliteral">&quot;%s\n&quot;</span>, itr-&gt;value.GetString());</div></div><!-- fragment --><h3>范围 for 循环 (v1.1.0 中的新功能)</h3>
<p>当使用 C++11 功能时,你可使用范围 for 循环去访问 Object 内的所有成员。</p>
-<div class="fragment"><div class="line"><span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; m : document.GetObject())</div>
-<div class="line"> printf(<span class="stringliteral">&quot;Type of member %s is %s\n&quot;</span>,</div>
-<div class="line"> m.name.GetString(), kTypeNames[m.value.GetType()]);</div>
-</div><!-- fragment --><h2><a class="anchor" id="QueryNumber"></a>
+<div class="fragment"><div class="line"><span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; m : document.GetObject())</div><div class="line"> printf(<span class="stringliteral">&quot;Type of member %s is %s\n&quot;</span>,</div><div class="line"> m.name.GetString(), kTypeNames[m.value.GetType()]);</div></div><!-- fragment --><h2><a class="anchor" id="QueryNumber"></a>
查询 Number</h2>
<p>JSON 只提供一种数值类型──Number。数字可以是整数或实数。RFC 4627 规定数字的范围由解析器指定。</p>
<p>由于 C++ 提供多种整数及浮点数类型,DOM 尝试尽量提供最广的范围及良好性能。</p>
@@ -249,22 +177,16 @@ Value 及 Document</h1>
<h2><a class="anchor" id="QueryString"></a>
查询 String</h2>
<p>除了 <code>GetString()</code>,<code>Value</code> 类也有一个 <code>GetStringLength()</code>。这里会解释个中原因。</p>
-<p>根据 RFC 4627,JSON String 可包含 Unicode 字符 <code>U+0000</code>,在 JSON 中会表示为 <code>"\\u0000"</code>。问题是,C/C++ 通常使用空字符结尾字符串(null-terminated string),这种字符串把 `<code>\0'</code> 作为结束符号。</p>
+<p>根据 RFC 4627,JSON String 可包含 Unicode 字符 <code>U+0000</code>,在 JSON 中会表示为 <code>"\u0000"</code>。问题是,C/C++ 通常使用空字符结尾字符串(null-terminated string),这种字符串把 `<code>\0'</code> 作为结束符号。</p>
<p>为了符合 RFC 4627,RapidJSON 支持包含 <code>U+0000</code> 的 String。若你需要处理这些 String,便可使用 <code>GetStringLength()</code> 去获得正确的字符串长度。</p>
<p>例如,当解析以下的 JSON 至 <code>Document d</code> 之后:</p>
-<div class="fragment"><div class="line">{ <span class="stringliteral">&quot;s&quot;</span> : <span class="stringliteral">&quot;a\u0000b&quot;</span> }</div>
-</div><!-- fragment --><p> <code>"a\\u0000b"</code> 值的正确长度应该是 3。但 <code>strlen()</code> 会返回 1。</p>
+<div class="fragment"><div class="line">{ &quot;s&quot; : &quot;a\u0000b&quot; }</div></div><!-- fragment --><p> <code>"a\u0000b"</code> 值的正确长度应该是 3。但 <code>strlen()</code> 会返回 1。</p>
<p><code>GetStringLength()</code> 也可以提高性能,因为用户可能需要调用 <code>strlen()</code> 去分配缓冲。</p>
<p>此外,<code>std::string</code> 也支持这个构造函数:</p>
-<div class="fragment"><div class="line">string(<span class="keyword">const</span> <span class="keywordtype">char</span>* s, <span class="keywordtype">size_t</span> count);</div>
-</div><!-- fragment --><p>此构造函数接受字符串长度作为参数。它支持在字符串中存储空字符,也应该会有更好的性能。</p>
+<div class="fragment"><div class="line">string(<span class="keyword">const</span> <span class="keywordtype">char</span>* s, <span class="keywordtype">size_t</span> count);</div></div><!-- fragment --><p>此构造函数接受字符串长度作为参数。它支持在字符串中存储空字符,也应该会有更好的性能。</p>
<h2>比较两个 Value</h2>
<p>你可使用 <code>==</code> 及 <code>!=</code> 去比较两个 Value。当且仅当两个 Value 的类型及内容相同,它们才当作相等。你也可以比较 Value 和它的原生类型值。以下是一个例子。</p>
-<div class="fragment"><div class="line"><span class="keywordflow">if</span> (document[<span class="stringliteral">&quot;hello&quot;</span>] == document[<span class="stringliteral">&quot;n&quot;</span>]) <span class="comment">/*...*/</span>; <span class="comment">// 比较两个值</span></div>
-<div class="line"><span class="keywordflow">if</span> (document[<span class="stringliteral">&quot;hello&quot;</span>] == <span class="stringliteral">&quot;world&quot;</span>) <span class="comment">/*...*/</span>; <span class="comment">// 与字符串家面量作比较</span></div>
-<div class="line"><span class="keywordflow">if</span> (document[<span class="stringliteral">&quot;i&quot;</span>] != 123) <span class="comment">/*...*/</span>; <span class="comment">// 与整数作比较</span></div>
-<div class="line"><span class="keywordflow">if</span> (document[<span class="stringliteral">&quot;pi&quot;</span>] != 3.14) <span class="comment">/*...*/</span>; <span class="comment">// 与 double 作比较</span></div>
-</div><!-- fragment --><p>Array/Object 顺序以它们的元素/成员作比较。当且仅当它们的整个子树相等,它们才当作相等。</p>
+<div class="fragment"><div class="line"><span class="keywordflow">if</span> (document[<span class="stringliteral">&quot;hello&quot;</span>] == document[<span class="stringliteral">&quot;n&quot;</span>]) <span class="comment">/*...*/</span>; <span class="comment">// 比较两个值</span></div><div class="line"><span class="keywordflow">if</span> (document[<span class="stringliteral">&quot;hello&quot;</span>] == <span class="stringliteral">&quot;world&quot;</span>) <span class="comment">/*...*/</span>; <span class="comment">// 与字符串家面量作比较</span></div><div class="line"><span class="keywordflow">if</span> (document[<span class="stringliteral">&quot;i&quot;</span>] != 123) <span class="comment">/*...*/</span>; <span class="comment">// 与整数作比较</span></div><div class="line"><span class="keywordflow">if</span> (document[<span class="stringliteral">&quot;pi&quot;</span>] != 3.14) <span class="comment">/*...*/</span>; <span class="comment">// 与 double 作比较</span></div></div><!-- fragment --><p>Array/Object 顺序以它们的元素/成员作比较。当且仅当它们的整个子树相等,它们才当作相等。</p>
<p>注意,现时若一个 Object 含有重复命名的成员,它与任何 Object 作比较都总会返回 <code>false</code>。</p>
<h1><a class="anchor" id="CreateModifyValues"></a>
创建/修改值</h1>
@@ -272,43 +194,20 @@ Value 及 Document</h1>
<h2><a class="anchor" id="ChangeValueType"></a>
改变 Value 类型</h2>
<p>当使用默认构造函数创建一个 Value 或 Document,它的类型便会是 Null。要改变其类型,需调用 <code>SetXXX()</code> 或赋值操作,例如:</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d; <span class="comment">// Null</span></div>
-<div class="line">d.SetObject();</div>
-<div class="line"></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> v; <span class="comment">// Null</span></div>
-<div class="line">v.SetInt(10);</div>
-<div class="line">v = 10; <span class="comment">// 简写,和上面的相同</span></div>
-</div><!-- fragment --><h3>构造函数的各个重载</h3>
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d; <span class="comment">// Null</span></div><div class="line">d.SetObject();</div><div class="line"></div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> v; <span class="comment">// Null</span></div><div class="line">v.SetInt(10);</div><div class="line">v = 10; <span class="comment">// 简写,和上面的相同</span></div></div><!-- fragment --><h3>构造函数的各个重载</h3>
<p>几个类型也有重载构造函数:</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> b(<span class="keyword">true</span>); <span class="comment">// 调用 Value(bool)</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> i(-123); <span class="comment">// 调用 Value(int)</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> u(123u); <span class="comment">// 调用 Value(unsigned)</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> d(1.5); <span class="comment">// 调用 Value(double)</span></div>
-</div><!-- fragment --><p>要重建空 Object 或 Array,可在默认构造函数后使用 <code>SetObject()</code>/<code>SetArray()</code>,或一次性使用 <code>Value(Type)</code>:</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> o(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>);</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> a(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div>
-</div><!-- fragment --><h2><a class="anchor" id="MoveSemantics"></a>
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> b(<span class="keyword">true</span>); <span class="comment">// 调用 Value(bool)</span></div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> i(-123); <span class="comment">// 调用 Value(int)</span></div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> u(123u); <span class="comment">// 调用 Value(unsigned)</span></div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> d(1.5); <span class="comment">// 调用 Value(double)</span></div></div><!-- fragment --><p>要重建空 Object 或 Array,可在默认构造函数后使用 <code>SetObject()</code>/<code>SetArray()</code>,或一次性使用 <code>Value(Type)</code>:</p>
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> o(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>);</div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> a(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div></div><!-- fragment --><h2><a class="anchor" id="MoveSemantics"></a>
转移语义(Move Semantics)</h2>
<p>在设计 RapidJSON 时有一个非常特别的决定,就是 Value 赋值并不是把来源 Value 复制至目的 Value,而是把把来源 Value 转移(move)至目的 Value。例如:</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> a(123);</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> b(456);</div>
-<div class="line">b = a; <span class="comment">// a 变成 Null,b 变成数字 123。</span></div>
-</div><!-- fragment --><div class="image">
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> a(123);</div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> b(456);</div><div class="line">b = a; <span class="comment">// a 变成 Null,b 变成数字 123。</span></div></div><!-- fragment --><div class="image">
<img src="move1.png" alt="move1.png"/>
<div class="caption">
使用移动语义赋值。</div></div>
<p> 为什么?此语义有何优点?</p>
<p>最简单的答案就是性能。对于固定大小的 JSON 类型(Number、True、False、Null),复制它们是简单快捷。然而,对于可变大小的 JSON 类型(String、Array、Object),复制它们会产生大量开销,而且这些开销常常不被察觉。尤其是当我们需要创建临时 Object,把它复制至另一变量,然后再析构它。</p>
<p>例如,若使用正常 * 复制 * 语义:</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> o(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>);</div>
-<div class="line">{</div>
-<div class="line"> <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> contacts(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div>
-<div class="line"> <span class="comment">// 把元素加进 contacts 数组。</span></div>
-<div class="line"> <span class="comment">// ...</span></div>
-<div class="line"> o.AddMember(<span class="stringliteral">&quot;contacts&quot;</span>, contacts, d.GetAllocator()); <span class="comment">// 深度复制 contacts (可能有大量内存分配)</span></div>
-<div class="line"> <span class="comment">// 析构 contacts。</span></div>
-<div class="line">}</div>
-</div><!-- fragment --><div class="image">
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> o(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>);</div><div class="line">{</div><div class="line"> <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> contacts(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div><div class="line"> <span class="comment">// 把元素加进 contacts 数组。</span></div><div class="line"> <span class="comment">// ...</span></div><div class="line"> o.AddMember(<span class="stringliteral">&quot;contacts&quot;</span>, contacts, d.GetAllocator()); <span class="comment">// 深度复制 contacts (可能有大量内存分配)</span></div><div class="line"> <span class="comment">// 析构 contacts。</span></div><div class="line">}</div></div><!-- fragment --><div class="image">
<img src="move2.png" alt="move2.png"/>
<div class="caption">
复制语义产生大量的复制操作。</div></div>
@@ -316,14 +215,7 @@ Value 及 Document</h1>
<p>有一些方案可避免实质地复制这些数据,例如引用计数(reference counting)、垃圾回收(garbage collection, GC)。</p>
<p>为了使 RapidJSON 简单及快速,我们选择了对赋值采用 * 转移 * 语义。这方法与 <code>std::auto_ptr</code> 相似,都是在赋值时转移拥有权。转移快得多简单得多,只需要析构原来的 Value,把来源 <code>memcpy()</code> 至目标,最后把来源设置为 Null 类型。</p>
<p>因此,使用转移语义后,上面的例子变成:</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> o(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>);</div>
-<div class="line">{</div>
-<div class="line"> <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> contacts(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div>
-<div class="line"> <span class="comment">// adding elements to contacts array.</span></div>
-<div class="line"> o.AddMember(<span class="stringliteral">&quot;contacts&quot;</span>, contacts, d.GetAllocator()); <span class="comment">// 只需 memcpy() contacts 本身至新成员的 Value(16 字节)</span></div>
-<div class="line"> <span class="comment">// contacts 在这里变成 Null。它的析构是平凡的。</span></div>
-<div class="line">}</div>
-</div><!-- fragment --><div class="image">
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> o(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>);</div><div class="line">{</div><div class="line"> <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> contacts(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div><div class="line"> <span class="comment">// adding elements to contacts array.</span></div><div class="line"> o.AddMember(<span class="stringliteral">&quot;contacts&quot;</span>, contacts, d.GetAllocator()); <span class="comment">// 只需 memcpy() contacts 本身至新成员的 Value(16 字节)</span></div><div class="line"> <span class="comment">// contacts 在这里变成 Null。它的析构是平凡的。</span></div><div class="line">}</div></div><!-- fragment --><div class="image">
<img src="move3.png" alt="move3.png"/>
<div class="caption">
转移语义不需复制。</div></div>
@@ -331,12 +223,7 @@ Value 及 Document</h1>
<h3><a class="anchor" id="TemporaryValues"></a>
转移语义及临时值</h3>
<p>有时候,我们想直接构造一个 Value 并传递给一个“转移”函数(如 <code>PushBack()</code>、<code>AddMember()</code>)。由于临时对象是不能转换为正常的 Value 引用,我们加入了一个方便的 <code>Move()</code> 函数:</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> a(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div>
-<div class="line">Document::AllocatorType&amp; allocator = document.GetAllocator();</div>
-<div class="line"><span class="comment">// a.PushBack(Value(42), allocator); // 不能通过编译</span></div>
-<div class="line">a.PushBack(<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>().SetInt(42), allocator); <span class="comment">// fluent API</span></div>
-<div class="line">a.PushBack(<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>(42).Move(), allocator); <span class="comment">// 和上一行相同</span></div>
-</div><!-- fragment --><h2><a class="anchor" id="CreateString"></a>
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> a(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div><div class="line">Document::AllocatorType&amp; allocator = document.<a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>();</div><div class="line"><span class="comment">// a.PushBack(Value(42), allocator); // 不能通过编译</span></div><div class="line">a.PushBack(<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>().SetInt(42), allocator); <span class="comment">// fluent API</span></div><div class="line">a.PushBack(<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>(42).Move(), allocator); <span class="comment">// 和上一行相同</span></div></div><!-- fragment --><h2><a class="anchor" id="CreateString"></a>
创建 String</h2>
<p>RapidJSON 提供两个 String 的存储策略。</p>
<ol type="1">
@@ -346,29 +233,11 @@ Value 及 Document</h1>
<p>Copy-string 总是安全的,因为它拥有数据的克隆。Const-string 可用于存储字符串字面量,以及用于在 DOM 一节中将会提到的 in-situ 解析中。</p>
<p>为了让用户自定义内存分配方式,当一个操作可能需要内存分配时,RapidJSON 要求用户传递一个 allocator 实例作为 API 参数。此设计避免了在每个 Value 存储 allocator(或 document)的指针。</p>
<p>因此,当我们把一个 copy-string 赋值时, 调用含有 allocator 的 <code>SetString()</code> 重载函数:</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> document;</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> author;</div>
-<div class="line"><span class="keywordtype">char</span> buffer[10];</div>
-<div class="line"><span class="keywordtype">int</span> len = sprintf(buffer, <span class="stringliteral">&quot;%s %s&quot;</span>, <span class="stringliteral">&quot;Milo&quot;</span>, <span class="stringliteral">&quot;Yip&quot;</span>); <span class="comment">// 动态创建的字符串。</span></div>
-<div class="line">author.SetString(buffer, len, document.GetAllocator());</div>
-<div class="line">memset(buffer, 0, <span class="keyword">sizeof</span>(buffer));</div>
-<div class="line"><span class="comment">// 清空 buffer 后 author.GetString() 仍然包含 &quot;Milo Yip&quot;</span></div>
-</div><!-- fragment --><p>在此例子中,我们使用 <code>Document</code> 实例的 allocator。这是使用 RapidJSON 时常用的惯用法。但你也可以用其他 allocator 实例。</p>
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> document;</div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> author;</div><div class="line"><span class="keywordtype">char</span> buffer[10];</div><div class="line"><span class="keywordtype">int</span> len = sprintf(buffer, <span class="stringliteral">&quot;%s %s&quot;</span>, <span class="stringliteral">&quot;Milo&quot;</span>, <span class="stringliteral">&quot;Yip&quot;</span>); <span class="comment">// 动态创建的字符串。</span></div><div class="line">author.SetString(buffer, len, document.GetAllocator());</div><div class="line">memset(buffer, 0, <span class="keyword">sizeof</span>(buffer));</div><div class="line"><span class="comment">// 清空 buffer 后 author.GetString() 仍然包含 &quot;Milo Yip&quot;</span></div></div><!-- fragment --><p>在此例子中,我们使用 <code>Document</code> 实例的 allocator。这是使用 RapidJSON 时常用的惯用法。但你也可以用其他 allocator 实例。</p>
<p>另外,上面的 <code>SetString()</code> 需要长度参数。这个 API 能处理含有空字符的字符串。另一个 <code>SetString()</code> 重载函数没有长度参数,它假设输入是空字符结尾的,并会调用类似 <code>strlen()</code> 的函数去获取长度。</p>
<p>最后,对于字符串字面量或有安全生命周期的字符串,可以使用 const-string 版本的 <code>SetString()</code>,它没有 allocator 参数。对于字符串家面量(或字符数组常量),只需简单地传递字面量,又安全又高效:</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> s;</div>
-<div class="line">s.SetString(<span class="stringliteral">&quot;rapidjson&quot;</span>); <span class="comment">// 可包含空字符,长度在编译萁推导</span></div>
-<div class="line">s = <span class="stringliteral">&quot;rapidjson&quot;</span>; <span class="comment">// 上行的缩写</span></div>
-</div><!-- fragment --><p>对于字符指针,RapidJSON 需要作一个标记,代表它不复制也是安全的。可以使用 <code>StringRef</code> 函数:</p>
-<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span> * cstr = getenv(<span class="stringliteral">&quot;USER&quot;</span>);</div>
-<div class="line"><span class="keywordtype">size_t</span> cstr_len = ...; <span class="comment">// 如果有长度</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> s;</div>
-<div class="line"><span class="comment">// s.SetString(cstr); // 这不能通过编译</span></div>
-<div class="line">s.SetString(<a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(cstr)); <span class="comment">// 可以,假设它的生命周期安全,并且是以空字符结尾的</span></div>
-<div class="line">s = <a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(cstr); <span class="comment">// 上行的缩写</span></div>
-<div class="line">s.SetString(<a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(cstr, cstr_len));<span class="comment">// 更快,可处理空字符</span></div>
-<div class="line">s = <a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(cstr, cstr_len); <span class="comment">// 上行的缩写</span></div>
-</div><!-- fragment --><h2><a class="anchor" id="ModifyArray"></a>
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> s;</div><div class="line">s.SetString(<span class="stringliteral">&quot;rapidjson&quot;</span>); <span class="comment">// 可包含空字符,长度在编译萁推导</span></div><div class="line">s = <span class="stringliteral">&quot;rapidjson&quot;</span>; <span class="comment">// 上行的缩写</span></div></div><!-- fragment --><p>对于字符指针,RapidJSON 需要作一个标记,代表它不复制也是安全的。可以使用 <code>StringRef</code> 函数:</p>
+<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span> * cstr = getenv(<span class="stringliteral">&quot;USER&quot;</span>);</div><div class="line"><span class="keywordtype">size_t</span> cstr_len = ...; <span class="comment">// 如果有长度</span></div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> s;</div><div class="line"><span class="comment">// s.SetString(cstr); // 这不能通过编译</span></div><div class="line">s.SetString(<a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(cstr)); <span class="comment">// 可以,假设它的生命周期安全,并且是以空字符结尾的</span></div><div class="line">s = <a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(cstr); <span class="comment">// 上行的缩写</span></div><div class="line">s.SetString(<a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(cstr, cstr_len));<span class="comment">// 更快,可处理空字符</span></div><div class="line">s = <a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(cstr, cstr_len); <span class="comment">// 上行的缩写</span></div></div><!-- fragment --><h2><a class="anchor" id="ModifyArray"></a>
修改 Array</h2>
<p>Array 类型的 Value 提供与 <code>std::vector</code> 相似的 API。</p>
<ul>
@@ -382,24 +251,9 @@ Value 及 Document</h1>
</ul>
<p>注意,<code>Reserve(...)</code> 及 <code>PushBack(...)</code> 可能会为数组元素分配内存,所以需要一个 allocator。</p>
<p>以下是 <code>PushBack()</code> 的例子:</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> a(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div>
-<div class="line">Document::AllocatorType&amp; allocator = document.GetAllocator();</div>
-<div class="line"></div>
-<div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 5; i &lt;= 10; i++)</div>
-<div class="line"> a.PushBack(i, allocator); <span class="comment">// 可能需要调用 realloc() 所以需要 allocator</span></div>
-<div class="line"></div>
-<div class="line"><span class="comment">// 流畅接口(Fluent interface)</span></div>
-<div class="line">a.PushBack(<span class="stringliteral">&quot;Lua&quot;</span>, allocator).PushBack(<span class="stringliteral">&quot;Mio&quot;</span>, allocator);</div>
-</div><!-- fragment --><p>与 STL 不一样的是,<code>PushBack()</code>/<code>PopBack()</code> 返回 Array 本身的引用。这称为流畅接口(_fluent interface_)。</p>
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> a(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div><div class="line">Document::AllocatorType&amp; allocator = document.GetAllocator();</div><div class="line"></div><div class="line"><span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 5; i &lt;= 10; i++)</div><div class="line"> a.PushBack(i, allocator); <span class="comment">// 可能需要调用 realloc() 所以需要 allocator</span></div><div class="line"></div><div class="line"><span class="comment">// 流畅接口(Fluent interface)</span></div><div class="line">a.PushBack(<span class="stringliteral">&quot;Lua&quot;</span>, allocator).PushBack(<span class="stringliteral">&quot;Mio&quot;</span>, allocator);</div></div><!-- fragment --><p>与 STL 不一样的是,<code>PushBack()</code>/<code>PopBack()</code> 返回 Array 本身的引用。这称为流畅接口(_fluent interface_)。</p>
<p>如果你想在 Array 中加入一个非常量字符串,或是一个没有足够生命周期的字符串(见 <a href="#CreateString">Create String</a>),你需要使用 copy-string API 去创建一个 String。为了避免加入中间变量,可以就地使用一个 <a href="#TemporaryValues">临时值</a>:</p>
-<div class="fragment"><div class="line"><span class="comment">// 就地 Value 参数</span></div>
-<div class="line">contact.PushBack(<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>(<span class="stringliteral">&quot;copy&quot;</span>, document.GetAllocator()).Move(), <span class="comment">// copy string</span></div>
-<div class="line"> document.GetAllocator());</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// 显式 Value 参数</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> val(<span class="stringliteral">&quot;key&quot;</span>, document.GetAllocator()); <span class="comment">// copy string</span></div>
-<div class="line">contact.PushBack(val, document.GetAllocator());</div>
-</div><!-- fragment --><h2><a class="anchor" id="ModifyObject"></a>
+<div class="fragment"><div class="line"><span class="comment">// 就地 Value 参数</span></div><div class="line">contact.PushBack(<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>(<span class="stringliteral">&quot;copy&quot;</span>, document.GetAllocator()).Move(), <span class="comment">// copy string</span></div><div class="line"> document.GetAllocator());</div><div class="line"></div><div class="line"><span class="comment">// 显式 Value 参数</span></div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> val(<span class="stringliteral">&quot;key&quot;</span>, document.GetAllocator()); <span class="comment">// copy string</span></div><div class="line">contact.PushBack(val, document.GetAllocator());</div></div><!-- fragment --><h2><a class="anchor" id="ModifyObject"></a>
修改 Object</h2>
<p>Object 是键值对的集合。每个键必须为 String。要修改 Object,方法是增加或移除成员。以下的 API 用来增加城员:</p>
<ul>
@@ -408,21 +262,9 @@ Value 及 Document</h1>
<li><code>template &lt;typename T&gt; Value&amp; AddMember(StringRefType, T value, Allocator&amp;)</code></li>
</ul>
<p>以下是一个例子。</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> contact(kObject);</div>
-<div class="line">contact.AddMember(<span class="stringliteral">&quot;name&quot;</span>, <span class="stringliteral">&quot;Milo&quot;</span>, document.GetAllocator());</div>
-<div class="line">contact.AddMember(<span class="stringliteral">&quot;married&quot;</span>, <span class="keyword">true</span>, document.GetAllocator());</div>
-</div><!-- fragment --><p>使用 <code>StringRefType</code> 作为 name 参数的重载版本与字符串的 <code>SetString</code> 的接口相似。 这些重载是为了避免复制 <code>name</code> 字符串,因为 JSON object 中经常会使用常数键名。</p>
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> contact(kObject);</div><div class="line">contact.AddMember(<span class="stringliteral">&quot;name&quot;</span>, <span class="stringliteral">&quot;Milo&quot;</span>, document.GetAllocator());</div><div class="line">contact.AddMember(<span class="stringliteral">&quot;married&quot;</span>, <span class="keyword">true</span>, document.GetAllocator());</div></div><!-- fragment --><p>使用 <code>StringRefType</code> 作为 name 参数的重载版本与字符串的 <code>SetString</code> 的接口相似。 这些重载是为了避免复制 <code>name</code> 字符串,因为 JSON object 中经常会使用常数键名。</p>
<p>如果你需要从非常数字符串或生命周期不足的字符串创建键名(见 <a href="#CreateString">创建 String</a>),你需要使用 copy-string API。为了避免中间变量,可以就地使用 <a href="#TemporaryValues">临时值</a>:</p>
-<div class="fragment"><div class="line"><span class="comment">// 就地 Value 参数</span></div>
-<div class="line">contact.AddMember(<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>(<span class="stringliteral">&quot;copy&quot;</span>, document.GetAllocator()).Move(), <span class="comment">// copy string</span></div>
-<div class="line"> <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>().Move(), <span class="comment">// null value</span></div>
-<div class="line"> document.GetAllocator());</div>
-<div class="line"></div>
-<div class="line"><span class="comment">// 显式参数</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> key(<span class="stringliteral">&quot;key&quot;</span>, document.GetAllocator()); <span class="comment">// copy string name</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> val(42); <span class="comment">// 某 Value</span></div>
-<div class="line">contact.AddMember(key, val, document.GetAllocator());</div>
-</div><!-- fragment --><p>移除成员有几个选择:</p>
+<div class="fragment"><div class="line"><span class="comment">// 就地 Value 参数</span></div><div class="line">contact.AddMember(<a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>(<span class="stringliteral">&quot;copy&quot;</span>, document.GetAllocator()).Move(), <span class="comment">// copy string</span></div><div class="line"> <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>().Move(), <span class="comment">// null value</span></div><div class="line"> document.GetAllocator());</div><div class="line"></div><div class="line"><span class="comment">// 显式参数</span></div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> key(<span class="stringliteral">&quot;key&quot;</span>, document.GetAllocator()); <span class="comment">// copy string name</span></div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> val(42); <span class="comment">// 某 Value</span></div><div class="line">contact.AddMember(key, val, document.GetAllocator());</div></div><!-- fragment --><p>移除成员有几个选择:</p>
<ul>
<li><code>bool RemoveMember(const Ch* name)</code>:使用键名来移除成员(线性时间复杂度)。</li>
<li><code>bool RemoveMember(const Value&amp; name)</code>:除了 <code>name</code> 是一个 Value,和上一行相同。</li>
@@ -434,29 +276,10 @@ Value 及 Document</h1>
<h2><a class="anchor" id="DeepCopyValue"></a>
深复制 Value</h2>
<p>若我们真的要复制一个 DOM 树,我们可使用两个 APIs 作深复制:含 allocator 的构造函数及 <code>CopyFrom()</code>。</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div>
-<div class="line">Document::AllocatorType&amp; a = d.GetAllocator();</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> v1(<span class="stringliteral">&quot;foo&quot;</span>);</div>
-<div class="line"><span class="comment">// Value v2(v1); // 不容许</span></div>
-<div class="line"></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> v2(v1, a); <span class="comment">// 制造一个克隆</span></div>
-<div class="line">assert(v1.IsString()); <span class="comment">// v1 不变</span></div>
-<div class="line">d.SetArray().PushBack(v1, a).PushBack(v2, a);</div>
-<div class="line">assert(v1.IsNull() &amp;&amp; v2.IsNull()); <span class="comment">// 两个都转移动 d</span></div>
-<div class="line"></div>
-<div class="line">v2.CopyFrom(d, a); <span class="comment">// 把整个 document 复制至 v2</span></div>
-<div class="line">assert(d.IsArray() &amp;&amp; d.Size() == 2); <span class="comment">// d 不变</span></div>
-<div class="line">v1.SetObject().AddMember(<span class="stringliteral">&quot;array&quot;</span>, v2, a);</div>
-<div class="line">d.PushBack(v1, a);</div>
-</div><!-- fragment --><h2><a class="anchor" id="SwapValues"></a>
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a> d;</div><div class="line">Document::AllocatorType&amp; a = d.GetAllocator();</div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> v1(<span class="stringliteral">&quot;foo&quot;</span>);</div><div class="line"><span class="comment">// Value v2(v1); // 不容许</span></div><div class="line"></div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> v2(v1, a); <span class="comment">// 制造一个克隆</span></div><div class="line">assert(v1.IsString()); <span class="comment">// v1 不变</span></div><div class="line">d.SetArray().PushBack(v1, a).PushBack(v2, a);</div><div class="line">assert(v1.IsNull() &amp;&amp; v2.IsNull()); <span class="comment">// 两个都转移动 d</span></div><div class="line"></div><div class="line">v2.CopyFrom(d, a); <span class="comment">// 把整个 document 复制至 v2</span></div><div class="line">assert(d.IsArray() &amp;&amp; d.Size() == 2); <span class="comment">// d 不变</span></div><div class="line">v1.SetObject().AddMember(<span class="stringliteral">&quot;array&quot;</span>, v2, a);</div><div class="line">d.PushBack(v1, a);</div></div><!-- fragment --><h2><a class="anchor" id="SwapValues"></a>
交换 Value</h2>
<p>RapidJSON 也提供 <code>Swap()</code>。</p>
-<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> a(123);</div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> b(<span class="stringliteral">&quot;Hello&quot;</span>);</div>
-<div class="line">a.Swap(b);</div>
-<div class="line">assert(a.IsString());</div>
-<div class="line">assert(b.IsInt());</div>
-</div><!-- fragment --><p>无论两棵 DOM 树有多复杂,交换是很快的(常数时间)。</p>
+<div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> a(123);</div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> b(<span class="stringliteral">&quot;Hello&quot;</span>);</div><div class="line">a.Swap(b);</div><div class="line">assert(a.IsString());</div><div class="line">assert(b.IsInt());</div></div><!-- fragment --><p>无论两棵 DOM 树有多复杂,交换是很快的(常数时间)。</p>
<h1><a class="anchor" id="WhatsNext"></a>
下一部分</h1>
<p>本教程展示了如何询查及修改 DOM 树。RapidJSON 还有一个重要概念:</p>
diff --git a/zh-cn/memorybuffer_8h_source.html b/zh-cn/memorybuffer_8h_source.html
index 49f3a68e..1e66de72 100644
--- a/zh-cn/memorybuffer_8h_source.html
+++ b/zh-cn/memorybuffer_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/memorybuffer.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('memorybuffer_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,84 +81,14 @@ $(document).ready(function(){initNavTree('memorybuffer_8h_source.html','');});
<div class="title">memorybuffer.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_MEMORYBUFFER_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_MEMORYBUFFER_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;internal/stack.h&quot;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">//! Represents an in-memory output byte stream.</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> This class is mainly for being wrapped by EncodedOutputStream or AutoUTFOutputStream.</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> It is similar to FileWriteBuffer but the destination is an in-memory buffer instead of a file.</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> Differences between MemoryBuffer and StringBuffer:</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> 1. StringBuffer has Encoding but MemoryBuffer is only a byte buffer. </span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> 2. StringBuffer::GetString() returns a null-terminated string. MemoryBuffer::GetBuffer() returns a buffer without terminator.</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> \tparam Allocator type for allocating memory buffer.</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> \note implements Stream concept</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Allocator = CrtAllocator&gt;</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">struct </span>GenericMemoryBuffer {</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">char</span> Ch; <span class="comment">// byte</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; GenericMemoryBuffer(Allocator* allocator = 0, <span class="keywordtype">size_t</span> capacity = kDefaultCapacity) : stack_(allocator, capacity) {}</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> Put(Ch c) { *stack_.template Push&lt;Ch&gt;() = c; }</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">void</span> Flush() {}</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">void</span> Clear() { stack_.Clear(); }</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">void</span> ShrinkToFit() { stack_.ShrinkToFit(); }</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; Ch* Push(<span class="keywordtype">size_t</span> count) { <span class="keywordflow">return</span> stack_.template Push&lt;Ch&gt;(count); }</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">void</span> Pop(<span class="keywordtype">size_t</span> count) { stack_.template Pop&lt;Ch&gt;(count); }</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> Ch* GetBuffer()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> stack_.template Bottom&lt;Ch&gt;();</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">size_t</span> GetSize()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stack_.GetSize(); }</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultCapacity = 256;</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">mutable</span> internal::Stack&lt;Allocator&gt; stack_;</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;};</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">typedef</span> GenericMemoryBuffer&lt;&gt; MemoryBuffer;</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment">//! Implement specialized version of PutN() with memset() for better performance.</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;&gt;</div>
-<div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#aba27b0c8dcf724aa2b288a24fda0811b"> 64</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">PutN</a>(MemoryBuffer&amp; memoryBuffer, <span class="keywordtype">char</span> c, <span class="keywordtype">size_t</span> n) {</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; std::memset(memoryBuffer.stack_.Push&lt;<span class="keywordtype">char</span>&gt;(n), c, n * <span class="keyword">sizeof</span>(c));</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_MEMORYBUFFER_H_</span></div>
-<div class="ttc" id="namespacerapidjson_html_a1ac13bac5976fc06587e00fc0bcfb32a"><div class="ttname"><a href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">rapidjson::PutN</a></div><div class="ttdeci">void PutN(FileWriteStream &amp;stream, char c, size_t n)</div><div class="ttdoc">Implement specialized version of PutN() with memset() for better performance. </div><div class="ttdef"><b>Definition:</b> filewritestream.h:94</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_MEMORYBUFFER_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_MEMORYBUFFER_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;internal/stack.h&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">//! Represents an in-memory output byte stream.</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> This class is mainly for being wrapped by EncodedOutputStream or AutoUTFOutputStream.</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> It is similar to FileWriteBuffer but the destination is an in-memory buffer instead of a file.</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> Differences between MemoryBuffer and StringBuffer:</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> 1. StringBuffer has Encoding but MemoryBuffer is only a byte buffer. </span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> 2. StringBuffer::GetString() returns a null-terminated string. MemoryBuffer::GetBuffer() returns a buffer without terminator.</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> \tparam Allocator type for allocating memory buffer.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> \note implements Stream concept</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Allocator = CrtAllocator&gt;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">struct </span>GenericMemoryBuffer {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">char</span> Ch; <span class="comment">// byte</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; GenericMemoryBuffer(Allocator* allocator = 0, <span class="keywordtype">size_t</span> capacity = kDefaultCapacity) : stack_(allocator, capacity) {}</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">void</span> Put(Ch c) { *stack_.template Push&lt;Ch&gt;() = c; }</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">void</span> Flush() {}</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">void</span> Clear() { stack_.Clear(); }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keywordtype">void</span> ShrinkToFit() { stack_.ShrinkToFit(); }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; Ch* Push(<span class="keywordtype">size_t</span> count) { <span class="keywordflow">return</span> stack_.template Push&lt;Ch&gt;(count); }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordtype">void</span> Pop(<span class="keywordtype">size_t</span> count) { stack_.template Pop&lt;Ch&gt;(count); }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">const</span> Ch* GetBuffer()<span class="keyword"> const </span>{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> stack_.template Bottom&lt;Ch&gt;();</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">size_t</span> GetSize()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stack_.GetSize(); }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultCapacity = 256;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">mutable</span> internal::Stack&lt;Allocator&gt; stack_;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;};</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">typedef</span> GenericMemoryBuffer&lt;&gt; MemoryBuffer;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment">//! Implement specialized version of PutN() with memset() for better performance.</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#aba27b0c8dcf724aa2b288a24fda0811b"> 64</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">PutN</a>(MemoryBuffer&amp; memoryBuffer, <span class="keywordtype">char</span> c, <span class="keywordtype">size_t</span> n) {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; std::memset(memoryBuffer.stack_.Push&lt;<span class="keywordtype">char</span>&gt;(n), c, n * <span class="keyword">sizeof</span>(c));</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_MEMORYBUFFER_H_</span></div><div class="ttc" id="namespacerapidjson_html_a1ac13bac5976fc06587e00fc0bcfb32a"><div class="ttname"><a href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">rapidjson::PutN</a></div><div class="ttdeci">void PutN(FileWriteStream &amp;stream, char c, size_t n)</div><div class="ttdoc">Implement specialized version of PutN() with memset() for better performance. </div><div class="ttdef"><b>Definition:</b> filewritestream.h:94</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>memorybuffer.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>memorybuffer.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/memorystream_8h_source.html b/zh-cn/memorystream_8h_source.html
index f3514161..c72351a1 100644
--- a/zh-cn/memorystream_8h_source.html
+++ b/zh-cn/memorystream_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/memorystream.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('memorystream_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,78 +81,7 @@ $(document).ready(function(){initNavTree('memorystream_8h_source.html','');});
<div class="title">memorystream.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_MEMORYSTREAM_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_MEMORYSTREAM_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_OFF(unreachable-code)</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(missing-noreturn)</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">//! Represents an in-memory input byte stream.</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> This class is mainly for being wrapped by EncodedInputStream or AutoUTFInputStream.</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> It is similar to FileReadBuffer but the source is an in-memory buffer instead of a file.</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> Differences between MemoryStream and StringStream:</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> 1. StringStream has encoding but MemoryStream is a byte stream.</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> 2. MemoryStream needs size of the source buffer and the buffer don&#39;t need to be null terminated. StringStream assume null-terminated string as source.</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> 3. MemoryStream supports Peek4() for encoding detection. StringStream is specified with an encoding so it should not have Peek4().</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> \note implements Stream concept</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_memory_stream.html"> 40</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a> {</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">char</span> Ch; <span class="comment">// byte</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a>(<span class="keyword">const</span> Ch *src, <span class="keywordtype">size_t</span> size) : src_(src), begin_(src), end_(src + size), size_(size) {}</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(src_ == end_) ? <span class="charliteral">&#39;\0&#39;</span> : *src_; }</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; Ch Take() { <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(src_ == end_) ? <span class="charliteral">&#39;\0&#39;</span> : *src_++; }</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(src_ - begin_); }</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">void</span> Put(Ch) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">void</span> Flush() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// For encoding detection only.</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> Ch* Peek4()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> Tell() + 4 &lt;= size_ ? src_ : 0;</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
-<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_memory_stream.html#ac0b4da6016e5ba6241604fd4258fb722"> 59</a></span>&#160; <span class="keyword">const</span> Ch* <a class="code" href="structrapidjson_1_1_memory_stream.html#ac0b4da6016e5ba6241604fd4258fb722">src_</a>; <span class="comment">//!&lt; Current read position.</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_memory_stream.html#a1cc586e50fbfc0bd5994977b42243b93"> 60</a></span>&#160;<span class="comment"></span> <span class="keyword">const</span> Ch* <a class="code" href="structrapidjson_1_1_memory_stream.html#a1cc586e50fbfc0bd5994977b42243b93">begin_</a>; <span class="comment">//!&lt; Original head of the string.</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_memory_stream.html#a47f45298891e8156121b4017954fabe8"> 61</a></span>&#160;<span class="comment"></span> <span class="keyword">const</span> Ch* <a class="code" href="structrapidjson_1_1_memory_stream.html#a47f45298891e8156121b4017954fabe8">end_</a>; <span class="comment">//!&lt; End of stream.</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_memory_stream.html#a8c8437d59c32168a74226312d9e96ace"> 62</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="structrapidjson_1_1_memory_stream.html#a8c8437d59c32168a74226312d9e96ace">size_</a>; <span class="comment">//!&lt; Size of the stream.</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"></span>};</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_MEMORYBUFFER_H_</span></div>
-<div class="ttc" id="structrapidjson_1_1_memory_stream_html"><div class="ttname"><a href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></div><div class="ttdoc">Represents an in-memory input byte stream. </div><div class="ttdef"><b>Definition:</b> memorystream.h:40</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_MEMORYSTREAM_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_MEMORYSTREAM_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_OFF(unreachable-code)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(missing-noreturn)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">//! Represents an in-memory input byte stream.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> This class is mainly for being wrapped by EncodedInputStream or AutoUTFInputStream.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> It is similar to FileReadBuffer but the source is an in-memory buffer instead of a file.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> Differences between MemoryStream and StringStream:</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> 1. StringStream has encoding but MemoryStream is a byte stream.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> 2. MemoryStream needs size of the source buffer and the buffer don&#39;t need to be null terminated. StringStream assume null-terminated string as source.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> 3. MemoryStream supports Peek4() for encoding detection. StringStream is specified with an encoding so it should not have Peek4().</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> \note implements Stream concept</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_memory_stream.html"> 40</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a> {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">char</span> Ch; <span class="comment">// byte</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <a class="code" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a>(<span class="keyword">const</span> Ch *src, <span class="keywordtype">size_t</span> size) : src_(src), begin_(src), end_(src + size), size_(size) {}</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(src_ == end_) ? <span class="charliteral">&#39;\0&#39;</span> : *src_; }</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; Ch Take() { <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(src_ == end_) ? <span class="charliteral">&#39;\0&#39;</span> : *src_++; }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(src_ - begin_); }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">void</span> Put(Ch) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordtype">void</span> Flush() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="comment">// For encoding detection only.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> Ch* Peek4()<span class="keyword"> const </span>{</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> Tell() + 4 &lt;= size_ ? src_ : 0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_memory_stream.html#ac0b4da6016e5ba6241604fd4258fb722"> 59</a></span>&#160; <span class="keyword">const</span> Ch* <a class="code" href="structrapidjson_1_1_memory_stream.html#ac0b4da6016e5ba6241604fd4258fb722">src_</a>; <span class="comment">//!&lt; Current read position.</span></div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_memory_stream.html#a1cc586e50fbfc0bd5994977b42243b93"> 60</a></span>&#160;<span class="comment"></span> <span class="keyword">const</span> Ch* <a class="code" href="structrapidjson_1_1_memory_stream.html#a1cc586e50fbfc0bd5994977b42243b93">begin_</a>; <span class="comment">//!&lt; Original head of the string.</span></div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_memory_stream.html#a47f45298891e8156121b4017954fabe8"> 61</a></span>&#160;<span class="comment"></span> <span class="keyword">const</span> Ch* <a class="code" href="structrapidjson_1_1_memory_stream.html#a47f45298891e8156121b4017954fabe8">end_</a>; <span class="comment">//!&lt; End of stream.</span></div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_memory_stream.html#a8c8437d59c32168a74226312d9e96ace"> 62</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="structrapidjson_1_1_memory_stream.html#a8c8437d59c32168a74226312d9e96ace">size_</a>; <span class="comment">//!&lt; Size of the stream.</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"></span>};</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_MEMORYBUFFER_H_</span></div><div class="ttc" id="structrapidjson_1_1_memory_stream_html"><div class="ttname"><a href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></div><div class="ttdoc">Represents an in-memory input byte stream. </div><div class="ttdef"><b>Definition:</b> memorystream.h:40</div></div>
<div class="ttc" id="structrapidjson_1_1_memory_stream_html_a8c8437d59c32168a74226312d9e96ace"><div class="ttname"><a href="structrapidjson_1_1_memory_stream.html#a8c8437d59c32168a74226312d9e96ace">rapidjson::MemoryStream::size_</a></div><div class="ttdeci">size_t size_</div><div class="ttdoc">Size of the stream. </div><div class="ttdef"><b>Definition:</b> memorystream.h:62</div></div>
<div class="ttc" id="structrapidjson_1_1_memory_stream_html_a47f45298891e8156121b4017954fabe8"><div class="ttname"><a href="structrapidjson_1_1_memory_stream.html#a47f45298891e8156121b4017954fabe8">rapidjson::MemoryStream::end_</a></div><div class="ttdeci">const Ch * end_</div><div class="ttdoc">End of stream. </div><div class="ttdef"><b>Definition:</b> memorystream.h:61</div></div>
<div class="ttc" id="structrapidjson_1_1_memory_stream_html_a1cc586e50fbfc0bd5994977b42243b93"><div class="ttname"><a href="structrapidjson_1_1_memory_stream.html#a1cc586e50fbfc0bd5994977b42243b93">rapidjson::MemoryStream::begin_</a></div><div class="ttdeci">const Ch * begin_</div><div class="ttdoc">Original head of the string. </div><div class="ttdef"><b>Definition:</b> memorystream.h:60</div></div>
@@ -164,7 +94,7 @@ $(document).ready(function(){initNavTree('memorystream_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>memorystream.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>memorystream.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/meta_8h_source.html b/zh-cn/meta_8h_source.html
index ded7bc3f..020b424e 100644
--- a/zh-cn/meta_8h_source.html
+++ b/zh-cn/meta_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/internal/meta.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('meta_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,197 +81,16 @@ $(document).ready(function(){initNavTree('meta_8h_source.html','');});
<div class="title">meta.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_INTERNAL_META_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_INTERNAL_META_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if defined(_MSC_VER)</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_DIAG_OFF(6334)</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_TYPETRAITS</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">//@cond RAPIDJSON_INTERNAL</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">// Helper to wrap/convert arbitrary types to void, useful for arbitrary type matching</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>Void { <span class="keyword">typedef</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; };</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span><span class="comment">// BoolType, TrueType, FalseType</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Cond&gt; <span class="keyword">struct </span>BoolType {</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> = Cond;</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">typedef</span> BoolType <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;};</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">typedef</span> BoolType&lt;true&gt; TrueType;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">typedef</span> BoolType&lt;false&gt; FalseType;</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"></span><span class="comment">// SelectIf, BoolExpr, NotExpr, AndExpr, OrExpr</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> C&gt; <span class="keyword">struct </span>SelectIfImpl { <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2&gt; <span class="keyword">struct </span>Apply { <span class="keyword">typedef</span> T1 <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; }; };</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword">template</span> &lt;&gt; <span class="keyword">struct </span>SelectIfImpl&lt;false&gt; { <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2&gt; <span class="keyword">struct </span>Apply { <span class="keyword">typedef</span> T2 <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; }; };</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> C, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2&gt; <span class="keyword">struct </span>SelectIfCond : SelectIfImpl&lt;C&gt;::template Apply&lt;T1,T2&gt; {};</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> C, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2&gt; <span class="keyword">struct </span>SelectIf : SelectIfCond&lt;C::Value, T1, T2&gt; {};</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Cond1, <span class="keywordtype">bool</span> Cond2&gt; <span class="keyword">struct </span>AndExprCond : FalseType {};</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keyword">template</span> &lt;&gt; <span class="keyword">struct </span>AndExprCond&lt;true, true&gt; : TrueType {};</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Cond1, <span class="keywordtype">bool</span> Cond2&gt; <span class="keyword">struct </span>OrExprCond : TrueType {};</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keyword">template</span> &lt;&gt; <span class="keyword">struct </span>OrExprCond&lt;false, false&gt; : FalseType {};</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> C&gt; <span class="keyword">struct </span>BoolExpr : SelectIf&lt;C,TrueType,FalseType&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> C&gt; <span class="keyword">struct </span>NotExpr : SelectIf&lt;C,FalseType,TrueType&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> C1, <span class="keyword">typename</span> C2&gt; <span class="keyword">struct </span>AndExpr : AndExprCond&lt;C1::Value, C2::Value&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> C1, <span class="keyword">typename</span> C2&gt; <span class="keyword">struct </span>OrExpr : OrExprCond&lt;C1::Value, C2::Value&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"></span><span class="comment">// AddConst, MaybeAddConst, RemoveConst</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>AddConst { <span class="keyword">typedef</span> <span class="keyword">const</span> T <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; };</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Constify, <span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>MaybeAddConst : SelectIfCond&lt;Constify, const T, T&gt; {};</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>RemoveConst { <span class="keyword">typedef</span> T <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; };</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>RemoveConst&lt;const T&gt; { <span class="keyword">typedef</span> T <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; };</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"></span><span class="comment">// IsSame, IsConst, IsMoreConst, IsPointer</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt; <span class="keyword">struct </span>IsSame : FalseType {};</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IsSame&lt;T, T&gt; : TrueType {};</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IsConst : FalseType {};</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IsConst&lt;const T&gt; : TrueType {};</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> CT, <span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keyword">struct </span>IsMoreConst</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; : AndExpr&lt;IsSame&lt;typename RemoveConst&lt;CT&gt;::Type, typename RemoveConst&lt;T&gt;::Type&gt;,</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; BoolType&lt;IsConst&lt;CT&gt;::Value &gt;= IsConst&lt;T&gt;::Value&gt; &gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IsPointer : FalseType {};</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IsPointer&lt;T*&gt; : TrueType {};</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"></span><span class="comment">// IsBaseOf</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_TYPETRAITS</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> D&gt; <span class="keyword">struct </span>IsBaseOf</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; : BoolType&lt; ::std::is_base_of&lt;B,D&gt;::value&gt; {};</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor">#else // simplified version adopted from Boost</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> D&gt; <span class="keyword">struct </span>IsBaseOfImpl {</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(B) != 0);</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(D) != 0);</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">typedef</span> char (&amp;Yes)[1];</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">typedef</span> char (&amp;No) [2];</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">static</span> Yes Check(<span class="keyword">const</span> D*, T);</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">static</span> No Check(<span class="keyword">const</span> B*, <span class="keywordtype">int</span>);</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">struct </span>Host {</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">operator</span> <span class="keyword">const</span> B*() <span class="keyword">const</span>;</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">operator</span> <span class="keyword">const</span> D*();</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; };</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">enum</span> { <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> = (<span class="keyword">sizeof</span>(Check(Host(), 0)) == <span class="keyword">sizeof</span>(Yes)) };</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;};</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> D&gt; <span class="keyword">struct </span>IsBaseOf</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; : OrExpr&lt;IsSame&lt;B, D&gt;, BoolExpr&lt;IsBaseOfImpl&lt;B, D&gt; &gt; &gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_TYPETRAITS</span></div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"></span><span class="comment">// EnableIf / DisableIf</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Condition, <span class="keyword">typename</span> T = <span class="keywordtype">void</span>&gt; <span class="keyword">struct </span>EnableIfCond { <span class="keyword">typedef</span> T <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; };</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>EnableIfCond&lt;false, T&gt; { <span class="comment">/* empty */</span> };</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Condition, <span class="keyword">typename</span> T = <span class="keywordtype">void</span>&gt; <span class="keyword">struct </span>DisableIfCond { <span class="keyword">typedef</span> T <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; };</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>DisableIfCond&lt;true, T&gt; { <span class="comment">/* empty */</span> };</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Condition, <span class="keyword">typename</span> T = <span class="keywordtype">void</span>&gt;</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword">struct </span>EnableIf : EnableIfCond&lt;Condition::Value, T&gt; {};</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Condition, <span class="keyword">typename</span> T = <span class="keywordtype">void</span>&gt;</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="keyword">struct </span>DisableIf : DisableIfCond&lt;Condition::Value, T&gt; {};</div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment">// SFINAE helpers</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="keyword">struct </span>SfinaeTag {};</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>RemoveSfinaeTag;</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>RemoveSfinaeTag&lt;SfinaeTag&amp;(*)(T)&gt; { <span class="keyword">typedef</span> T <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; };</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="preprocessor">#define RAPIDJSON_REMOVEFPTR_(type) \</span></div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="preprocessor"> typename ::RAPIDJSON_NAMESPACE::internal::RemoveSfinaeTag \</span></div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="preprocessor"> &lt; ::RAPIDJSON_NAMESPACE::internal::SfinaeTag&amp;(*) type&gt;::Type</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="preprocessor">#define RAPIDJSON_ENABLEIF(cond) \</span></div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="preprocessor"> typename ::RAPIDJSON_NAMESPACE::internal::EnableIf \</span></div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="preprocessor"> &lt;RAPIDJSON_REMOVEFPTR_(cond)&gt;::Type * = NULL</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor">#define RAPIDJSON_DISABLEIF(cond) \</span></div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor"> typename ::RAPIDJSON_NAMESPACE::internal::DisableIf \</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor"> &lt;RAPIDJSON_REMOVEFPTR_(cond)&gt;::Type * = NULL</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor">#define RAPIDJSON_ENABLEIF_RETURN(cond,returntype) \</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor"> typename ::RAPIDJSON_NAMESPACE::internal::EnableIf \</span></div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor"> &lt;RAPIDJSON_REMOVEFPTR_(cond), \</span></div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor"> RAPIDJSON_REMOVEFPTR_(returntype)&gt;::Type</span></div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="preprocessor">#define RAPIDJSON_DISABLEIF_RETURN(cond,returntype) \</span></div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="preprocessor"> typename ::RAPIDJSON_NAMESPACE::internal::DisableIf \</span></div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="preprocessor"> &lt;RAPIDJSON_REMOVEFPTR_(cond), \</span></div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="preprocessor"> RAPIDJSON_REMOVEFPTR_(returntype)&gt;::Type</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment">//@endcond</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="preprocessor">#if defined(__GNUC__) || defined(_MSC_VER)</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_INTERNAL_META_H_</span></div>
-<div class="ttc" id="namespacerapidjson_html_aa65fc9fb381b2cbc54f98673eadd6505"><div class="ttname"><a href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">rapidjson::Value</a></div><div class="ttdeci">GenericValue&lt; UTF8&lt;&gt; &gt; Value</div><div class="ttdoc">GenericValue with UTF8 encoding. </div><div class="ttdef"><b>Definition:</b> document.h:2076</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_INTERNAL_META_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_INTERNAL_META_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if defined(_MSC_VER)</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_DIAG_OFF(6334)</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_TYPETRAITS</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">//@cond RAPIDJSON_INTERNAL</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">// Helper to wrap/convert arbitrary types to void, useful for arbitrary type matching</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>Void { <span class="keyword">typedef</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; };</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span><span class="comment">// BoolType, TrueType, FalseType</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Cond&gt; <span class="keyword">struct </span>BoolType {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> = Cond;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">typedef</span> BoolType <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;};</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">typedef</span> BoolType&lt;true&gt; TrueType;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">typedef</span> BoolType&lt;false&gt; FalseType;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"></span><span class="comment">// SelectIf, BoolExpr, NotExpr, AndExpr, OrExpr</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> C&gt; <span class="keyword">struct </span>SelectIfImpl { <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2&gt; <span class="keyword">struct </span>Apply { <span class="keyword">typedef</span> T1 <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; }; };</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword">template</span> &lt;&gt; <span class="keyword">struct </span>SelectIfImpl&lt;false&gt; { <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2&gt; <span class="keyword">struct </span>Apply { <span class="keyword">typedef</span> T2 <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; }; };</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> C, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2&gt; <span class="keyword">struct </span>SelectIfCond : SelectIfImpl&lt;C&gt;::template Apply&lt;T1,T2&gt; {};</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> C, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2&gt; <span class="keyword">struct </span>SelectIf : SelectIfCond&lt;C::Value, T1, T2&gt; {};</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Cond1, <span class="keywordtype">bool</span> Cond2&gt; <span class="keyword">struct </span>AndExprCond : FalseType {};</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keyword">template</span> &lt;&gt; <span class="keyword">struct </span>AndExprCond&lt;true, true&gt; : TrueType {};</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Cond1, <span class="keywordtype">bool</span> Cond2&gt; <span class="keyword">struct </span>OrExprCond : TrueType {};</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keyword">template</span> &lt;&gt; <span class="keyword">struct </span>OrExprCond&lt;false, false&gt; : FalseType {};</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> C&gt; <span class="keyword">struct </span>BoolExpr : SelectIf&lt;C,TrueType,FalseType&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> C&gt; <span class="keyword">struct </span>NotExpr : SelectIf&lt;C,FalseType,TrueType&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> C1, <span class="keyword">typename</span> C2&gt; <span class="keyword">struct </span>AndExpr : AndExprCond&lt;C1::Value, C2::Value&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> C1, <span class="keyword">typename</span> C2&gt; <span class="keyword">struct </span>OrExpr : OrExprCond&lt;C1::Value, C2::Value&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"></span><span class="comment">// AddConst, MaybeAddConst, RemoveConst</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>AddConst { <span class="keyword">typedef</span> <span class="keyword">const</span> T <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; };</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Constify, <span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>MaybeAddConst : SelectIfCond&lt;Constify, const T, T&gt; {};</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>RemoveConst { <span class="keyword">typedef</span> T <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; };</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>RemoveConst&lt;const T&gt; { <span class="keyword">typedef</span> T <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; };</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"></span><span class="comment">// IsSame, IsConst, IsMoreConst, IsPointer</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt; <span class="keyword">struct </span>IsSame : FalseType {};</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IsSame&lt;T, T&gt; : TrueType {};</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IsConst : FalseType {};</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IsConst&lt;const T&gt; : TrueType {};</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> CT, <span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="keyword">struct </span>IsMoreConst</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; : AndExpr&lt;IsSame&lt;typename RemoveConst&lt;CT&gt;::Type, typename RemoveConst&lt;T&gt;::Type&gt;,</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; BoolType&lt;IsConst&lt;CT&gt;::Value &gt;= IsConst&lt;T&gt;::Value&gt; &gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IsPointer : FalseType {};</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>IsPointer&lt;T*&gt; : TrueType {};</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"></span><span class="comment">// IsBaseOf</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_TYPETRAITS</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> D&gt; <span class="keyword">struct </span>IsBaseOf</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; : BoolType&lt; ::std::is_base_of&lt;B,D&gt;::value&gt; {};</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor">#else // simplified version adopted from Boost</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> D&gt; <span class="keyword">struct </span>IsBaseOfImpl {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(B) != 0);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a>(<span class="keyword">sizeof</span>(D) != 0);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keyword">typedef</span> char (&amp;Yes)[1];</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">typedef</span> char (&amp;No) [2];</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">static</span> Yes Check(<span class="keyword">const</span> D*, T);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">static</span> No Check(<span class="keyword">const</span> B*, <span class="keywordtype">int</span>);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">struct </span>Host {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">operator</span> <span class="keyword">const</span> B*() <span class="keyword">const</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">operator</span> <span class="keyword">const</span> D*();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; };</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">enum</span> { <a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> = (<span class="keyword">sizeof</span>(Check(Host(), 0)) == <span class="keyword">sizeof</span>(Yes)) };</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;};</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> B, <span class="keyword">typename</span> D&gt; <span class="keyword">struct </span>IsBaseOf</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; : OrExpr&lt;IsSame&lt;B, D&gt;, BoolExpr&lt;IsBaseOfImpl&lt;B, D&gt; &gt; &gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> {};</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_TYPETRAITS</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"></span><span class="comment">// EnableIf / DisableIf</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Condition, <span class="keyword">typename</span> T = <span class="keywordtype">void</span>&gt; <span class="keyword">struct </span>EnableIfCond { <span class="keyword">typedef</span> T <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; };</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>EnableIfCond&lt;false, T&gt; { <span class="comment">/* empty */</span> };</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> Condition, <span class="keyword">typename</span> T = <span class="keywordtype">void</span>&gt; <span class="keyword">struct </span>DisableIfCond { <span class="keyword">typedef</span> T <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; };</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>DisableIfCond&lt;true, T&gt; { <span class="comment">/* empty */</span> };</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Condition, <span class="keyword">typename</span> T = <span class="keywordtype">void</span>&gt;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword">struct </span>EnableIf : EnableIfCond&lt;Condition::Value, T&gt; {};</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Condition, <span class="keyword">typename</span> T = <span class="keywordtype">void</span>&gt;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="keyword">struct </span>DisableIf : DisableIfCond&lt;Condition::Value, T&gt; {};</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment">// SFINAE helpers</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="keyword">struct </span>SfinaeTag {};</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>RemoveSfinaeTag;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">struct </span>RemoveSfinaeTag&lt;SfinaeTag&amp;(*)(T)&gt; { <span class="keyword">typedef</span> T <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>; };</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="preprocessor">#define RAPIDJSON_REMOVEFPTR_(type) \</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="preprocessor"> typename ::RAPIDJSON_NAMESPACE::internal::RemoveSfinaeTag \</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="preprocessor"> &lt; ::RAPIDJSON_NAMESPACE::internal::SfinaeTag&amp;(*) type&gt;::Type</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="preprocessor">#define RAPIDJSON_ENABLEIF(cond) \</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="preprocessor"> typename ::RAPIDJSON_NAMESPACE::internal::EnableIf \</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="preprocessor"> &lt;RAPIDJSON_REMOVEFPTR_(cond)&gt;::Type * = NULL</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor">#define RAPIDJSON_DISABLEIF(cond) \</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="preprocessor"> typename ::RAPIDJSON_NAMESPACE::internal::DisableIf \</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="preprocessor"> &lt;RAPIDJSON_REMOVEFPTR_(cond)&gt;::Type * = NULL</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor">#define RAPIDJSON_ENABLEIF_RETURN(cond,returntype) \</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor"> typename ::RAPIDJSON_NAMESPACE::internal::EnableIf \</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor"> &lt;RAPIDJSON_REMOVEFPTR_(cond), \</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor"> RAPIDJSON_REMOVEFPTR_(returntype)&gt;::Type</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="preprocessor">#define RAPIDJSON_DISABLEIF_RETURN(cond,returntype) \</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="preprocessor"> typename ::RAPIDJSON_NAMESPACE::internal::DisableIf \</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="preprocessor"> &lt;RAPIDJSON_REMOVEFPTR_(cond), \</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="preprocessor"> RAPIDJSON_REMOVEFPTR_(returntype)&gt;::Type</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment">//@endcond</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="preprocessor">#if defined(__GNUC__) || defined(_MSC_VER)</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_INTERNAL_META_H_</span></div><div class="ttc" id="namespacerapidjson_html_aa65fc9fb381b2cbc54f98673eadd6505"><div class="ttname"><a href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">rapidjson::Value</a></div><div class="ttdeci">GenericValue&lt; UTF8&lt;&gt; &gt; Value</div><div class="ttdoc">GenericValue with UTF8 encoding </div><div class="ttdef"><b>Definition:</b> document.h:2076</div></div>
<div class="ttc" id="rapidjson_8h_html_af95188da1d8eb6d4b148fe9ce71cd7c4"><div class="ttname"><a href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4">RAPIDJSON_STATIC_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_STATIC_ASSERT(x)</div><div class="ttdoc">(Internal) macro to check for conditions at compile-time </div><div class="ttdef"><b>Definition:</b> rapidjson.h:450</div></div>
-<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
+<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5167ae66a3a40cb9e5e46c75b7477e81.html">internal</a></li><li class="navelem"><b>meta.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_8d7584a8244d286291cd37b99676a43b.html">internal</a></li><li class="navelem"><b>meta.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/modules.html b/zh-cn/modules.html
index 69cf0596..7fefc490 100644
--- a/zh-cn/modules.html
+++ b/zh-cn/modules.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 模块</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('modules.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/namespacemembers.html b/zh-cn/namespacemembers.html
index 97284e54..38854849 100644
--- a/zh-cn/namespacemembers.html
+++ b/zh-cn/namespacemembers.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 命名空间成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('namespacemembers.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,24 +79,24 @@ $(document).ready(function(){initNavTree('namespacemembers.html','');});
<div class="contents">
<div class="textblock">这里列出了所有文档化的命名空间成员,并附带其所属的文件:</div>
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
+<h3><a id="index_d"></a>- d -</h3><ul>
<li>Document
: <a class="el" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">rapidjson</a>
</li>
</ul>
-<h3><a class="anchor" id="index_g"></a>- g -</h3><ul>
+<h3><a id="index_g"></a>- g -</h3><ul>
<li>GetParseError_En()
: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">rapidjson</a>
</li>
<li>GetParseErrorFunc
-: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga4e77e464ec8abe1111ee581fc2cb00de">rapidjson</a>
+: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gac1bee7fdafeba5a85c27943fcde12882">rapidjson</a>
</li>
</ul>
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<h3><a id="index_i"></a>- i -</h3><ul>
<li>InsituStringStream
: <a class="el" href="namespacerapidjson.html#a64e957c8d9d7cd15b193ffc31410038e">rapidjson</a>
</li>
@@ -105,7 +106,7 @@ $(document).ready(function(){initNavTree('namespacemembers.html','');});
</ul>
-<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
+<h3><a id="index_k"></a>- k -</h3><ul>
<li>kArrayType
: <a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">rapidjson</a>
</li>
@@ -265,7 +266,7 @@ $(document).ready(function(){initNavTree('namespacemembers.html','');});
</ul>
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<h3><a id="index_p"></a>- p -</h3><ul>
<li>ParseErrorCode
: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">rapidjson</a>
</li>
@@ -293,14 +294,14 @@ $(document).ready(function(){initNavTree('namespacemembers.html','');});
</ul>
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
+<h3><a id="index_r"></a>- r -</h3><ul>
<li>Reader
: <a class="el" href="namespacerapidjson.html#ad5310edd1226f5b3ea82dc0d4d3740c6">rapidjson</a>
</li>
</ul>
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<h3><a id="index_s"></a>- s -</h3><ul>
<li>SchemaDocument
: <a class="el" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf">rapidjson</a>
</li>
@@ -322,28 +323,28 @@ $(document).ready(function(){initNavTree('namespacemembers.html','');});
</ul>
-<h3><a class="anchor" id="index_t"></a>- t -</h3><ul>
+<h3><a id="index_t"></a>- t -</h3><ul>
<li>Type
: <a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson</a>
</li>
</ul>
-<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<h3><a id="index_u"></a>- u -</h3><ul>
<li>UTFType
: <a class="el" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">rapidjson</a>
</li>
</ul>
-<h3><a class="anchor" id="index_v"></a>- v -</h3><ul>
+<h3><a id="index_v"></a>- v -</h3><ul>
<li>Value
: <a class="el" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">rapidjson</a>
</li>
</ul>
-<h3><a class="anchor" id="index_w"></a>- w -</h3><ul>
+<h3><a id="index_w"></a>- w -</h3><ul>
<li>WriteFlag
: <a class="el" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19">rapidjson</a>
</li>
diff --git a/zh-cn/namespacemembers_enum.html b/zh-cn/namespacemembers_enum.html
index 07ac35bb..c10f5b9f 100644
--- a/zh-cn/namespacemembers_enum.html
+++ b/zh-cn/namespacemembers_enum.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 命名空间成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('namespacemembers_enum.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/namespacemembers_eval.html b/zh-cn/namespacemembers_eval.html
index 28ed6117..8278e9b8 100644
--- a/zh-cn/namespacemembers_eval.html
+++ b/zh-cn/namespacemembers_eval.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 命名空间成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('namespacemembers_eval.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -78,7 +79,7 @@ $(document).ready(function(){initNavTree('namespacemembers_eval.html','');});
<div class="contents">
&#160;
-<h3><a class="anchor" id="index_k"></a>- k -</h3><ul>
+<h3><a id="index_k"></a>- k -</h3><ul>
<li>kArrayType
: <a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">rapidjson</a>
</li>
diff --git a/zh-cn/namespacemembers_func.html b/zh-cn/namespacemembers_func.html
index e7cb97b8..fb44bf7a 100644
--- a/zh-cn/namespacemembers_func.html
+++ b/zh-cn/namespacemembers_func.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 命名空间成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('namespacemembers_func.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/namespacemembers_type.html b/zh-cn/namespacemembers_type.html
index d5ba3909..05e3c72f 100644
--- a/zh-cn/namespacemembers_type.html
+++ b/zh-cn/namespacemembers_type.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 命名空间成员</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('namespacemembers_type.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -81,7 +82,7 @@ $(document).ready(function(){initNavTree('namespacemembers_type.html','');});
: <a class="el" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">rapidjson</a>
</li>
<li>GetParseErrorFunc
-: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga4e77e464ec8abe1111ee581fc2cb00de">rapidjson</a>
+: <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gac1bee7fdafeba5a85c27943fcde12882">rapidjson</a>
</li>
<li>InsituStringStream
: <a class="el" href="namespacerapidjson.html#a64e957c8d9d7cd15b193ffc31410038e">rapidjson</a>
diff --git a/zh-cn/namespacerapidjson.html b/zh-cn/namespacerapidjson.html
index e7eacc14..fca88a40 100644
--- a/zh-cn/namespacerapidjson.html
+++ b/zh-cn/namespacerapidjson.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson 命名空间参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('namespacerapidjson.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -196,7 +197,7 @@ $(document).ready(function(){initNavTree('namespacerapidjson.html','');});
<tr class="memdesc:structrapidjson_1_1_parse_result"><td class="mdescLeft">&#160;</td><td class="mdescRight">Result of parsing (wraps ParseErrorCode) <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">更多...</a><br /></td></tr>
<tr class="separator:structrapidjson_1_1_parse_result"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer. ">Writer</a> with indentation and spacing. <a href="classrapidjson_1_1_pretty_writer.html#details">更多...</a><br /></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_writer.html" title="JSON writer ">Writer</a> with indentation and spacing. <a href="classrapidjson_1_1_pretty_writer.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_schema_validating_reader.html">SchemaValidatingReader</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">A helper class for parsing with validation. <a href="classrapidjson_1_1_schema_validating_reader.html#details">更多...</a><br /></td></tr>
@@ -239,7 +240,7 @@ $(document).ready(function(){initNavTree('namespacerapidjson.html','');});
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">UTF-8 encoding. <a href="structrapidjson_1_1_u_t_f8.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classrapidjson_1_1_writer.html">Writer</a></td></tr>
-<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">JSON writer. <a href="classrapidjson_1_1_writer.html#details">更多...</a><br /></td></tr>
+<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">JSON writer <a href="classrapidjson_1_1_writer.html#details">更多...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
@@ -247,81 +248,62 @@ $(document).ready(function(){initNavTree('namespacerapidjson.html','');});
<tr class="memitem:a44eb33eaa523e36d466b1ced64b85c84"><td class="memItemLeft" align="right" valign="top">typedef unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a></td></tr>
<tr class="memdesc:a44eb33eaa523e36d466b1ced64b85c84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size type (for string lengths, array sizes, etc.) <a href="#a44eb33eaa523e36d466b1ced64b85c84">更多...</a><br /></td></tr>
<tr class="separator:a44eb33eaa523e36d466b1ced64b85c84"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa65fc9fb381b2cbc54f98673eadd6505"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa65fc9fb381b2cbc54f98673eadd6505"></a>
+<tr class="memitem:aa65fc9fb381b2cbc54f98673eadd6505"><td class="memItemLeft" align="right" valign="top"><a id="aa65fc9fb381b2cbc54f98673eadd6505"></a>
typedef <a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt;&gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a></td></tr>
-<tr class="memdesc:aa65fc9fb381b2cbc54f98673eadd6505"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> with <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding. <br /></td></tr>
+<tr class="memdesc:aa65fc9fb381b2cbc54f98673eadd6505"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> with <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding <br /></td></tr>
<tr class="separator:aa65fc9fb381b2cbc54f98673eadd6505"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ace11b5b575baf1cccd5ba5f8586dcdc8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ace11b5b575baf1cccd5ba5f8586dcdc8"></a>
+<tr class="memitem:ace11b5b575baf1cccd5ba5f8586dcdc8"><td class="memItemLeft" align="right" valign="top"><a id="ace11b5b575baf1cccd5ba5f8586dcdc8"></a>
typedef <a class="el" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt; <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt;&gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#ace11b5b575baf1cccd5ba5f8586dcdc8">Document</a></td></tr>
-<tr class="memdesc:ace11b5b575baf1cccd5ba5f8586dcdc8"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_generic_document.html" title="A document for parsing JSON text as DOM. ">GenericDocument</a> with <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding. <br /></td></tr>
+<tr class="memdesc:ace11b5b575baf1cccd5ba5f8586dcdc8"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_generic_document.html" title="A document for parsing JSON text as DOM. ">GenericDocument</a> with <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding <br /></td></tr>
<tr class="separator:ace11b5b575baf1cccd5ba5f8586dcdc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ga4e77e464ec8abe1111ee581fc2cb00de"><td class="memItemLeft" align="right" valign="top">typedef const <br class="typebreak" />
-<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a> *(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga4e77e464ec8abe1111ee581fc2cb00de">GetParseErrorFunc</a> )(<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a>)</td></tr>
-<tr class="memdesc:ga4e77e464ec8abe1111ee581fc2cb00de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function pointer type of GetParseError(). <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga4e77e464ec8abe1111ee581fc2cb00de">更多...</a><br /></td></tr>
-<tr class="separator:ga4e77e464ec8abe1111ee581fc2cb00de"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a021f77051e9f85188fc2f71ff5a15ebc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a021f77051e9f85188fc2f71ff5a15ebc"></a>
-typedef <a class="el" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream</a><br class="typebreak" />
-&lt; <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt; char &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a021f77051e9f85188fc2f71ff5a15ebc">StringStream</a></td></tr>
+<tr class="memitem:gac1bee7fdafeba5a85c27943fcde12882"><td class="memItemLeft" align="right" valign="top">typedef const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a> *(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gac1bee7fdafeba5a85c27943fcde12882">GetParseErrorFunc</a>) (<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a>)</td></tr>
+<tr class="memdesc:gac1bee7fdafeba5a85c27943fcde12882"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function pointer type of GetParseError(). <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gac1bee7fdafeba5a85c27943fcde12882">更多...</a><br /></td></tr>
+<tr class="separator:gac1bee7fdafeba5a85c27943fcde12882"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a021f77051e9f85188fc2f71ff5a15ebc"><td class="memItemLeft" align="right" valign="top"><a id="a021f77051e9f85188fc2f71ff5a15ebc"></a>
+typedef <a class="el" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream</a>&lt; <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt; char &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a021f77051e9f85188fc2f71ff5a15ebc">StringStream</a></td></tr>
<tr class="memdesc:a021f77051e9f85188fc2f71ff5a15ebc"><td class="mdescLeft">&#160;</td><td class="mdescRight">String stream with <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding. <br /></td></tr>
<tr class="separator:a021f77051e9f85188fc2f71ff5a15ebc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a64e957c8d9d7cd15b193ffc31410038e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a64e957c8d9d7cd15b193ffc31410038e"></a>
-typedef <br class="typebreak" />
-<a class="el" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream</a><br class="typebreak" />
-&lt; <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt; char &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a64e957c8d9d7cd15b193ffc31410038e">InsituStringStream</a></td></tr>
+<tr class="memitem:a64e957c8d9d7cd15b193ffc31410038e"><td class="memItemLeft" align="right" valign="top"><a id="a64e957c8d9d7cd15b193ffc31410038e"></a>
+typedef <a class="el" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream</a>&lt; <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt; char &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a64e957c8d9d7cd15b193ffc31410038e">InsituStringStream</a></td></tr>
<tr class="memdesc:a64e957c8d9d7cd15b193ffc31410038e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Insitu string stream with <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding. <br /></td></tr>
<tr class="separator:a64e957c8d9d7cd15b193ffc31410038e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac0765ea91f41539645c4b78689d03f21"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0765ea91f41539645c4b78689d03f21"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a><br class="typebreak" />
-&lt; <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt; char &gt;, <a class="el" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21">StringBuffer</a></td></tr>
-<tr class="memdesc:ac0765ea91f41539645c4b78689d03f21"><td class="mdescLeft">&#160;</td><td class="mdescRight">String buffer with <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding. <br /></td></tr>
+<tr class="memitem:ac0765ea91f41539645c4b78689d03f21"><td class="memItemLeft" align="right" valign="top"><a id="ac0765ea91f41539645c4b78689d03f21"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>&lt; <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt; char &gt;, <a class="el" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21">StringBuffer</a></td></tr>
+<tr class="memdesc:ac0765ea91f41539645c4b78689d03f21"><td class="mdescLeft">&#160;</td><td class="mdescRight">String buffer with <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding <br /></td></tr>
<tr class="separator:ac0765ea91f41539645c4b78689d03f21"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acb643b9055e7988f4cb89ce4f7e6b115"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb643b9055e7988f4cb89ce4f7e6b115"></a>
-typedef <a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">GenericMemoryBuffer</a><br class="typebreak" />
-&lt; <a class="el" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>MemoryBuffer</b></td></tr>
+<tr class="memitem:acb643b9055e7988f4cb89ce4f7e6b115"><td class="memItemLeft" align="right" valign="top"><a id="acb643b9055e7988f4cb89ce4f7e6b115"></a>
+typedef <a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">GenericMemoryBuffer</a>&lt; <a class="el" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>MemoryBuffer</b></td></tr>
<tr class="separator:acb643b9055e7988f4cb89ce4f7e6b115"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad5310edd1226f5b3ea82dc0d4d3740c6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5310edd1226f5b3ea82dc0d4d3740c6"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_reader.html">GenericReader</a>&lt; <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a><br class="typebreak" />
-&lt; char &gt;, <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt; char &gt;<br class="typebreak" />
-, <a class="el" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#ad5310edd1226f5b3ea82dc0d4d3740c6">Reader</a></td></tr>
+<tr class="memitem:ad5310edd1226f5b3ea82dc0d4d3740c6"><td class="memItemLeft" align="right" valign="top"><a id="ad5310edd1226f5b3ea82dc0d4d3740c6"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_reader.html">GenericReader</a>&lt; <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt; char &gt;, <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt; char &gt;, <a class="el" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#ad5310edd1226f5b3ea82dc0d4d3740c6">Reader</a></td></tr>
<tr class="memdesc:ad5310edd1226f5b3ea82dc0d4d3740c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reader with <a class="el" href="structrapidjson_1_1_u_t_f8.html" title="UTF-8 encoding. ">UTF8</a> encoding and default allocator. <br /></td></tr>
<tr class="separator:ad5310edd1226f5b3ea82dc0d4d3740c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a080910f74d2f5046e6724280159cf374"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a080910f74d2f5046e6724280159cf374"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; <a class="el" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>, <br class="typebreak" />
-<a class="el" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a></td></tr>
+<tr class="memitem:a080910f74d2f5046e6724280159cf374"><td class="memItemLeft" align="right" valign="top"><a id="a080910f74d2f5046e6724280159cf374"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; <a class="el" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>, <a class="el" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a></td></tr>
<tr class="memdesc:a080910f74d2f5046e6724280159cf374"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_generic_pointer.html" title="Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator. ">GenericPointer</a> for Value (UTF-8, default allocator). <br /></td></tr>
<tr class="separator:a080910f74d2f5046e6724280159cf374"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a52bbb5d64d1319495089e1713a0653cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a52bbb5d64d1319495089e1713a0653cf"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a><br class="typebreak" />
-&lt; <a class="el" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>, <a class="el" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf">SchemaDocument</a></td></tr>
+<tr class="memitem:a52bbb5d64d1319495089e1713a0653cf"><td class="memItemLeft" align="right" valign="top"><a id="a52bbb5d64d1319495089e1713a0653cf"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>&lt; <a class="el" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a>, <a class="el" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf">SchemaDocument</a></td></tr>
<tr class="memdesc:a52bbb5d64d1319495089e1713a0653cf"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_generic_schema_document.html" title="JSON schema document. ">GenericSchemaDocument</a> using Value type. <br /></td></tr>
<tr class="separator:a52bbb5d64d1319495089e1713a0653cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af91eb8eea47b79d75b23e29fa9c0abb5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af91eb8eea47b79d75b23e29fa9c0abb5"></a>
-typedef <br class="typebreak" />
-<a class="el" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IGenericRemoteSchemaDocumentProvider</a><br class="typebreak" />
-&lt; <a class="el" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf">SchemaDocument</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#af91eb8eea47b79d75b23e29fa9c0abb5">IRemoteSchemaDocumentProvider</a></td></tr>
+<tr class="memitem:af91eb8eea47b79d75b23e29fa9c0abb5"><td class="memItemLeft" align="right" valign="top"><a id="af91eb8eea47b79d75b23e29fa9c0abb5"></a>
+typedef <a class="el" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IGenericRemoteSchemaDocumentProvider</a>&lt; <a class="el" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf">SchemaDocument</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#af91eb8eea47b79d75b23e29fa9c0abb5">IRemoteSchemaDocumentProvider</a></td></tr>
<tr class="memdesc:af91eb8eea47b79d75b23e29fa9c0abb5"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IGenericRemoteSchemaDocumentProvider</a> using SchemaDocument. <br /></td></tr>
<tr class="separator:af91eb8eea47b79d75b23e29fa9c0abb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a38dbb50c156f67adc0a70548d5572ccf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38dbb50c156f67adc0a70548d5572ccf"></a>
-typedef <a class="el" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator</a><br class="typebreak" />
-&lt; <a class="el" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf">SchemaDocument</a>, <br class="typebreak" />
-<a class="el" href="structrapidjson_1_1_base_reader_handler.html">BaseReaderHandler</a>&lt; <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt; char &gt;<br class="typebreak" />
-, void &gt;, <a class="el" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>SchemaValidator</b></td></tr>
+<tr class="memitem:a38dbb50c156f67adc0a70548d5572ccf"><td class="memItemLeft" align="right" valign="top"><a id="a38dbb50c156f67adc0a70548d5572ccf"></a>
+typedef <a class="el" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator</a>&lt; <a class="el" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf">SchemaDocument</a>, <a class="el" href="structrapidjson_1_1_base_reader_handler.html">BaseReaderHandler</a>&lt; <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt; char &gt;, void &gt;, <a class="el" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>SchemaValidator</b></td></tr>
<tr class="separator:a38dbb50c156f67adc0a70548d5572ccf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4cb54f68bd71aed41b1b26137a7dab84"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4cb54f68bd71aed41b1b26137a7dab84"></a>
-typedef <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a><br class="typebreak" />
-&lt; std::istream &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IStreamWrapper</b></td></tr>
+<tr class="memitem:a4cb54f68bd71aed41b1b26137a7dab84"><td class="memItemLeft" align="right" valign="top"><a id="a4cb54f68bd71aed41b1b26137a7dab84"></a>
+typedef <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a>&lt; std::istream &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>IStreamWrapper</b></td></tr>
<tr class="separator:a4cb54f68bd71aed41b1b26137a7dab84"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a65a9e5d58bff23a6c446cc7722080320"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65a9e5d58bff23a6c446cc7722080320"></a>
-typedef <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a><br class="typebreak" />
-&lt; std::wistream &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>WIStreamWrapper</b></td></tr>
+<tr class="memitem:a65a9e5d58bff23a6c446cc7722080320"><td class="memItemLeft" align="right" valign="top"><a id="a65a9e5d58bff23a6c446cc7722080320"></a>
+typedef <a class="el" href="classrapidjson_1_1_basic_i_stream_wrapper.html">BasicIStreamWrapper</a>&lt; std::wistream &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>WIStreamWrapper</b></td></tr>
<tr class="separator:a65a9e5d58bff23a6c446cc7722080320"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a15f55e221e1d336afab91cc69c258187"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15f55e221e1d336afab91cc69c258187"></a>
-typedef <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a><br class="typebreak" />
-&lt; std::ostream &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>OStreamWrapper</b></td></tr>
+<tr class="memitem:a15f55e221e1d336afab91cc69c258187"><td class="memItemLeft" align="right" valign="top"><a id="a15f55e221e1d336afab91cc69c258187"></a>
+typedef <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a>&lt; std::ostream &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>OStreamWrapper</b></td></tr>
<tr class="separator:a15f55e221e1d336afab91cc69c258187"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aed3cb4533d7293644a01ec707cf8282d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aed3cb4533d7293644a01ec707cf8282d"></a>
-typedef <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a><br class="typebreak" />
-&lt; std::wostream &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>WOStreamWrapper</b></td></tr>
+<tr class="memitem:aed3cb4533d7293644a01ec707cf8282d"><td class="memItemLeft" align="right" valign="top"><a id="aed3cb4533d7293644a01ec707cf8282d"></a>
+typedef <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a>&lt; std::wostream &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>WOStreamWrapper</b></td></tr>
<tr class="separator:aed3cb4533d7293644a01ec707cf8282d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
@@ -336,8 +318,8 @@ typedef <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">Basi
<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a> = 5,
<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a> = 6
<br />
- }</td></tr>
-<tr class="memdesc:ae79a4751c1c460ff0de5ecc07874f3e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of JSON value. <a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">更多...</a><br /></td></tr>
+ }<tr class="memdesc:ae79a4751c1c460ff0de5ecc07874f3e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of JSON value <a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">更多...</a><br /></td></tr>
+</td></tr>
<tr class="separator:ae79a4751c1c460ff0de5ecc07874f3e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4aacabc0f8cea1cd628f466d890773eb"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">UTFType</a> { <br />
&#160;&#160;<a class="el" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81">kUTF8</a> = 0,
@@ -347,8 +329,8 @@ typedef <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">Basi
<br />
&#160;&#160;<a class="el" href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f">kUTF32BE</a> = 4
<br />
- }</td></tr>
-<tr class="memdesc:a4aacabc0f8cea1cd628f466d890773eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Runtime-specified UTF encoding type of a stream. <a href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">更多...</a><br /></td></tr>
+ }<tr class="memdesc:a4aacabc0f8cea1cd628f466d890773eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Runtime-specified UTF encoding type of a stream. <a href="namespacerapidjson.html#a4aacabc0f8cea1cd628f466d890773eb">更多...</a><br /></td></tr>
+</td></tr>
<tr class="separator:a4aacabc0f8cea1cd628f466d890773eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7d3acf640886b1f2552dc8c4cd6dea60"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> { <br />
&#160;&#160;<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a86a60b723dca32df5debab2c3db4235f">kParseErrorNone</a> = 0,
@@ -374,8 +356,8 @@ typedef <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">Basi
&#160;&#160;<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>,
<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24">kParseErrorUnspecificSyntaxError</a>
<br />
- }</td></tr>
-<tr class="memdesc:ga7d3acf640886b1f2552dc8c4cd6dea60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error code of parsing. <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">更多...</a><br /></td></tr>
+ }<tr class="memdesc:ga7d3acf640886b1f2552dc8c4cd6dea60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error code of parsing. <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">更多...</a><br /></td></tr>
+</td></tr>
<tr class="separator:ga7d3acf640886b1f2552dc8c4cd6dea60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gade540ee4cc2a416c23b8ee2c12393c7b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b">PointerParseErrorCode</a> { <br />
&#160;&#160;<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a> = 0,
@@ -385,13 +367,13 @@ typedef <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">Basi
<br />
&#160;&#160;<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7bae244a98f53279fda5a750f847b81c54f">kPointerParseErrorCharacterMustPercentEncode</a>
<br />
- }</td></tr>
-<tr class="memdesc:gade540ee4cc2a416c23b8ee2c12393c7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error code of parsing. <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b">更多...</a><br /></td></tr>
+ }<tr class="memdesc:gade540ee4cc2a416c23b8ee2c12393c7b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error code of parsing. <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b">更多...</a><br /></td></tr>
+</td></tr>
<tr class="separator:gade540ee4cc2a416c23b8ee2c12393c7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a084b31753ef2edefdeca8a5374eccc4b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4b">PrettyFormatOptions</a> { <a class="el" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba8164b0d4993439856171585b9cf3adc0">kFormatDefault</a> = 0,
<a class="el" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba64b0f8a37ab3125118682046ff06500f">kFormatSingleLineArray</a> = 1
- }</td></tr>
-<tr class="memdesc:a084b31753ef2edefdeca8a5374eccc4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Combination of PrettyWriter format flags. <a href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4b">更多...</a><br /></td></tr>
+ }<tr class="memdesc:a084b31753ef2edefdeca8a5374eccc4b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Combination of PrettyWriter format flags. <a href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4b">更多...</a><br /></td></tr>
+</td></tr>
<tr class="separator:a084b31753ef2edefdeca8a5374eccc4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81379eb4e94a0386d71d15fda882ebc9"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9">ParseFlag</a> { <br />
&#160;&#160;<a class="el" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af2c7fa21e9e7656e467bd71079ac8fb0">kParseNoFlags</a> = 0,
@@ -408,32 +390,32 @@ typedef <a class="el" href="classrapidjson_1_1_basic_o_stream_wrapper.html">Basi
<a class="el" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a857894ab51cafa62956e9c9f0dafc4d8">kParseNanAndInfFlag</a> = 256,
<a class="el" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a5640cb00db7814b7f22be3683dda9835">kParseDefaultFlags</a> = RAPIDJSON_PARSE_DEFAULT_FLAGS
<br />
- }</td></tr>
-<tr class="memdesc:a81379eb4e94a0386d71d15fda882ebc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Combination of parseFlags. <a href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9">更多...</a><br /></td></tr>
+ }<tr class="memdesc:a81379eb4e94a0386d71d15fda882ebc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Combination of parseFlags <a href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9">更多...</a><br /></td></tr>
+</td></tr>
<tr class="separator:a81379eb4e94a0386d71d15fda882ebc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad28b1de6aee37e92fc31792dd6dd6b19"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19">WriteFlag</a> { <a class="el" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19ae971aa1fc0ae64c8f3d2b47fd802846a">kWriteNoFlags</a> = 0,
<a class="el" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19ac1b5e17278b060e9e866df075c104c10">kWriteValidateEncodingFlag</a> = 1,
<a class="el" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19a3adbca1d31ad845ff4e9d742280cce39">kWriteNanAndInfFlag</a> = 2,
<a class="el" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19a5b5ca665afdfa828a74ae5755c67a226">kWriteDefaultFlags</a> = RAPIDJSON_WRITE_DEFAULT_FLAGS
- }</td></tr>
-<tr class="memdesc:ad28b1de6aee37e92fc31792dd6dd6b19"><td class="mdescLeft">&#160;</td><td class="mdescRight">Combination of writeFlags. <a href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19">更多...</a><br /></td></tr>
+ }<tr class="memdesc:ad28b1de6aee37e92fc31792dd6dd6b19"><td class="mdescLeft">&#160;</td><td class="mdescRight">Combination of writeFlags <a href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19">更多...</a><br /></td></tr>
+</td></tr>
<tr class="separator:ad28b1de6aee37e92fc31792dd6dd6b19"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
函数</h2></td></tr>
<tr class="memitem:aa6b9fd9f6aa49405a574c362ba9af6b5"><td class="memTemplParams" colspan="2">template&lt;typename CharType &gt; </td></tr>
<tr class="memitem:aa6b9fd9f6aa49405a574c362ba9af6b5"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>&lt; CharType &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a> (const CharType *str)</td></tr>
-<tr class="memdesc:aa6b9fd9f6aa49405a574c362ba9af6b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a character pointer as constant string. <a href="#aa6b9fd9f6aa49405a574c362ba9af6b5">更多...</a><br /></td></tr>
+<tr class="memdesc:aa6b9fd9f6aa49405a574c362ba9af6b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a character pointer as constant string <a href="#aa6b9fd9f6aa49405a574c362ba9af6b5">更多...</a><br /></td></tr>
<tr class="separator:aa6b9fd9f6aa49405a574c362ba9af6b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a578c51ab574a50a9c760b9da7c7562f2"><td class="memTemplParams" colspan="2">template&lt;typename CharType &gt; </td></tr>
<tr class="memitem:a578c51ab574a50a9c760b9da7c7562f2"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>&lt; CharType &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a578c51ab574a50a9c760b9da7c7562f2">StringRef</a> (const CharType *str, size_t length)</td></tr>
-<tr class="memdesc:a578c51ab574a50a9c760b9da7c7562f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a character pointer as constant string. <a href="#a578c51ab574a50a9c760b9da7c7562f2">更多...</a><br /></td></tr>
+<tr class="memdesc:a578c51ab574a50a9c760b9da7c7562f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a character pointer as constant string <a href="#a578c51ab574a50a9c760b9da7c7562f2">更多...</a><br /></td></tr>
<tr class="separator:a578c51ab574a50a9c760b9da7c7562f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af94951529a5d51e8c4e6e770bb707c1f"><td class="memTemplParams" colspan="2">template&lt;typename CharType &gt; </td></tr>
<tr class="memitem:af94951529a5d51e8c4e6e770bb707c1f"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>&lt; CharType &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a> (const std::basic_string&lt; CharType &gt; &amp;str)</td></tr>
-<tr class="memdesc:af94951529a5d51e8c4e6e770bb707c1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a string object as constant string. <a href="#af94951529a5d51e8c4e6e770bb707c1f">更多...</a><br /></td></tr>
+<tr class="memdesc:af94951529a5d51e8c4e6e770bb707c1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a string object as constant string <a href="#af94951529a5d51e8c4e6e770bb707c1f">更多...</a><br /></td></tr>
<tr class="separator:af94951529a5d51e8c4e6e770bb707c1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0a774dcffe8ae07686f459ae017d2f20"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0a774dcffe8ae07686f459ae017d2f20"></a>
+<tr class="memitem:a0a774dcffe8ae07686f459ae017d2f20"><td class="memTemplParams" colspan="2"><a id="a0a774dcffe8ae07686f459ae017d2f20"></a>
template&lt;typename Stream &gt; </td></tr>
<tr class="memitem:a0a774dcffe8ae07686f459ae017d2f20"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a> (<a class="el" href="classrapidjson_1_1_stream.html">Stream</a> &amp;stream, typename Stream::Ch c)</td></tr>
<tr class="memdesc:a0a774dcffe8ae07686f459ae017d2f20"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write character to a stream, presuming buffer is reserved. <br /></td></tr>
@@ -441,12 +423,12 @@ template&lt;typename Stream &gt; </td></tr>
<tr class="memitem:gabdaf1a7a4db30fb0e3d927fdf0fabe79"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c">RAPIDJSON_ERROR_CHARTYPE</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">GetParseError_En</a> (<a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> parseErrorCode)</td></tr>
<tr class="memdesc:gabdaf1a7a4db30fb0e3d927fdf0fabe79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps error code of parsing into error message. <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79">更多...</a><br /></td></tr>
<tr class="separator:gabdaf1a7a4db30fb0e3d927fdf0fabe79"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1ac13bac5976fc06587e00fc0bcfb32a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1ac13bac5976fc06587e00fc0bcfb32a"></a>
+<tr class="memitem:a1ac13bac5976fc06587e00fc0bcfb32a"><td class="memTemplParams" colspan="2"><a id="a1ac13bac5976fc06587e00fc0bcfb32a"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a1ac13bac5976fc06587e00fc0bcfb32a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">PutN</a> (<a class="el" href="classrapidjson_1_1_file_write_stream.html">FileWriteStream</a> &amp;stream, char c, size_t n)</td></tr>
<tr class="memdesc:a1ac13bac5976fc06587e00fc0bcfb32a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implement specialized version of <a class="el" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a" title="Implement specialized version of PutN() with memset() for better performance. ">PutN()</a> with memset() for better performance. <br /></td></tr>
<tr class="separator:a1ac13bac5976fc06587e00fc0bcfb32a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aba27b0c8dcf724aa2b288a24fda0811b"><td class="memTemplParams" colspan="2"><a class="anchor" id="aba27b0c8dcf724aa2b288a24fda0811b"></a>
+<tr class="memitem:aba27b0c8dcf724aa2b288a24fda0811b"><td class="memTemplParams" colspan="2"><a id="aba27b0c8dcf724aa2b288a24fda0811b"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:aba27b0c8dcf724aa2b288a24fda0811b"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#aba27b0c8dcf724aa2b288a24fda0811b">PutN</a> (<a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">MemoryBuffer</a> &amp;memoryBuffer, char c, size_t n)</td></tr>
<tr class="memdesc:aba27b0c8dcf724aa2b288a24fda0811b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implement specialized version of <a class="el" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a" title="Implement specialized version of PutN() with memset() for better performance. ">PutN()</a> with memset() for better performance. <br /></td></tr>
@@ -455,244 +437,244 @@ template&lt;&gt; </td></tr>
<tr class="memitem:a6efb0f4d2a6f81477a59718d42e9464a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a> (InputStream &amp;is)</td></tr>
<tr class="memdesc:a6efb0f4d2a6f81477a59718d42e9464a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Skip the JSON white spaces in a stream. <a href="#a6efb0f4d2a6f81477a59718d42e9464a">更多...</a><br /></td></tr>
<tr class="separator:a6efb0f4d2a6f81477a59718d42e9464a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a946a04b733bc148c13e7b3b0721cabcc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a946a04b733bc148c13e7b3b0721cabcc"></a>
+<tr class="memitem:a946a04b733bc148c13e7b3b0721cabcc"><td class="memItemLeft" align="right" valign="top"><a id="a946a04b733bc148c13e7b3b0721cabcc"></a>
const char *&#160;</td><td class="memItemRight" valign="bottom"><b>SkipWhitespace</b> (const char *p, const char *end)</td></tr>
<tr class="separator:a946a04b733bc148c13e7b3b0721cabcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3caa6f393c9940e6525d5f1c21ed9ea2"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3caa6f393c9940e6525d5f1c21ed9ea2"></a>
+<tr class="memitem:a3caa6f393c9940e6525d5f1c21ed9ea2"><td class="memTemplParams" colspan="2"><a id="a3caa6f393c9940e6525d5f1c21ed9ea2"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a3caa6f393c9940e6525d5f1c21ed9ea2"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a3caa6f393c9940e6525d5f1c21ed9ea2">SkipWhitespace</a> (<a class="el" href="namespacerapidjson.html#a64e957c8d9d7cd15b193ffc31410038e">InsituStringStream</a> &amp;is)</td></tr>
-<tr class="memdesc:a3caa6f393c9940e6525d5f1c21ed9ea2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template function specialization for InsituStringStream. <br /></td></tr>
+<tr class="memdesc:a3caa6f393c9940e6525d5f1c21ed9ea2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template function specialization for InsituStringStream <br /></td></tr>
<tr class="separator:a3caa6f393c9940e6525d5f1c21ed9ea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a791735c27e073a70d720c2775ddf9568"><td class="memTemplParams" colspan="2"><a class="anchor" id="a791735c27e073a70d720c2775ddf9568"></a>
+<tr class="memitem:a791735c27e073a70d720c2775ddf9568"><td class="memTemplParams" colspan="2"><a id="a791735c27e073a70d720c2775ddf9568"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a791735c27e073a70d720c2775ddf9568"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a791735c27e073a70d720c2775ddf9568">SkipWhitespace</a> (<a class="el" href="namespacerapidjson.html#a021f77051e9f85188fc2f71ff5a15ebc">StringStream</a> &amp;is)</td></tr>
-<tr class="memdesc:a791735c27e073a70d720c2775ddf9568"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template function specialization for StringStream. <br /></td></tr>
+<tr class="memdesc:a791735c27e073a70d720c2775ddf9568"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template function specialization for StringStream <br /></td></tr>
<tr class="separator:a791735c27e073a70d720c2775ddf9568"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6bb4c8ff395f8962f7df38a5467ee2ed"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6bb4c8ff395f8962f7df38a5467ee2ed"></a>
+<tr class="memitem:a6bb4c8ff395f8962f7df38a5467ee2ed"><td class="memTemplParams" colspan="2"><a id="a6bb4c8ff395f8962f7df38a5467ee2ed"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a6bb4c8ff395f8962f7df38a5467ee2ed"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SkipWhitespace</b> (<a class="el" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&lt; <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt;&gt;, <a class="el" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a> &gt; &amp;is)</td></tr>
<tr class="separator:a6bb4c8ff395f8962f7df38a5467ee2ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a820f77efccfbb749bd15fe4822d2c740"><td class="memTemplParams" colspan="2"><a class="anchor" id="a820f77efccfbb749bd15fe4822d2c740"></a>
+<tr class="memitem:a820f77efccfbb749bd15fe4822d2c740"><td class="memTemplParams" colspan="2"><a id="a820f77efccfbb749bd15fe4822d2c740"></a>
template&lt;typename Stream &gt; </td></tr>
<tr class="memitem:a820f77efccfbb749bd15fe4822d2c740"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a> (<a class="el" href="classrapidjson_1_1_stream.html">Stream</a> &amp;stream, size_t count)</td></tr>
<tr class="memdesc:a820f77efccfbb749bd15fe4822d2c740"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reserve n characters for writing to a stream. <br /></td></tr>
<tr class="separator:a820f77efccfbb749bd15fe4822d2c740"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1d49d2cab617858b53a1db23b1759f43"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1d49d2cab617858b53a1db23b1759f43"></a>
+<tr class="memitem:a1d49d2cab617858b53a1db23b1759f43"><td class="memTemplParams" colspan="2"><a id="a1d49d2cab617858b53a1db23b1759f43"></a>
template&lt;typename Stream , typename Ch &gt; </td></tr>
<tr class="memitem:a1d49d2cab617858b53a1db23b1759f43"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a1d49d2cab617858b53a1db23b1759f43">PutN</a> (<a class="el" href="classrapidjson_1_1_stream.html">Stream</a> &amp;stream, Ch c, size_t n)</td></tr>
<tr class="memdesc:a1d49d2cab617858b53a1db23b1759f43"><td class="mdescLeft">&#160;</td><td class="mdescRight">Put N copies of a character to a stream. <br /></td></tr>
<tr class="separator:a1d49d2cab617858b53a1db23b1759f43"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab38d4a353d3577fdedd8171316af80b3"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab38d4a353d3577fdedd8171316af80b3"></a>
+<tr class="memitem:ab38d4a353d3577fdedd8171316af80b3"><td class="memTemplParams" colspan="2"><a id="ab38d4a353d3577fdedd8171316af80b3"></a>
template&lt;typename Encoding , typename Allocator &gt; </td></tr>
<tr class="memitem:ab38d4a353d3577fdedd8171316af80b3"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>PutReserve</b> (<a class="el" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt; &amp;stream, size_t count)</td></tr>
<tr class="separator:ab38d4a353d3577fdedd8171316af80b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad338901177ac5feb414a9e620bfbd717"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad338901177ac5feb414a9e620bfbd717"></a>
+<tr class="memitem:ad338901177ac5feb414a9e620bfbd717"><td class="memTemplParams" colspan="2"><a id="ad338901177ac5feb414a9e620bfbd717"></a>
template&lt;typename Encoding , typename Allocator &gt; </td></tr>
<tr class="memitem:ad338901177ac5feb414a9e620bfbd717"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>PutUnsafe</b> (<a class="el" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt; &amp;stream, typename Encoding::Ch c)</td></tr>
<tr class="separator:ad338901177ac5feb414a9e620bfbd717"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9d43be9c033dc49738b713fe6fbafecf"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9d43be9c033dc49738b713fe6fbafecf"></a>
+<tr class="memitem:a9d43be9c033dc49738b713fe6fbafecf"><td class="memTemplParams" colspan="2"><a id="a9d43be9c033dc49738b713fe6fbafecf"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a9d43be9c033dc49738b713fe6fbafecf"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a9d43be9c033dc49738b713fe6fbafecf">PutN</a> (<a class="el" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>&lt; <a class="el" href="structrapidjson_1_1_u_t_f8.html">UTF8</a>&lt;&gt; &gt; &amp;stream, char c, size_t n)</td></tr>
<tr class="memdesc:a9d43be9c033dc49738b713fe6fbafecf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Implement specialized version of <a class="el" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a" title="Implement specialized version of PutN() with memset() for better performance. ">PutN()</a> with memset() for better performance. <br /></td></tr>
<tr class="separator:a9d43be9c033dc49738b713fe6fbafecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Helper functions for GenericPointer</div></td></tr>
-<tr class="memitem:a6cc308180c1a10dc918da0192aed8fb7"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6cc308180c1a10dc918da0192aed8fb7"></a>
+<tr class="memitem:a6cc308180c1a10dc918da0192aed8fb7"><td class="memTemplParams" colspan="2"><a id="a6cc308180c1a10dc918da0192aed8fb7"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a6cc308180c1a10dc918da0192aed8fb7"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>CreateValueByPointer</b> (T &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename T::ValueType &gt; &amp;pointer, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:a6cc308180c1a10dc918da0192aed8fb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abb3b041f41b39df3f4219803eb31947e"><td class="memTemplParams" colspan="2"><a class="anchor" id="abb3b041f41b39df3f4219803eb31947e"></a>
+<tr class="memitem:abb3b041f41b39df3f4219803eb31947e"><td class="memTemplParams" colspan="2"><a id="abb3b041f41b39df3f4219803eb31947e"></a>
template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:abb3b041f41b39df3f4219803eb31947e"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>CreateValueByPointer</b> (T &amp;root, const CharType(&amp;source)[N], typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:abb3b041f41b39df3f4219803eb31947e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afea8374e37ec67d3d1f08eb8c109f40c"><td class="memTemplParams" colspan="2"><a class="anchor" id="afea8374e37ec67d3d1f08eb8c109f40c"></a>
+<tr class="memitem:afea8374e37ec67d3d1f08eb8c109f40c"><td class="memTemplParams" colspan="2"><a id="afea8374e37ec67d3d1f08eb8c109f40c"></a>
template&lt;typename DocumentType &gt; </td></tr>
<tr class="memitem:afea8374e37ec67d3d1f08eb8c109f40c"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>CreateValueByPointer</b> (DocumentType &amp;document, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename DocumentType::ValueType &gt; &amp;pointer)</td></tr>
<tr class="separator:afea8374e37ec67d3d1f08eb8c109f40c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7bebd7d041eb5f91245401c674bc1776"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7bebd7d041eb5f91245401c674bc1776"></a>
+<tr class="memitem:a7bebd7d041eb5f91245401c674bc1776"><td class="memTemplParams" colspan="2"><a id="a7bebd7d041eb5f91245401c674bc1776"></a>
template&lt;typename DocumentType , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:a7bebd7d041eb5f91245401c674bc1776"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>CreateValueByPointer</b> (DocumentType &amp;document, const CharType(&amp;source)[N])</td></tr>
<tr class="separator:a7bebd7d041eb5f91245401c674bc1776"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1e54debf2cebf89b4e810cb9a22bfa3b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1e54debf2cebf89b4e810cb9a22bfa3b"></a>
+<tr class="memitem:a1e54debf2cebf89b4e810cb9a22bfa3b"><td class="memTemplParams" colspan="2"><a id="a1e54debf2cebf89b4e810cb9a22bfa3b"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a1e54debf2cebf89b4e810cb9a22bfa3b"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType *&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointer</b> (T &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename T::ValueType &gt; &amp;pointer, size_t *unresolvedTokenIndex=0)</td></tr>
<tr class="separator:a1e54debf2cebf89b4e810cb9a22bfa3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6ca286bdc96a69351dcaaa55dea8c03a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6ca286bdc96a69351dcaaa55dea8c03a"></a>
+<tr class="memitem:a6ca286bdc96a69351dcaaa55dea8c03a"><td class="memTemplParams" colspan="2"><a id="a6ca286bdc96a69351dcaaa55dea8c03a"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a6ca286bdc96a69351dcaaa55dea8c03a"><td class="memTemplItemLeft" align="right" valign="top">const T::ValueType *&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointer</b> (const T &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename T::ValueType &gt; &amp;pointer, size_t *unresolvedTokenIndex=0)</td></tr>
<tr class="separator:a6ca286bdc96a69351dcaaa55dea8c03a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a24060eafc78078b03c2db84fef65b5dd"><td class="memTemplParams" colspan="2"><a class="anchor" id="a24060eafc78078b03c2db84fef65b5dd"></a>
+<tr class="memitem:a24060eafc78078b03c2db84fef65b5dd"><td class="memTemplParams" colspan="2"><a id="a24060eafc78078b03c2db84fef65b5dd"></a>
template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:a24060eafc78078b03c2db84fef65b5dd"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType *&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointer</b> (T &amp;root, const CharType(&amp;source)[N], size_t *unresolvedTokenIndex=0)</td></tr>
<tr class="separator:a24060eafc78078b03c2db84fef65b5dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acca88ad99e931abf827f11d324174e9a"><td class="memTemplParams" colspan="2"><a class="anchor" id="acca88ad99e931abf827f11d324174e9a"></a>
+<tr class="memitem:acca88ad99e931abf827f11d324174e9a"><td class="memTemplParams" colspan="2"><a id="acca88ad99e931abf827f11d324174e9a"></a>
template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:acca88ad99e931abf827f11d324174e9a"><td class="memTemplItemLeft" align="right" valign="top">const T::ValueType *&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointer</b> (const T &amp;root, const CharType(&amp;source)[N], size_t *unresolvedTokenIndex=0)</td></tr>
<tr class="separator:acca88ad99e931abf827f11d324174e9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa33a1f9cd33ac3f6f2af3f90028fee6e"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa33a1f9cd33ac3f6f2af3f90028fee6e"></a>
+<tr class="memitem:aa33a1f9cd33ac3f6f2af3f90028fee6e"><td class="memTemplParams" colspan="2"><a id="aa33a1f9cd33ac3f6f2af3f90028fee6e"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:aa33a1f9cd33ac3f6f2af3f90028fee6e"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (T &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename T::ValueType &gt; &amp;pointer, const typename T::ValueType &amp;defaultValue, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:aa33a1f9cd33ac3f6f2af3f90028fee6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a43b1387c2ed5f7dc204d06ffaa9c55d0"><td class="memTemplParams" colspan="2"><a class="anchor" id="a43b1387c2ed5f7dc204d06ffaa9c55d0"></a>
+<tr class="memitem:a43b1387c2ed5f7dc204d06ffaa9c55d0"><td class="memTemplParams" colspan="2"><a id="a43b1387c2ed5f7dc204d06ffaa9c55d0"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a43b1387c2ed5f7dc204d06ffaa9c55d0"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (T &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename T::ValueType &gt; &amp;pointer, const typename T::Ch *defaultValue, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:a43b1387c2ed5f7dc204d06ffaa9c55d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a31bef37eefbdc2b4c0c973bef12d4e52"><td class="memTemplParams" colspan="2"><a class="anchor" id="a31bef37eefbdc2b4c0c973bef12d4e52"></a>
+<tr class="memitem:a31bef37eefbdc2b4c0c973bef12d4e52"><td class="memTemplParams" colspan="2"><a id="a31bef37eefbdc2b4c0c973bef12d4e52"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a31bef37eefbdc2b4c0c973bef12d4e52"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (T &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename T::ValueType &gt; &amp;pointer, const std::basic_string&lt; typename T::Ch &gt; &amp;defaultValue, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:a31bef37eefbdc2b4c0c973bef12d4e52"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3b425344846dd5d45c1aa41ea1f0fff2"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3b425344846dd5d45c1aa41ea1f0fff2"></a>
+<tr class="memitem:a3b425344846dd5d45c1aa41ea1f0fff2"><td class="memTemplParams" colspan="2"><a id="a3b425344846dd5d45c1aa41ea1f0fff2"></a>
template&lt;typename T , typename T2 &gt; </td></tr>
<tr class="memitem:a3b425344846dd5d45c1aa41ea1f0fff2"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (T &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename T::ValueType &gt; &amp;pointer, T2 defaultValue, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:a3b425344846dd5d45c1aa41ea1f0fff2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4dba118d81ceb01ff22efb3e5e988dc1"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4dba118d81ceb01ff22efb3e5e988dc1"></a>
+<tr class="memitem:a4dba118d81ceb01ff22efb3e5e988dc1"><td class="memTemplParams" colspan="2"><a id="a4dba118d81ceb01ff22efb3e5e988dc1"></a>
template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:a4dba118d81ceb01ff22efb3e5e988dc1"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (T &amp;root, const CharType(&amp;source)[N], const typename T::ValueType &amp;defaultValue, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:a4dba118d81ceb01ff22efb3e5e988dc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac91ec0a49e7d5f976da9a1775b1ec501"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac91ec0a49e7d5f976da9a1775b1ec501"></a>
+<tr class="memitem:ac91ec0a49e7d5f976da9a1775b1ec501"><td class="memTemplParams" colspan="2"><a id="ac91ec0a49e7d5f976da9a1775b1ec501"></a>
template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:ac91ec0a49e7d5f976da9a1775b1ec501"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (T &amp;root, const CharType(&amp;source)[N], const typename T::Ch *defaultValue, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:ac91ec0a49e7d5f976da9a1775b1ec501"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac84c921d8aae25fd6ddef061bb082a6e"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac84c921d8aae25fd6ddef061bb082a6e"></a>
+<tr class="memitem:ac84c921d8aae25fd6ddef061bb082a6e"><td class="memTemplParams" colspan="2"><a id="ac84c921d8aae25fd6ddef061bb082a6e"></a>
template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:ac84c921d8aae25fd6ddef061bb082a6e"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (T &amp;root, const CharType(&amp;source)[N], const std::basic_string&lt; typename T::Ch &gt; &amp;defaultValue, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:ac84c921d8aae25fd6ddef061bb082a6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5b170ef19224b9aa10e6f2472c63ad17"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5b170ef19224b9aa10e6f2472c63ad17"></a>
+<tr class="memitem:a5b170ef19224b9aa10e6f2472c63ad17"><td class="memTemplParams" colspan="2"><a id="a5b170ef19224b9aa10e6f2472c63ad17"></a>
template&lt;typename T , typename CharType , size_t N, typename T2 &gt; </td></tr>
<tr class="memitem:a5b170ef19224b9aa10e6f2472c63ad17"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (T &amp;root, const CharType(&amp;source)[N], T2 defaultValue, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:a5b170ef19224b9aa10e6f2472c63ad17"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9e32c018d38a174601d6770be7052f08"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9e32c018d38a174601d6770be7052f08"></a>
+<tr class="memitem:a9e32c018d38a174601d6770be7052f08"><td class="memTemplParams" colspan="2"><a id="a9e32c018d38a174601d6770be7052f08"></a>
template&lt;typename DocumentType &gt; </td></tr>
<tr class="memitem:a9e32c018d38a174601d6770be7052f08"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (DocumentType &amp;document, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename DocumentType::ValueType &gt; &amp;pointer, const typename DocumentType::ValueType &amp;defaultValue)</td></tr>
<tr class="separator:a9e32c018d38a174601d6770be7052f08"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a77cbd080374924fd75a24cedb2a017b2"><td class="memTemplParams" colspan="2"><a class="anchor" id="a77cbd080374924fd75a24cedb2a017b2"></a>
+<tr class="memitem:a77cbd080374924fd75a24cedb2a017b2"><td class="memTemplParams" colspan="2"><a id="a77cbd080374924fd75a24cedb2a017b2"></a>
template&lt;typename DocumentType &gt; </td></tr>
<tr class="memitem:a77cbd080374924fd75a24cedb2a017b2"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (DocumentType &amp;document, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename DocumentType::ValueType &gt; &amp;pointer, const typename DocumentType::Ch *defaultValue)</td></tr>
<tr class="separator:a77cbd080374924fd75a24cedb2a017b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aff665c069b593d7706ccdde1054e578f"><td class="memTemplParams" colspan="2"><a class="anchor" id="aff665c069b593d7706ccdde1054e578f"></a>
+<tr class="memitem:aff665c069b593d7706ccdde1054e578f"><td class="memTemplParams" colspan="2"><a id="aff665c069b593d7706ccdde1054e578f"></a>
template&lt;typename DocumentType &gt; </td></tr>
<tr class="memitem:aff665c069b593d7706ccdde1054e578f"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (DocumentType &amp;document, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename DocumentType::ValueType &gt; &amp;pointer, const std::basic_string&lt; typename DocumentType::Ch &gt; &amp;defaultValue)</td></tr>
<tr class="separator:aff665c069b593d7706ccdde1054e578f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5c3108f18ee973e0ee2306e405b94310"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5c3108f18ee973e0ee2306e405b94310"></a>
+<tr class="memitem:a5c3108f18ee973e0ee2306e405b94310"><td class="memTemplParams" colspan="2"><a id="a5c3108f18ee973e0ee2306e405b94310"></a>
template&lt;typename DocumentType , typename T2 &gt; </td></tr>
<tr class="memitem:a5c3108f18ee973e0ee2306e405b94310"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (DocumentType &amp;document, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename DocumentType::ValueType &gt; &amp;pointer, T2 defaultValue)</td></tr>
<tr class="separator:a5c3108f18ee973e0ee2306e405b94310"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a82e20f8de529ed67a6533df54a31bb04"><td class="memTemplParams" colspan="2"><a class="anchor" id="a82e20f8de529ed67a6533df54a31bb04"></a>
+<tr class="memitem:a82e20f8de529ed67a6533df54a31bb04"><td class="memTemplParams" colspan="2"><a id="a82e20f8de529ed67a6533df54a31bb04"></a>
template&lt;typename DocumentType , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:a82e20f8de529ed67a6533df54a31bb04"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (DocumentType &amp;document, const CharType(&amp;source)[N], const typename DocumentType::ValueType &amp;defaultValue)</td></tr>
<tr class="separator:a82e20f8de529ed67a6533df54a31bb04"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a47212072cc0fe34a06c00a6a993b9752"><td class="memTemplParams" colspan="2"><a class="anchor" id="a47212072cc0fe34a06c00a6a993b9752"></a>
+<tr class="memitem:a47212072cc0fe34a06c00a6a993b9752"><td class="memTemplParams" colspan="2"><a id="a47212072cc0fe34a06c00a6a993b9752"></a>
template&lt;typename DocumentType , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:a47212072cc0fe34a06c00a6a993b9752"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (DocumentType &amp;document, const CharType(&amp;source)[N], const typename DocumentType::Ch *defaultValue)</td></tr>
<tr class="separator:a47212072cc0fe34a06c00a6a993b9752"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6d4605304d9ee95a5e001791b9f157c6"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6d4605304d9ee95a5e001791b9f157c6"></a>
+<tr class="memitem:a6d4605304d9ee95a5e001791b9f157c6"><td class="memTemplParams" colspan="2"><a id="a6d4605304d9ee95a5e001791b9f157c6"></a>
template&lt;typename DocumentType , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:a6d4605304d9ee95a5e001791b9f157c6"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (DocumentType &amp;document, const CharType(&amp;source)[N], const std::basic_string&lt; typename DocumentType::Ch &gt; &amp;defaultValue)</td></tr>
<tr class="separator:a6d4605304d9ee95a5e001791b9f157c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7465125676d3ff4a6bb4e87a7986c2b6"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7465125676d3ff4a6bb4e87a7986c2b6"></a>
+<tr class="memitem:a7465125676d3ff4a6bb4e87a7986c2b6"><td class="memTemplParams" colspan="2"><a id="a7465125676d3ff4a6bb4e87a7986c2b6"></a>
template&lt;typename DocumentType , typename CharType , size_t N, typename T2 &gt; </td></tr>
<tr class="memitem:a7465125676d3ff4a6bb4e87a7986c2b6"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>GetValueByPointerWithDefault</b> (DocumentType &amp;document, const CharType(&amp;source)[N], T2 defaultValue)</td></tr>
<tr class="separator:a7465125676d3ff4a6bb4e87a7986c2b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af52a32038d7db6bd0916e79408bd5bbc"><td class="memTemplParams" colspan="2"><a class="anchor" id="af52a32038d7db6bd0916e79408bd5bbc"></a>
+<tr class="memitem:af52a32038d7db6bd0916e79408bd5bbc"><td class="memTemplParams" colspan="2"><a id="af52a32038d7db6bd0916e79408bd5bbc"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:af52a32038d7db6bd0916e79408bd5bbc"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (T &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename T::ValueType &gt; &amp;pointer, typename T::ValueType &amp;value, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:af52a32038d7db6bd0916e79408bd5bbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0cd01a20b4256bd943f02fe255e7cc32"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0cd01a20b4256bd943f02fe255e7cc32"></a>
+<tr class="memitem:a0cd01a20b4256bd943f02fe255e7cc32"><td class="memTemplParams" colspan="2"><a id="a0cd01a20b4256bd943f02fe255e7cc32"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a0cd01a20b4256bd943f02fe255e7cc32"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (T &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename T::ValueType &gt; &amp;pointer, const typename T::ValueType &amp;value, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:a0cd01a20b4256bd943f02fe255e7cc32"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a03c2d060d62936bab0fe4b89f7205a8d"><td class="memTemplParams" colspan="2"><a class="anchor" id="a03c2d060d62936bab0fe4b89f7205a8d"></a>
+<tr class="memitem:a03c2d060d62936bab0fe4b89f7205a8d"><td class="memTemplParams" colspan="2"><a id="a03c2d060d62936bab0fe4b89f7205a8d"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a03c2d060d62936bab0fe4b89f7205a8d"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (T &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename T::ValueType &gt; &amp;pointer, const typename T::Ch *value, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:a03c2d060d62936bab0fe4b89f7205a8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a47dcc954a89f2b233fc7882c4d57fbf1"><td class="memTemplParams" colspan="2"><a class="anchor" id="a47dcc954a89f2b233fc7882c4d57fbf1"></a>
+<tr class="memitem:a47dcc954a89f2b233fc7882c4d57fbf1"><td class="memTemplParams" colspan="2"><a id="a47dcc954a89f2b233fc7882c4d57fbf1"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:a47dcc954a89f2b233fc7882c4d57fbf1"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (T &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename T::ValueType &gt; &amp;pointer, const std::basic_string&lt; typename T::Ch &gt; &amp;value, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:a47dcc954a89f2b233fc7882c4d57fbf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0d32ec10f578a2ea9b86a2d1d03963c8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0d32ec10f578a2ea9b86a2d1d03963c8"></a>
+<tr class="memitem:a0d32ec10f578a2ea9b86a2d1d03963c8"><td class="memTemplParams" colspan="2"><a id="a0d32ec10f578a2ea9b86a2d1d03963c8"></a>
template&lt;typename T , typename T2 &gt; </td></tr>
<tr class="memitem:a0d32ec10f578a2ea9b86a2d1d03963c8"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (T &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename T::ValueType &gt; &amp;pointer, T2 value, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:a0d32ec10f578a2ea9b86a2d1d03963c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aeb9fb9b3b5c8377b0155bca9aeb40a51"><td class="memTemplParams" colspan="2"><a class="anchor" id="aeb9fb9b3b5c8377b0155bca9aeb40a51"></a>
+<tr class="memitem:aeb9fb9b3b5c8377b0155bca9aeb40a51"><td class="memTemplParams" colspan="2"><a id="aeb9fb9b3b5c8377b0155bca9aeb40a51"></a>
template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:aeb9fb9b3b5c8377b0155bca9aeb40a51"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (T &amp;root, const CharType(&amp;source)[N], typename T::ValueType &amp;value, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:aeb9fb9b3b5c8377b0155bca9aeb40a51"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4c7a1df544ef6745922b7311cbbe98f0"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4c7a1df544ef6745922b7311cbbe98f0"></a>
+<tr class="memitem:a4c7a1df544ef6745922b7311cbbe98f0"><td class="memTemplParams" colspan="2"><a id="a4c7a1df544ef6745922b7311cbbe98f0"></a>
template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:a4c7a1df544ef6745922b7311cbbe98f0"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (T &amp;root, const CharType(&amp;source)[N], const typename T::ValueType &amp;value, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:a4c7a1df544ef6745922b7311cbbe98f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa637a04f8fc74722bb5aabb0b9567432"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa637a04f8fc74722bb5aabb0b9567432"></a>
+<tr class="memitem:aa637a04f8fc74722bb5aabb0b9567432"><td class="memTemplParams" colspan="2"><a id="aa637a04f8fc74722bb5aabb0b9567432"></a>
template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:aa637a04f8fc74722bb5aabb0b9567432"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (T &amp;root, const CharType(&amp;source)[N], const typename T::Ch *value, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:aa637a04f8fc74722bb5aabb0b9567432"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:addadd408d04e2ba7c2e1ee01d273bce0"><td class="memTemplParams" colspan="2"><a class="anchor" id="addadd408d04e2ba7c2e1ee01d273bce0"></a>
+<tr class="memitem:addadd408d04e2ba7c2e1ee01d273bce0"><td class="memTemplParams" colspan="2"><a id="addadd408d04e2ba7c2e1ee01d273bce0"></a>
template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:addadd408d04e2ba7c2e1ee01d273bce0"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (T &amp;root, const CharType(&amp;source)[N], const std::basic_string&lt; typename T::Ch &gt; &amp;value, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:addadd408d04e2ba7c2e1ee01d273bce0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1e7d1628b355b694b7f54fd4a40d8c67"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1e7d1628b355b694b7f54fd4a40d8c67"></a>
+<tr class="memitem:a1e7d1628b355b694b7f54fd4a40d8c67"><td class="memTemplParams" colspan="2"><a id="a1e7d1628b355b694b7f54fd4a40d8c67"></a>
template&lt;typename T , typename CharType , size_t N, typename T2 &gt; </td></tr>
<tr class="memitem:a1e7d1628b355b694b7f54fd4a40d8c67"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (T &amp;root, const CharType(&amp;source)[N], T2 value, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:a1e7d1628b355b694b7f54fd4a40d8c67"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7ee672e29015d1884533b23769c49dee"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7ee672e29015d1884533b23769c49dee"></a>
+<tr class="memitem:a7ee672e29015d1884533b23769c49dee"><td class="memTemplParams" colspan="2"><a id="a7ee672e29015d1884533b23769c49dee"></a>
template&lt;typename DocumentType &gt; </td></tr>
<tr class="memitem:a7ee672e29015d1884533b23769c49dee"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (DocumentType &amp;document, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename DocumentType::ValueType &gt; &amp;pointer, typename DocumentType::ValueType &amp;value)</td></tr>
<tr class="separator:a7ee672e29015d1884533b23769c49dee"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a17434145e27de11a23d116f832e62b0e"><td class="memTemplParams" colspan="2"><a class="anchor" id="a17434145e27de11a23d116f832e62b0e"></a>
+<tr class="memitem:a17434145e27de11a23d116f832e62b0e"><td class="memTemplParams" colspan="2"><a id="a17434145e27de11a23d116f832e62b0e"></a>
template&lt;typename DocumentType &gt; </td></tr>
<tr class="memitem:a17434145e27de11a23d116f832e62b0e"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (DocumentType &amp;document, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename DocumentType::ValueType &gt; &amp;pointer, const typename DocumentType::ValueType &amp;value)</td></tr>
<tr class="separator:a17434145e27de11a23d116f832e62b0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae1ed433d2762ea314c3936e0e7b3259b"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae1ed433d2762ea314c3936e0e7b3259b"></a>
+<tr class="memitem:ae1ed433d2762ea314c3936e0e7b3259b"><td class="memTemplParams" colspan="2"><a id="ae1ed433d2762ea314c3936e0e7b3259b"></a>
template&lt;typename DocumentType &gt; </td></tr>
<tr class="memitem:ae1ed433d2762ea314c3936e0e7b3259b"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (DocumentType &amp;document, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename DocumentType::ValueType &gt; &amp;pointer, const typename DocumentType::Ch *value)</td></tr>
<tr class="separator:ae1ed433d2762ea314c3936e0e7b3259b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a61888e4b70fc622e72f8fede59535453"><td class="memTemplParams" colspan="2"><a class="anchor" id="a61888e4b70fc622e72f8fede59535453"></a>
+<tr class="memitem:a61888e4b70fc622e72f8fede59535453"><td class="memTemplParams" colspan="2"><a id="a61888e4b70fc622e72f8fede59535453"></a>
template&lt;typename DocumentType &gt; </td></tr>
<tr class="memitem:a61888e4b70fc622e72f8fede59535453"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (DocumentType &amp;document, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename DocumentType::ValueType &gt; &amp;pointer, const std::basic_string&lt; typename DocumentType::Ch &gt; &amp;value)</td></tr>
<tr class="separator:a61888e4b70fc622e72f8fede59535453"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3a25b0eebf3fc8c37a0f9b16d90f459e"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3a25b0eebf3fc8c37a0f9b16d90f459e"></a>
+<tr class="memitem:a3a25b0eebf3fc8c37a0f9b16d90f459e"><td class="memTemplParams" colspan="2"><a id="a3a25b0eebf3fc8c37a0f9b16d90f459e"></a>
template&lt;typename DocumentType , typename T2 &gt; </td></tr>
<tr class="memitem:a3a25b0eebf3fc8c37a0f9b16d90f459e"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (DocumentType &amp;document, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename DocumentType::ValueType &gt; &amp;pointer, T2 value)</td></tr>
<tr class="separator:a3a25b0eebf3fc8c37a0f9b16d90f459e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa4a6b91e9ba841920a3eebf7966219ec"><td class="memTemplParams" colspan="2"><a class="anchor" id="aa4a6b91e9ba841920a3eebf7966219ec"></a>
+<tr class="memitem:aa4a6b91e9ba841920a3eebf7966219ec"><td class="memTemplParams" colspan="2"><a id="aa4a6b91e9ba841920a3eebf7966219ec"></a>
template&lt;typename DocumentType , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:aa4a6b91e9ba841920a3eebf7966219ec"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (DocumentType &amp;document, const CharType(&amp;source)[N], typename DocumentType::ValueType &amp;value)</td></tr>
<tr class="separator:aa4a6b91e9ba841920a3eebf7966219ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a903c53365983ea6b11b1e37bcd613a40"><td class="memTemplParams" colspan="2"><a class="anchor" id="a903c53365983ea6b11b1e37bcd613a40"></a>
+<tr class="memitem:a903c53365983ea6b11b1e37bcd613a40"><td class="memTemplParams" colspan="2"><a id="a903c53365983ea6b11b1e37bcd613a40"></a>
template&lt;typename DocumentType , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:a903c53365983ea6b11b1e37bcd613a40"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (DocumentType &amp;document, const CharType(&amp;source)[N], const typename DocumentType::ValueType &amp;value)</td></tr>
<tr class="separator:a903c53365983ea6b11b1e37bcd613a40"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:add1fda95f27ace1ba362b2f8ca29b6ff"><td class="memTemplParams" colspan="2"><a class="anchor" id="add1fda95f27ace1ba362b2f8ca29b6ff"></a>
+<tr class="memitem:add1fda95f27ace1ba362b2f8ca29b6ff"><td class="memTemplParams" colspan="2"><a id="add1fda95f27ace1ba362b2f8ca29b6ff"></a>
template&lt;typename DocumentType , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:add1fda95f27ace1ba362b2f8ca29b6ff"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (DocumentType &amp;document, const CharType(&amp;source)[N], const typename DocumentType::Ch *value)</td></tr>
<tr class="separator:add1fda95f27ace1ba362b2f8ca29b6ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad54683f2c4492c6d12b79c5e1747718f"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad54683f2c4492c6d12b79c5e1747718f"></a>
+<tr class="memitem:ad54683f2c4492c6d12b79c5e1747718f"><td class="memTemplParams" colspan="2"><a id="ad54683f2c4492c6d12b79c5e1747718f"></a>
template&lt;typename DocumentType , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:ad54683f2c4492c6d12b79c5e1747718f"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (DocumentType &amp;document, const CharType(&amp;source)[N], const std::basic_string&lt; typename DocumentType::Ch &gt; &amp;value)</td></tr>
<tr class="separator:ad54683f2c4492c6d12b79c5e1747718f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad416a12d786a7d783667953f204a92cd"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad416a12d786a7d783667953f204a92cd"></a>
+<tr class="memitem:ad416a12d786a7d783667953f204a92cd"><td class="memTemplParams" colspan="2"><a id="ad416a12d786a7d783667953f204a92cd"></a>
template&lt;typename DocumentType , typename CharType , size_t N, typename T2 &gt; </td></tr>
<tr class="memitem:ad416a12d786a7d783667953f204a92cd"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SetValueByPointer</b> (DocumentType &amp;document, const CharType(&amp;source)[N], T2 value)</td></tr>
<tr class="separator:ad416a12d786a7d783667953f204a92cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af27fbadfe9c823485374a6b426e3bf1f"><td class="memTemplParams" colspan="2"><a class="anchor" id="af27fbadfe9c823485374a6b426e3bf1f"></a>
+<tr class="memitem:af27fbadfe9c823485374a6b426e3bf1f"><td class="memTemplParams" colspan="2"><a id="af27fbadfe9c823485374a6b426e3bf1f"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:af27fbadfe9c823485374a6b426e3bf1f"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SwapValueByPointer</b> (T &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename T::ValueType &gt; &amp;pointer, typename T::ValueType &amp;value, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:af27fbadfe9c823485374a6b426e3bf1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a54ef9e175c0a22c8dc894dd001063b43"><td class="memTemplParams" colspan="2"><a class="anchor" id="a54ef9e175c0a22c8dc894dd001063b43"></a>
+<tr class="memitem:a54ef9e175c0a22c8dc894dd001063b43"><td class="memTemplParams" colspan="2"><a id="a54ef9e175c0a22c8dc894dd001063b43"></a>
template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:a54ef9e175c0a22c8dc894dd001063b43"><td class="memTemplItemLeft" align="right" valign="top">T::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SwapValueByPointer</b> (T &amp;root, const CharType(&amp;source)[N], typename T::ValueType &amp;value, typename T::AllocatorType &amp;a)</td></tr>
<tr class="separator:a54ef9e175c0a22c8dc894dd001063b43"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8e7fefa7eb27b5093f8f14439718aae3"><td class="memTemplParams" colspan="2"><a class="anchor" id="a8e7fefa7eb27b5093f8f14439718aae3"></a>
+<tr class="memitem:a8e7fefa7eb27b5093f8f14439718aae3"><td class="memTemplParams" colspan="2"><a id="a8e7fefa7eb27b5093f8f14439718aae3"></a>
template&lt;typename DocumentType &gt; </td></tr>
<tr class="memitem:a8e7fefa7eb27b5093f8f14439718aae3"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SwapValueByPointer</b> (DocumentType &amp;document, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename DocumentType::ValueType &gt; &amp;pointer, typename DocumentType::ValueType &amp;value)</td></tr>
<tr class="separator:a8e7fefa7eb27b5093f8f14439718aae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adb20ad4981c389a8007b5e58b901c558"><td class="memTemplParams" colspan="2"><a class="anchor" id="adb20ad4981c389a8007b5e58b901c558"></a>
+<tr class="memitem:adb20ad4981c389a8007b5e58b901c558"><td class="memTemplParams" colspan="2"><a id="adb20ad4981c389a8007b5e58b901c558"></a>
template&lt;typename DocumentType , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:adb20ad4981c389a8007b5e58b901c558"><td class="memTemplItemLeft" align="right" valign="top">DocumentType::ValueType &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>SwapValueByPointer</b> (DocumentType &amp;document, const CharType(&amp;source)[N], typename DocumentType::ValueType &amp;value)</td></tr>
<tr class="separator:adb20ad4981c389a8007b5e58b901c558"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:adaa0d9adc977720a77aa263a6dedc308"><td class="memTemplParams" colspan="2"><a class="anchor" id="adaa0d9adc977720a77aa263a6dedc308"></a>
+<tr class="memitem:adaa0d9adc977720a77aa263a6dedc308"><td class="memTemplParams" colspan="2"><a id="adaa0d9adc977720a77aa263a6dedc308"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:adaa0d9adc977720a77aa263a6dedc308"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>EraseValueByPointer</b> (T &amp;root, const <a class="el" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&lt; typename T::ValueType &gt; &amp;pointer)</td></tr>
<tr class="separator:adaa0d9adc977720a77aa263a6dedc308"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aecef95f2fb3b7418031aeda5558072c5"><td class="memTemplParams" colspan="2"><a class="anchor" id="aecef95f2fb3b7418031aeda5558072c5"></a>
+<tr class="memitem:aecef95f2fb3b7418031aeda5558072c5"><td class="memTemplParams" colspan="2"><a id="aecef95f2fb3b7418031aeda5558072c5"></a>
template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
<tr class="memitem:aecef95f2fb3b7418031aeda5558072c5"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>EraseValueByPointer</b> (T &amp;root, const CharType(&amp;source)[N])</td></tr>
<tr class="separator:aecef95f2fb3b7418031aeda5558072c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -701,7 +683,9 @@ template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
<div class="textblock"><p>main RapidJSON namespace </p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga743a79d3af927391fe3eb5c979136899" title="provide custom rapidjson namespace ">RAPIDJSON_NAMESPACE</a> </dd></dl>
</div><h2 class="groupheader">类型定义说明</h2>
-<a class="anchor" id="a44eb33eaa523e36d466b1ced64b85c84"></a>
+<a id="a44eb33eaa523e36d466b1ced64b85c84"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a44eb33eaa523e36d466b1ced64b85c84">&#9670;&nbsp;</a></span>SizeType</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -717,7 +701,9 @@ template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
</div>
</div>
<h2 class="groupheader">枚举类型说明</h2>
-<a class="anchor" id="a81379eb4e94a0386d71d15fda882ebc9"></a>
+<a id="a81379eb4e94a0386d71d15fda882ebc9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a81379eb4e94a0386d71d15fda882ebc9">&#9670;&nbsp;</a></span>ParseFlag</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -727,47 +713,38 @@ template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
</table>
</div><div class="memdoc">
-<p>Combination of parseFlags. </p>
-<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b" title="Parse JSON text. ">Reader::Parse</a>, <a class="el" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c" title="Parse JSON text from a read-only string (with Encoding conversion) ">Document::Parse</a>, <a class="el" href="classrapidjson_1_1_generic_document.html#a7ba626bf84eb45a9bca0b7723bf47f3f" title="Parse JSON text from a mutable string. ">Document::ParseInsitu</a>, <a class="el" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85" title="Parse JSON text from an input stream (with Encoding conversion) ">Document::ParseStream</a> </dd></dl>
+<p>Combination of parseFlags </p>
+<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b" title="Parse JSON text. ">Reader::Parse</a>, <a class="el" href="classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c" title="Parse JSON text from a read-only string (with Encoding conversion) ">Document::Parse</a>, <a class="el" href="classrapidjson_1_1_generic_document.html#a7ba626bf84eb45a9bca0b7723bf47f3f" title="Parse JSON text from a mutable string ">Document::ParseInsitu</a>, <a class="el" href="classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85" title="Parse JSON text from an input stream (with Encoding conversion) ">Document::ParseStream</a> </dd></dl>
<table class="fieldtable">
-<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a class="anchor" id="a81379eb4e94a0386d71d15fda882ebc9af2c7fa21e9e7656e467bd71079ac8fb0"></a>kParseNoFlags&#160;</td><td class="fielddoc">
-<p>No flags are set. </p>
+<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="a81379eb4e94a0386d71d15fda882ebc9af2c7fa21e9e7656e467bd71079ac8fb0"></a>kParseNoFlags&#160;</td><td class="fielddoc"><p>No flags are set. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea"></a>kParseInsituFlag&#160;</td><td class="fielddoc">
-<p>In-situ(destructive) parsing. </p>
+<tr><td class="fieldname"><a id="a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea"></a>kParseInsituFlag&#160;</td><td class="fielddoc"><p>In-situ(destructive) parsing. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a81379eb4e94a0386d71d15fda882ebc9a3df81f75479da8e052393f92cbec394b"></a>kParseValidateEncodingFlag&#160;</td><td class="fielddoc">
-<p>Validate encoding of JSON strings. </p>
+<tr><td class="fieldname"><a id="a81379eb4e94a0386d71d15fda882ebc9a3df81f75479da8e052393f92cbec394b"></a>kParseValidateEncodingFlag&#160;</td><td class="fielddoc"><p>Validate encoding of JSON strings. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a81379eb4e94a0386d71d15fda882ebc9a7923686c8bdb7614699f1fb1bb615bb2"></a>kParseIterativeFlag&#160;</td><td class="fielddoc">
-<p>Iterative(constant complexity in terms of function call stack size) parsing. </p>
+<tr><td class="fieldname"><a id="a81379eb4e94a0386d71d15fda882ebc9a7923686c8bdb7614699f1fb1bb615bb2"></a>kParseIterativeFlag&#160;</td><td class="fielddoc"><p>Iterative(constant complexity in terms of function call stack size) parsing. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a81379eb4e94a0386d71d15fda882ebc9af84c60868704433b80aa51a62e042bb1"></a>kParseStopWhenDoneFlag&#160;</td><td class="fielddoc">
-<p>After parsing a complete JSON root from stream, stop further processing the rest of stream. When this flag is used, parser will not generate kParseErrorDocumentRootNotSingular error. </p>
+<tr><td class="fieldname"><a id="a81379eb4e94a0386d71d15fda882ebc9af84c60868704433b80aa51a62e042bb1"></a>kParseStopWhenDoneFlag&#160;</td><td class="fielddoc"><p>After parsing a complete JSON root from stream, stop further processing the rest of stream. When this flag is used, parser will not generate kParseErrorDocumentRootNotSingular error. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a81379eb4e94a0386d71d15fda882ebc9adf80892cdfa076b2d1a7dd9530e15cb0"></a>kParseFullPrecisionFlag&#160;</td><td class="fielddoc">
-<p>Parse number in full precision (but slower). </p>
+<tr><td class="fieldname"><a id="a81379eb4e94a0386d71d15fda882ebc9adf80892cdfa076b2d1a7dd9530e15cb0"></a>kParseFullPrecisionFlag&#160;</td><td class="fielddoc"><p>Parse number in full precision (but slower). </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a81379eb4e94a0386d71d15fda882ebc9ab5d719b36aac626135d5d622d0d837c1"></a>kParseCommentsFlag&#160;</td><td class="fielddoc">
-<p>Allow one-line (//) and multi-line (/**/) comments. </p>
+<tr><td class="fieldname"><a id="a81379eb4e94a0386d71d15fda882ebc9ab5d719b36aac626135d5d622d0d837c1"></a>kParseCommentsFlag&#160;</td><td class="fielddoc"><p>Allow one-line (//) and multi-line (/**/) comments. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a81379eb4e94a0386d71d15fda882ebc9a13981c0b803803f59d7a01aef3dfc987"></a>kParseNumbersAsStringsFlag&#160;</td><td class="fielddoc">
-<p>Parse all numbers (ints/doubles) as strings. </p>
+<tr><td class="fieldname"><a id="a81379eb4e94a0386d71d15fda882ebc9a13981c0b803803f59d7a01aef3dfc987"></a>kParseNumbersAsStringsFlag&#160;</td><td class="fielddoc"><p>Parse all numbers (ints/doubles) as strings. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a81379eb4e94a0386d71d15fda882ebc9af8b8470221dbc6046a40ff31d758ceec"></a>kParseTrailingCommasFlag&#160;</td><td class="fielddoc">
-<p>Allow trailing commas at the end of objects and arrays. </p>
+<tr><td class="fieldname"><a id="a81379eb4e94a0386d71d15fda882ebc9af8b8470221dbc6046a40ff31d758ceec"></a>kParseTrailingCommasFlag&#160;</td><td class="fielddoc"><p>Allow trailing commas at the end of objects and arrays. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a81379eb4e94a0386d71d15fda882ebc9a857894ab51cafa62956e9c9f0dafc4d8"></a>kParseNanAndInfFlag&#160;</td><td class="fielddoc">
-<p>Allow parsing NaN, Inf, Infinity, -Inf and -Infinity as doubles. </p>
+<tr><td class="fieldname"><a id="a81379eb4e94a0386d71d15fda882ebc9a857894ab51cafa62956e9c9f0dafc4d8"></a>kParseNanAndInfFlag&#160;</td><td class="fielddoc"><p>Allow parsing NaN, Inf, Infinity, -Inf and -Infinity as doubles. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a81379eb4e94a0386d71d15fda882ebc9a5640cb00db7814b7f22be3683dda9835"></a>kParseDefaultFlags&#160;</td><td class="fielddoc">
-<p>Default parse flags. Can be customized by defining RAPIDJSON_PARSE_DEFAULT_FLAGS. </p>
+<tr><td class="fieldname"><a id="a81379eb4e94a0386d71d15fda882ebc9a5640cb00db7814b7f22be3683dda9835"></a>kParseDefaultFlags&#160;</td><td class="fielddoc"><p>Default parse flags. Can be customized by defining RAPIDJSON_PARSE_DEFAULT_FLAGS </p>
</td></tr>
</table>
</div>
</div>
-<a class="anchor" id="a084b31753ef2edefdeca8a5374eccc4b"></a>
+<a id="a084b31753ef2edefdeca8a5374eccc4b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a084b31753ef2edefdeca8a5374eccc4b">&#9670;&nbsp;</a></span>PrettyFormatOptions</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -780,17 +757,17 @@ template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
<p>Combination of <a class="el" href="classrapidjson_1_1_pretty_writer.html" title="Writer with indentation and spacing. ">PrettyWriter</a> format flags. </p>
<dl class="section see"><dt>参见</dt><dd><a class="el" href="classrapidjson_1_1_pretty_writer.html#acde6176577f29869e28a4f3c4a251090" title="Set pretty writer formatting options. ">PrettyWriter::SetFormatOptions</a> </dd></dl>
<table class="fieldtable">
-<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a class="anchor" id="a084b31753ef2edefdeca8a5374eccc4ba8164b0d4993439856171585b9cf3adc0"></a>kFormatDefault&#160;</td><td class="fielddoc">
-<p>Default pretty formatting. </p>
+<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="a084b31753ef2edefdeca8a5374eccc4ba8164b0d4993439856171585b9cf3adc0"></a>kFormatDefault&#160;</td><td class="fielddoc"><p>Default pretty formatting. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a084b31753ef2edefdeca8a5374eccc4ba64b0f8a37ab3125118682046ff06500f"></a>kFormatSingleLineArray&#160;</td><td class="fielddoc">
-<p>Format arrays on a single line. </p>
+<tr><td class="fieldname"><a id="a084b31753ef2edefdeca8a5374eccc4ba64b0f8a37ab3125118682046ff06500f"></a>kFormatSingleLineArray&#160;</td><td class="fielddoc"><p>Format arrays on a single line. </p>
</td></tr>
</table>
</div>
</div>
-<a class="anchor" id="ae79a4751c1c460ff0de5ecc07874f3e4"></a>
+<a id="ae79a4751c1c460ff0de5ecc07874f3e4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae79a4751c1c460ff0de5ecc07874f3e4">&#9670;&nbsp;</a></span>Type</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -800,34 +777,29 @@ template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
</table>
</div><div class="memdoc">
-<p>Type of JSON value. </p>
+<p>Type of JSON value </p>
<table class="fieldtable">
-<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a class="anchor" id="ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff"></a>kNullType&#160;</td><td class="fielddoc">
-<p>null </p>
+<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff"></a>kNullType&#160;</td><td class="fielddoc"><p>null </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607"></a>kFalseType&#160;</td><td class="fielddoc">
-<p>false </p>
+<tr><td class="fieldname"><a id="ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607"></a>kFalseType&#160;</td><td class="fielddoc"><p>false </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e"></a>kTrueType&#160;</td><td class="fielddoc">
-<p>true </p>
+<tr><td class="fieldname"><a id="ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e"></a>kTrueType&#160;</td><td class="fielddoc"><p>true </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9"></a>kObjectType&#160;</td><td class="fielddoc">
-<p>object </p>
+<tr><td class="fieldname"><a id="ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9"></a>kObjectType&#160;</td><td class="fielddoc"><p>object </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468"></a>kArrayType&#160;</td><td class="fielddoc">
-<p>array </p>
+<tr><td class="fieldname"><a id="ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468"></a>kArrayType&#160;</td><td class="fielddoc"><p>array </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7"></a>kStringType&#160;</td><td class="fielddoc">
-<p>string </p>
+<tr><td class="fieldname"><a id="ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7"></a>kStringType&#160;</td><td class="fielddoc"><p>string </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a"></a>kNumberType&#160;</td><td class="fielddoc">
-<p>number </p>
+<tr><td class="fieldname"><a id="ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a"></a>kNumberType&#160;</td><td class="fielddoc"><p>number </p>
</td></tr>
</table>
</div>
</div>
-<a class="anchor" id="a4aacabc0f8cea1cd628f466d890773eb"></a>
+<a id="a4aacabc0f8cea1cd628f466d890773eb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4aacabc0f8cea1cd628f466d890773eb">&#9670;&nbsp;</a></span>UTFType</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -839,26 +811,23 @@ template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
<p>Runtime-specified UTF encoding type of a stream. </p>
<table class="fieldtable">
-<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a class="anchor" id="a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81"></a>kUTF8&#160;</td><td class="fielddoc">
-<p>UTF-8. </p>
+<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="a4aacabc0f8cea1cd628f466d890773eba3bda3a2e3f0ec2b7e8c5a3d5d4f60a81"></a>kUTF8&#160;</td><td class="fielddoc"><p>UTF-8. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481"></a>kUTF16LE&#160;</td><td class="fielddoc">
-<p>UTF-16 little endian. </p>
+<tr><td class="fieldname"><a id="a4aacabc0f8cea1cd628f466d890773ebaa7ffda68d3584eb92155daf3cd1d6481"></a>kUTF16LE&#160;</td><td class="fielddoc"><p>UTF-16 little endian. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a4aacabc0f8cea1cd628f466d890773eba52c496755de96eee05275a423b36299d"></a>kUTF16BE&#160;</td><td class="fielddoc">
-<p>UTF-16 big endian. </p>
+<tr><td class="fieldname"><a id="a4aacabc0f8cea1cd628f466d890773eba52c496755de96eee05275a423b36299d"></a>kUTF16BE&#160;</td><td class="fielddoc"><p>UTF-16 big endian. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a4aacabc0f8cea1cd628f466d890773eba2ec8c855b2edacca40fa73ad307a66b4"></a>kUTF32LE&#160;</td><td class="fielddoc">
-<p>UTF-32 little endian. </p>
+<tr><td class="fieldname"><a id="a4aacabc0f8cea1cd628f466d890773eba2ec8c855b2edacca40fa73ad307a66b4"></a>kUTF32LE&#160;</td><td class="fielddoc"><p>UTF-32 little endian. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f"></a>kUTF32BE&#160;</td><td class="fielddoc">
-<p>UTF-32 big endian. </p>
+<tr><td class="fieldname"><a id="a4aacabc0f8cea1cd628f466d890773ebad6db204b848081468878ed58bc20ce8f"></a>kUTF32BE&#160;</td><td class="fielddoc"><p>UTF-32 big endian. </p>
</td></tr>
</table>
</div>
</div>
-<a class="anchor" id="ad28b1de6aee37e92fc31792dd6dd6b19"></a>
+<a id="ad28b1de6aee37e92fc31792dd6dd6b19"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad28b1de6aee37e92fc31792dd6dd6b19">&#9670;&nbsp;</a></span>WriteFlag</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -868,26 +837,24 @@ template&lt;typename T , typename CharType , size_t N&gt; </td></tr>
</table>
</div><div class="memdoc">
-<p>Combination of writeFlags. </p>
+<p>Combination of writeFlags </p>
<table class="fieldtable">
-<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a class="anchor" id="ad28b1de6aee37e92fc31792dd6dd6b19ae971aa1fc0ae64c8f3d2b47fd802846a"></a>kWriteNoFlags&#160;</td><td class="fielddoc">
-<p>No flags are set. </p>
+<tr><th colspan="2">枚举值</th></tr><tr><td class="fieldname"><a id="ad28b1de6aee37e92fc31792dd6dd6b19ae971aa1fc0ae64c8f3d2b47fd802846a"></a>kWriteNoFlags&#160;</td><td class="fielddoc"><p>No flags are set. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ad28b1de6aee37e92fc31792dd6dd6b19ac1b5e17278b060e9e866df075c104c10"></a>kWriteValidateEncodingFlag&#160;</td><td class="fielddoc">
-<p>Validate encoding of JSON strings. </p>
+<tr><td class="fieldname"><a id="ad28b1de6aee37e92fc31792dd6dd6b19ac1b5e17278b060e9e866df075c104c10"></a>kWriteValidateEncodingFlag&#160;</td><td class="fielddoc"><p>Validate encoding of JSON strings. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ad28b1de6aee37e92fc31792dd6dd6b19a3adbca1d31ad845ff4e9d742280cce39"></a>kWriteNanAndInfFlag&#160;</td><td class="fielddoc">
-<p>Allow writing of Infinity, -Infinity and NaN. </p>
+<tr><td class="fieldname"><a id="ad28b1de6aee37e92fc31792dd6dd6b19a3adbca1d31ad845ff4e9d742280cce39"></a>kWriteNanAndInfFlag&#160;</td><td class="fielddoc"><p>Allow writing of Infinity, -Infinity and NaN. </p>
</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ad28b1de6aee37e92fc31792dd6dd6b19a5b5ca665afdfa828a74ae5755c67a226"></a>kWriteDefaultFlags&#160;</td><td class="fielddoc">
-<p>Default write flags. Can be customized by defining RAPIDJSON_WRITE_DEFAULT_FLAGS. </p>
+<tr><td class="fieldname"><a id="ad28b1de6aee37e92fc31792dd6dd6b19a5b5ca665afdfa828a74ae5755c67a226"></a>kWriteDefaultFlags&#160;</td><td class="fielddoc"><p>Default write flags. Can be customized by defining RAPIDJSON_WRITE_DEFAULT_FLAGS </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">函数说明</h2>
-<a class="anchor" id="a6efb0f4d2a6f81477a59718d42e9464a"></a>
+<a id="a6efb0f4d2a6f81477a59718d42e9464a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6efb0f4d2a6f81477a59718d42e9464a">&#9670;&nbsp;</a></span>SkipWhitespace()</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -914,7 +881,9 @@ template&lt;typename InputStream &gt; </div>
</div>
</div>
-<a class="anchor" id="aa6b9fd9f6aa49405a574c362ba9af6b5"></a>
+<a id="aa6b9fd9f6aa49405a574c362ba9af6b5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa6b9fd9f6aa49405a574c362ba9af6b5">&#9670;&nbsp;</a></span>StringRef() <span class="overload">[1/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -938,7 +907,7 @@ template&lt;typename CharType &gt; </div>
</table>
</div><div class="memdoc">
-<p>Mark a character pointer as constant string. </p>
+<p>Mark a character pointer as constant string </p>
<p>Mark a plain character pointer as a "string literal". This function can be used to avoid copying a character string to be referenced as a value in a JSON <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> object, if the string's lifetime is known to be valid long enough. </p><dl class="tparams"><dt>模板参数</dt><dd>
<table class="tparams">
<tr><td class="paramname">CharType</td><td>Character type of the string </td></tr>
@@ -956,7 +925,9 @@ template&lt;typename CharType &gt; </div>
</div>
</div>
-<a class="anchor" id="a578c51ab574a50a9c760b9da7c7562f2"></a>
+<a id="a578c51ab574a50a9c760b9da7c7562f2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a578c51ab574a50a9c760b9da7c7562f2">&#9670;&nbsp;</a></span>StringRef() <span class="overload">[2/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -990,7 +961,7 @@ template&lt;typename CharType &gt; </div>
</table>
</div><div class="memdoc">
-<p>Mark a character pointer as constant string. </p>
+<p>Mark a character pointer as constant string </p>
<p>Mark a plain character pointer as a "string literal". This function can be used to avoid copying a character string to be referenced as a value in a JSON <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> object, if the string's lifetime is known to be valid long enough.</p>
<p>This version has better performance with supplied length, and also supports string containing null characters.</p>
<dl class="tparams"><dt>模板参数</dt><dd>
@@ -1010,7 +981,9 @@ template&lt;typename CharType &gt; </div>
</div>
</div>
-<a class="anchor" id="af94951529a5d51e8c4e6e770bb707c1f"></a>
+<a id="af94951529a5d51e8c4e6e770bb707c1f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af94951529a5d51e8c4e6e770bb707c1f">&#9670;&nbsp;</a></span>StringRef() <span class="overload">[3/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -1034,7 +1007,7 @@ template&lt;typename CharType &gt; </div>
</table>
</div><div class="memdoc">
-<p>Mark a string object as constant string. </p>
+<p>Mark a string object as constant string </p>
<p>Mark a string object (e.g. <code>std::string</code>) as a "string literal". This function can be used to avoid copying a string to be referenced as a value in a JSON <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> object, if the string's lifetime is known to be valid long enough.</p>
<dl class="tparams"><dt>模板参数</dt><dd>
<table class="tparams">
diff --git a/zh-cn/navtree.css b/zh-cn/navtree.css
index 41a9cb96..0cc7e776 100644
--- a/zh-cn/navtree.css
+++ b/zh-cn/navtree.css
@@ -94,8 +94,11 @@
}
.ui-resizable-e {
- background:url("ftv2splitbar.png") repeat scroll right center transparent;
- cursor:e-resize;
+ background-image:url("splitbar.png");
+ background-size:100%;
+ background-repeat:no-repeat;
+ background-attachment: scroll;
+ cursor:ew-resize;
height:100%;
right:0;
top:0;
diff --git a/zh-cn/navtree.js b/zh-cn/navtree.js
index 842915d8..e6d31b00 100644
--- a/zh-cn/navtree.js
+++ b/zh-cn/navtree.js
@@ -1,171 +1,6 @@
-var NAVTREE =
-[
- [ "RapidJSON", "index.html", [
- [ "Change Log", "md__c_h_a_n_g_e_l_o_g.html", null ],
- [ "特点", "md_doc_features_8zh-cn.html", null ],
- [ "教程", "md_doc_tutorial_8zh-cn.html", [
- [ "Value 及 Document", "md_doc_tutorial_8zh-cn.html#ValueDocument", null ],
- [ "查询 Value", "md_doc_tutorial_8zh-cn.html#QueryValue", [
- [ "查询 Array", "md_doc_tutorial_8zh-cn.html#QueryArray", null ],
- [ "查询 Object", "md_doc_tutorial_8zh-cn.html#QueryObject", null ],
- [ "查询 Number", "md_doc_tutorial_8zh-cn.html#QueryNumber", null ],
- [ "查询 String", "md_doc_tutorial_8zh-cn.html#QueryString", null ]
- ] ],
- [ "创建/修改值", "md_doc_tutorial_8zh-cn.html#CreateModifyValues", [
- [ "改变 Value 类型", "md_doc_tutorial_8zh-cn.html#ChangeValueType", null ],
- [ "转移语义(Move Semantics)", "md_doc_tutorial_8zh-cn.html#MoveSemantics", [
- [ "转移语义及临时值", "md_doc_tutorial_8zh-cn.html#TemporaryValues", null ]
- ] ],
- [ "创建 String", "md_doc_tutorial_8zh-cn.html#CreateString", null ],
- [ "修改 Array", "md_doc_tutorial_8zh-cn.html#ModifyArray", null ],
- [ "修改 Object", "md_doc_tutorial_8zh-cn.html#ModifyObject", null ],
- [ "深复制 Value", "md_doc_tutorial_8zh-cn.html#DeepCopyValue", null ],
- [ "交换 Value", "md_doc_tutorial_8zh-cn.html#SwapValues", null ]
- ] ],
- [ "下一部分", "md_doc_tutorial_8zh-cn.html#WhatsNext", null ]
- ] ],
- [ "Pointer", "md_doc_pointer_8zh-cn.html", [
- [ "JSON Pointer", "md_doc_pointer_8zh-cn.html#JsonPointer", null ],
- [ "基本使用方法", "md_doc_pointer_8zh-cn.html#BasicUsage", null ],
- [ "辅助函数", "md_doc_pointer_8zh-cn.html#HelperFunctions", null ],
- [ "解析 Pointer", "md_doc_pointer_8zh-cn.html#ResolvingPointer", null ],
- [ "错误处理", "md_doc_pointer_8zh-cn.html#ErrorHandling", null ],
- [ "URI 片段表示方式", "md_doc_pointer_8zh-cn.html#URIFragment", null ],
- [ "使用者提供的 tokens", "md_doc_pointer_8zh-cn.html#UserSuppliedTokens", null ]
- ] ],
- [ "流", "md_doc_stream_8zh-cn.html", [
- [ "内存流", "md_doc_stream_8zh-cn.html#MemoryStreams", [
- [ "StringStream(输入)", "md_doc_stream_8zh-cn.html#StringStream", null ],
- [ "StringBuffer(输出)", "md_doc_stream_8zh-cn.html#StringBuffer", null ]
- ] ],
- [ "文件流", "md_doc_stream_8zh-cn.html#FileStreams", [
- [ "FileReadStream(输入)", "md_doc_stream_8zh-cn.html#FileReadStream", null ],
- [ "FileWriteStream(输出)", "md_doc_stream_8zh-cn.html#FileWriteStream", null ]
- ] ],
- [ "iostream 包装类", "md_doc_stream_8zh-cn.html#iostreamWrapper", [
- [ "IStreamWrapper", "md_doc_stream_8zh-cn.html#IStreamWrapper", null ],
- [ "OStreamWrapper", "md_doc_stream_8zh-cn.html#OStreamWrapper", null ]
- ] ],
- [ "编码流", "md_doc_stream_8zh-cn.html#EncodedStreams", [
- [ "EncodedInputStream", "md_doc_stream_8zh-cn.html#EncodedInputStream", null ],
- [ "EncodedOutputStream", "md_doc_stream_8zh-cn.html#EncodedOutputStream", null ],
- [ "AutoUTFInputStream", "md_doc_stream_8zh-cn.html#AutoUTFInputStream", null ],
- [ "AutoUTFOutputStream", "md_doc_stream_8zh-cn.html#AutoUTFOutputStream", null ]
- ] ],
- [ "自定义流", "md_doc_stream_8zh-cn.html#CustomStream", [
- [ "例子:istream 的包装类", "md_doc_stream_8zh-cn.html#ExampleIStreamWrapper", null ],
- [ "例子:ostream 的包装类", "md_doc_stream_8zh-cn.html#ExampleOStreamWrapper", null ]
- ] ],
- [ "总结", "md_doc_stream_8zh-cn.html#Summary", null ]
- ] ],
- [ "编码", "md_doc_encoding_8zh-cn.html", [
- [ "Unicode", "md_doc_encoding_8zh-cn.html#Unicode", [
- [ "Unicode 转换格式", "md_doc_encoding_8zh-cn.html#UTF", null ],
- [ "字符类型", "md_doc_encoding_8zh-cn.html#CharacterType", null ],
- [ "AutoUTF", "md_doc_encoding_8zh-cn.html#AutoUTF", null ],
- [ "ASCII", "md_doc_encoding_8zh-cn.html#ASCII", null ]
- ] ],
- [ "校验及转码", "md_doc_encoding_8zh-cn.html#ValidationTranscoding", [
- [ "转码器", "md_doc_encoding_8zh-cn.html#Transcoder", null ]
- ] ]
- ] ],
- [ "DOM", "md_doc_dom_8zh-cn.html", [
- [ "模板", "md_doc_dom_8zh-cn.html#Template", [
- [ "编码", "md_doc_dom_8zh-cn.html#Encoding", null ],
- [ "分配器", "md_doc_dom_8zh-cn.html#Allocator", null ]
- ] ],
- [ "解析", "md_doc_dom_8zh-cn.html#Parsing", [
- [ "解析错误", "md_doc_dom_8zh-cn.html#ParseError", null ],
- [ "原位解析", "md_doc_dom_8zh-cn.html#InSituParsing", null ],
- [ "转码与校验", "md_doc_dom_8zh-cn.html#TranscodingAndValidation", null ]
- ] ],
- [ "技巧", "md_doc_dom_8zh-cn.html#Techniques", [
- [ "使用者缓冲区", "md_doc_dom_8zh-cn.html#UserBuffer", null ]
- ] ]
- ] ],
- [ "SAX", "md_doc_sax_8zh-cn.html", [
- [ "Reader", "md_doc_sax_8zh-cn.html#Reader", [
- [ "处理器", "md_doc_sax_8zh-cn.html#Handler", null ],
- [ "GenericReader", "md_doc_sax_8zh-cn.html#GenericReader", null ]
- ] ],
- [ "Writer", "md_doc_sax_8zh-cn.html#Writer", [
- [ "PrettyWriter", "md_doc_sax_8zh-cn.html#PrettyWriter", null ],
- [ "完整性及重置", "md_doc_sax_8zh-cn.html#CompletenessReset", null ],
- [ "解析 JSON 至自定义结构", "md_doc_sax_8zh-cn.html#CustomDataStructure", null ],
- [ "过滤 JSON", "md_doc_sax_8zh-cn.html#Filtering", null ]
- ] ]
- ] ],
- [ "Schema", "md_doc_schema_8zh-cn.html", null ],
- [ "性能", "md_doc_performance_8zh-cn.html", null ],
- [ "内部架构", "md_doc_internals_8zh-cn.html", [
- [ "架构", "md_doc_internals_8zh-cn.html#Architecture", null ],
- [ "值(Value)", "md_doc_internals_8zh-cn.html#Value", [
- [ "数据布局", "md_doc_internals_8zh-cn.html#DataLayout", null ],
- [ "标志", "md_doc_internals_8zh-cn.html#Flags", null ],
- [ "短字符串优化", "md_doc_internals_8zh-cn.html#ShortString", null ]
- ] ],
- [ "分配器(Allocator)", "md_doc_internals_8zh-cn.html#InternalAllocator", [
- [ "MemoryPoolAllocator", "md_doc_internals_8zh-cn.html#MemoryPoolAllocator", null ]
- ] ],
- [ "解析优化", "md_doc_internals_8zh-cn.html#ParsingOptimization", [
- [ "使用 SIMD 跳过空格", "md_doc_internals_8zh-cn.html#SkipwhitespaceWithSIMD", null ],
- [ "局部流拷贝", "md_doc_internals_8zh-cn.html#LocalStreamCopy", null ],
- [ "解析为双精度浮点数", "md_doc_internals_8zh-cn.html#ParsingDouble", null ]
- ] ],
- [ "生成优化", "md_doc_internals_8zh-cn.html#GenerationOptimization", [
- [ "整数到字符串的转换", "md_doc_internals_8zh-cn.html#itoa", null ],
- [ "双精度浮点数到字符串的转换", "md_doc_internals_8zh-cn.html#dtoa", null ]
- ] ],
- [ "解析器", "md_doc_internals_8zh-cn.html#Parser", [
- [ "迭代解析", "md_doc_internals_8zh-cn.html#IterativeParser", [
- [ "语法", "md_doc_internals_8zh-cn.html#IterativeParserGrammar", null ],
- [ "解析表", "md_doc_internals_8zh-cn.html#IterativeParserParsingTable", null ],
- [ "实现", "md_doc_internals_8zh-cn.html#IterativeParserImplementation", null ]
- ] ]
- ] ]
- ] ],
- [ "常见问题", "md_doc_faq_8zh-cn.html", null ],
- [ "模块", "modules.html", "modules" ],
- [ "命名空间成员", "namespacemembers.html", [
- [ "全部", "namespacemembers.html", null ],
- [ "函数", "namespacemembers_func.html", null ],
- [ "类型定义", "namespacemembers_type.html", null ],
- [ "枚举", "namespacemembers_enum.html", null ],
- [ "枚举值", "namespacemembers_eval.html", null ]
- ] ],
- [ "类", null, [
- [ "类列表", "annotated.html", "annotated" ],
- [ "类继承关系", "hierarchy.html", "hierarchy" ],
- [ "类成员", "functions.html", [
- [ "全部", "functions.html", "functions_dup" ],
- [ "函数", "functions_func.html", "functions_func" ],
- [ "变量", "functions_vars.html", null ],
- [ "类型定义", "functions_type.html", null ],
- [ "相关函数", "functions_rela.html", null ]
- ] ]
- ] ],
- [ "文件", null, [
- [ "文件列表", "files.html", "files" ],
- [ "文件成员", "globals.html", [
- [ "全部", "globals.html", null ],
- [ "宏定义", "globals_defs.html", null ]
- ] ]
- ] ]
- ] ]
-];
-
-var NAVTREEINDEX =
-[
-"allocators_8h_source.html",
-"classrapidjson_1_1_generic_object.html#ae38ccb43fb8bbd15ebcfbfb7ef02b6ce",
-"classrapidjson_1_1_generic_value.html#acf5019b9002ebfd66a1191d19e986c7b",
-"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga77005e892e6601599beaf421b0395c31",
-"structrapidjson_1_1_base_reader_handler.html#a9627844582969a7d79a2250bdb4f9ec0"
-];
-
-var SYNCONMSG = 'click to disable panel synchronisation';
-var SYNCOFFMSG = 'click to enable panel synchronisation';
var navTreeSubIndices = new Array();
+var arrowDown = '&#9660;';
+var arrowRight = '&#9658;';
function getData(varName)
{
@@ -238,17 +73,17 @@ function cachedLink()
function getScript(scriptName,func,show)
{
- var head = document.getElementsByTagName("head")[0];
+ var head = document.getElementsByTagName("head")[0];
var script = document.createElement('script');
script.id = scriptName;
script.type = 'text/javascript';
- script.onload = func;
- script.src = scriptName+'.js';
- if ($.browser.msie && $.browser.version<=8) {
+ script.onload = func;
+ script.src = scriptName+'.js';
+ if ($.browser.msie && $.browser.version<=8) {
// script.onload does not work with older versions of IE
script.onreadystatechange = function() {
- if (script.readyState=='complete' || script.readyState=='loaded') {
- func(); if (show) showRoot();
+ if (script.readyState=='complete' || script.readyState=='loaded') {
+ func(); if (show) showRoot();
}
}
}
@@ -261,18 +96,17 @@ function createIndent(o,domNode,node,level)
var n = node;
while (n.parentNode) { level++; n=n.parentNode; }
if (node.childrenData) {
- var imgNode = document.createElement("img");
+ var imgNode = document.createElement("span");
+ imgNode.className = 'arrow';
imgNode.style.paddingLeft=(16*level).toString()+'px';
- imgNode.width = 16;
- imgNode.height = 22;
- imgNode.border = 0;
+ imgNode.innerHTML=arrowRight;
node.plus_img = imgNode;
node.expandToggle = document.createElement("a");
node.expandToggle.href = "javascript:void(0)";
node.expandToggle.onclick = function() {
if (node.expanded) {
$(node.getChildrenUL()).slideUp("fast");
- node.plus_img.src = node.relpath+"ftv2pnode.png";
+ node.plus_img.innerHTML=arrowRight;
node.expanded = false;
} else {
expandNode(o, node, false, false);
@@ -280,15 +114,13 @@ function createIndent(o,domNode,node,level)
}
node.expandToggle.appendChild(imgNode);
domNode.appendChild(node.expandToggle);
- imgNode.src = node.relpath+"ftv2pnode.png";
} else {
var span = document.createElement("span");
- span.style.display = 'inline-block';
+ span.className = 'arrow';
span.style.width = 16*(level+1)+'px';
- span.style.height = '22px';
span.innerHTML = '&#160;';
domNode.appendChild(span);
- }
+ }
}
var animationInProgress = false;
@@ -362,7 +194,7 @@ function newNode(o, po, text, link, childrenData, lastNode)
var aname = '#'+link.split('#')[1];
var srcPage = stripPath(pathName());
var targetPage = stripPath(link.split('#')[0]);
- a.href = srcPage!=targetPage ? url : "javascript:void(0)";
+ a.href = srcPage!=targetPage ? url : "javascript:void(0)";
a.onclick = function(){
storeLink(link);
if (!$(a).parent().parent().hasClass('selected'))
@@ -380,7 +212,7 @@ function newNode(o, po, text, link, childrenData, lastNode)
a.onclick = function() { storeLink(link); }
}
} else {
- if (childrenData != null)
+ if (childrenData != null)
{
a.className = "nolink";
a.href = "javascript:void(0)";
@@ -429,17 +261,13 @@ function expandNode(o, node, imm, showRoot)
} else {
if (!node.childrenVisited) {
getNode(o, node);
- } if (imm || ($.browser.msie && $.browser.version>8)) {
+ } if (imm || ($.browser.msie && $.browser.version>8)) {
// somehow slideDown jumps to the start of tree for IE9 :-(
$(node.getChildrenUL()).show();
} else {
$(node.getChildrenUL()).slideDown("fast");
}
- if (node.isLast) {
- node.plus_img.src = node.relpath+"ftv2mlastnode.png";
- } else {
- node.plus_img.src = node.relpath+"ftv2mnode.png";
- }
+ node.plus_img.innerHTML = arrowDown;
node.expanded = true;
}
}
@@ -508,11 +336,7 @@ function showNode(o, node, index, hash)
getNode(o, node);
}
$(node.getChildrenUL()).css({'display':'block'});
- if (node.isLast) {
- node.plus_img.src = node.relpath+"ftv2mlastnode.png";
- } else {
- node.plus_img.src = node.relpath+"ftv2mnode.png";
- }
+ node.plus_img.innerHTML = arrowDown;
node.expanded = true;
var n = node.children[o.breadcrumbs[index]];
if (index+1<o.breadcrumbs.length) {
@@ -649,10 +473,9 @@ function initNavTree(toroot,relpath)
o.node.relpath = relpath;
o.node.expanded = false;
o.node.isLast = true;
- o.node.plus_img = document.createElement("img");
- o.node.plus_img.src = relpath+"ftv2pnode.png";
- o.node.plus_img.width = 16;
- o.node.plus_img.height = 22;
+ o.node.plus_img = document.createElement("span");
+ o.node.plus_img.className = 'arrow';
+ o.node.plus_img.innerHTML = arrowRight;
if (localStorageSupported()) {
var navSync = $('#nav-sync');
diff --git a/zh-cn/navtreedata.js b/zh-cn/navtreedata.js
new file mode 100644
index 00000000..3c71f3a6
--- /dev/null
+++ b/zh-cn/navtreedata.js
@@ -0,0 +1,171 @@
+var NAVTREE =
+[
+ [ "RapidJSON", "index.html", [
+ [ "Change Log", "md__c_h_a_n_g_e_l_o_g.html", null ],
+ [ "特点", "md_doc_features_8zh-cn.html", null ],
+ [ "教程", "md_doc_tutorial_8zh-cn.html", [
+ [ "Value 及 Document", "md_doc_tutorial_8zh-cn.html#ValueDocument", null ],
+ [ "查询 Value", "md_doc_tutorial_8zh-cn.html#QueryValue", [
+ [ "查询 Array", "md_doc_tutorial_8zh-cn.html#QueryArray", null ],
+ [ "查询 Object", "md_doc_tutorial_8zh-cn.html#QueryObject", null ],
+ [ "查询 Number", "md_doc_tutorial_8zh-cn.html#QueryNumber", null ],
+ [ "查询 String", "md_doc_tutorial_8zh-cn.html#QueryString", null ]
+ ] ],
+ [ "创建/修改值", "md_doc_tutorial_8zh-cn.html#CreateModifyValues", [
+ [ "改变 Value 类型", "md_doc_tutorial_8zh-cn.html#ChangeValueType", null ],
+ [ "转移语义(Move Semantics)", "md_doc_tutorial_8zh-cn.html#MoveSemantics", [
+ [ "转移语义及临时值", "md_doc_tutorial_8zh-cn.html#TemporaryValues", null ]
+ ] ],
+ [ "创建 String", "md_doc_tutorial_8zh-cn.html#CreateString", null ],
+ [ "修改 Array", "md_doc_tutorial_8zh-cn.html#ModifyArray", null ],
+ [ "修改 Object", "md_doc_tutorial_8zh-cn.html#ModifyObject", null ],
+ [ "深复制 Value", "md_doc_tutorial_8zh-cn.html#DeepCopyValue", null ],
+ [ "交换 Value", "md_doc_tutorial_8zh-cn.html#SwapValues", null ]
+ ] ],
+ [ "下一部分", "md_doc_tutorial_8zh-cn.html#WhatsNext", null ]
+ ] ],
+ [ "Pointer", "md_doc_pointer_8zh-cn.html", [
+ [ "JSON Pointer", "md_doc_pointer_8zh-cn.html#JsonPointer", null ],
+ [ "基本使用方法", "md_doc_pointer_8zh-cn.html#BasicUsage", null ],
+ [ "辅助函数", "md_doc_pointer_8zh-cn.html#HelperFunctions", null ],
+ [ "解析 Pointer", "md_doc_pointer_8zh-cn.html#ResolvingPointer", null ],
+ [ "错误处理", "md_doc_pointer_8zh-cn.html#ErrorHandling", null ],
+ [ "URI 片段表示方式", "md_doc_pointer_8zh-cn.html#URIFragment", null ],
+ [ "使用者提供的 tokens", "md_doc_pointer_8zh-cn.html#UserSuppliedTokens", null ]
+ ] ],
+ [ "流", "md_doc_stream_8zh-cn.html", [
+ [ "内存流", "md_doc_stream_8zh-cn.html#MemoryStreams", [
+ [ "StringStream(输入)", "md_doc_stream_8zh-cn.html#StringStream", null ],
+ [ "StringBuffer(输出)", "md_doc_stream_8zh-cn.html#StringBuffer", null ]
+ ] ],
+ [ "文件流", "md_doc_stream_8zh-cn.html#FileStreams", [
+ [ "FileReadStream(输入)", "md_doc_stream_8zh-cn.html#FileReadStream", null ],
+ [ "FileWriteStream(输出)", "md_doc_stream_8zh-cn.html#FileWriteStream", null ]
+ ] ],
+ [ "iostream 包装类", "md_doc_stream_8zh-cn.html#iostreamWrapper", [
+ [ "IStreamWrapper", "md_doc_stream_8zh-cn.html#IStreamWrapper", null ],
+ [ "OStreamWrapper", "md_doc_stream_8zh-cn.html#OStreamWrapper", null ]
+ ] ],
+ [ "编码流", "md_doc_stream_8zh-cn.html#EncodedStreams", [
+ [ "EncodedInputStream", "md_doc_stream_8zh-cn.html#EncodedInputStream", null ],
+ [ "EncodedOutputStream", "md_doc_stream_8zh-cn.html#EncodedOutputStream", null ],
+ [ "AutoUTFInputStream", "md_doc_stream_8zh-cn.html#AutoUTFInputStream", null ],
+ [ "AutoUTFOutputStream", "md_doc_stream_8zh-cn.html#AutoUTFOutputStream", null ]
+ ] ],
+ [ "自定义流", "md_doc_stream_8zh-cn.html#CustomStream", [
+ [ "例子:istream 的包装类", "md_doc_stream_8zh-cn.html#ExampleIStreamWrapper", null ],
+ [ "例子:ostream 的包装类", "md_doc_stream_8zh-cn.html#ExampleOStreamWrapper", null ]
+ ] ],
+ [ "总结", "md_doc_stream_8zh-cn.html#Summary", null ]
+ ] ],
+ [ "编码", "md_doc_encoding_8zh-cn.html", [
+ [ "Unicode", "md_doc_encoding_8zh-cn.html#Unicode", [
+ [ "Unicode 转换格式", "md_doc_encoding_8zh-cn.html#UTF", null ],
+ [ "字符类型", "md_doc_encoding_8zh-cn.html#CharacterType", null ],
+ [ "AutoUTF", "md_doc_encoding_8zh-cn.html#AutoUTF", null ],
+ [ "ASCII", "md_doc_encoding_8zh-cn.html#ASCII", null ]
+ ] ],
+ [ "校验及转码", "md_doc_encoding_8zh-cn.html#ValidationTranscoding", [
+ [ "转码器", "md_doc_encoding_8zh-cn.html#Transcoder", null ]
+ ] ]
+ ] ],
+ [ "DOM", "md_doc_dom_8zh-cn.html", [
+ [ "模板", "md_doc_dom_8zh-cn.html#Template", [
+ [ "编码", "md_doc_dom_8zh-cn.html#Encoding", null ],
+ [ "分配器", "md_doc_dom_8zh-cn.html#Allocator", null ]
+ ] ],
+ [ "解析", "md_doc_dom_8zh-cn.html#Parsing", [
+ [ "解析错误", "md_doc_dom_8zh-cn.html#ParseError", null ],
+ [ "原位解析", "md_doc_dom_8zh-cn.html#InSituParsing", null ],
+ [ "转码与校验", "md_doc_dom_8zh-cn.html#TranscodingAndValidation", null ]
+ ] ],
+ [ "技巧", "md_doc_dom_8zh-cn.html#Techniques", [
+ [ "使用者缓冲区", "md_doc_dom_8zh-cn.html#UserBuffer", null ]
+ ] ]
+ ] ],
+ [ "SAX", "md_doc_sax_8zh-cn.html", [
+ [ "Reader", "md_doc_sax_8zh-cn.html#Reader", [
+ [ "处理器", "md_doc_sax_8zh-cn.html#Handler", null ],
+ [ "GenericReader", "md_doc_sax_8zh-cn.html#GenericReader", null ],
+ [ "解析", "md_doc_sax_8zh-cn.html#SaxParsing", null ]
+ ] ],
+ [ "Writer", "md_doc_sax_8zh-cn.html#Writer", [
+ [ "模板", "md_doc_sax_8zh-cn.html#WriterTemplate", null ],
+ [ "PrettyWriter", "md_doc_sax_8zh-cn.html#PrettyWriter", null ],
+ [ "完整性及重置", "md_doc_sax_8zh-cn.html#CompletenessReset", null ]
+ ] ],
+ [ "技巧", "md_doc_sax_8zh-cn.html#SaxTechniques", [
+ [ "解析 JSON 至自定义结构", "md_doc_sax_8zh-cn.html#CustomDataStructure", null ],
+ [ "过滤 JSON", "md_doc_sax_8zh-cn.html#Filtering", null ]
+ ] ]
+ ] ],
+ [ "Schema", "md_doc_schema_8zh-cn.html", null ],
+ [ "性能", "md_doc_performance_8zh-cn.html", null ],
+ [ "内部架构", "md_doc_internals_8zh-cn.html", [
+ [ "架构", "md_doc_internals_8zh-cn.html#Architecture", null ],
+ [ "值(Value)", "md_doc_internals_8zh-cn.html#Value", [
+ [ "数据布局", "md_doc_internals_8zh-cn.html#DataLayout", null ],
+ [ "标志", "md_doc_internals_8zh-cn.html#Flags", null ],
+ [ "短字符串优化", "md_doc_internals_8zh-cn.html#ShortString", null ]
+ ] ],
+ [ "分配器(Allocator)", "md_doc_internals_8zh-cn.html#InternalAllocator", [
+ [ "MemoryPoolAllocator", "md_doc_internals_8zh-cn.html#MemoryPoolAllocator", null ]
+ ] ],
+ [ "解析优化", "md_doc_internals_8zh-cn.html#ParsingOptimization", [
+ [ "使用 SIMD 跳过空格", "md_doc_internals_8zh-cn.html#SkipwhitespaceWithSIMD", null ],
+ [ "局部流拷贝", "md_doc_internals_8zh-cn.html#LocalStreamCopy", null ],
+ [ "解析为双精度浮点数", "md_doc_internals_8zh-cn.html#ParsingDouble", null ]
+ ] ],
+ [ "生成优化", "md_doc_internals_8zh-cn.html#GenerationOptimization", [
+ [ "整数到字符串的转换", "md_doc_internals_8zh-cn.html#itoa", null ],
+ [ "双精度浮点数到字符串的转换", "md_doc_internals_8zh-cn.html#dtoa", null ]
+ ] ],
+ [ "解析器", "md_doc_internals_8zh-cn.html#Parser", [
+ [ "迭代解析", "md_doc_internals_8zh-cn.html#IterativeParser", [
+ [ "语法", "md_doc_internals_8zh-cn.html#IterativeParserGrammar", null ],
+ [ "解析表", "md_doc_internals_8zh-cn.html#IterativeParserParsingTable", null ],
+ [ "实现", "md_doc_internals_8zh-cn.html#IterativeParserImplementation", null ]
+ ] ]
+ ] ]
+ ] ],
+ [ "常见问题", "md_doc_faq_8zh-cn.html", null ],
+ [ "模块", "modules.html", "modules" ],
+ [ "命名空间成员", "namespacemembers.html", [
+ [ "全部", "namespacemembers.html", null ],
+ [ "函数", "namespacemembers_func.html", null ],
+ [ "类型定义", "namespacemembers_type.html", null ],
+ [ "枚举", "namespacemembers_enum.html", null ],
+ [ "枚举值", "namespacemembers_eval.html", null ]
+ ] ],
+ [ "类", "annotated.html", [
+ [ "类列表", "annotated.html", "annotated_dup" ],
+ [ "类继承关系", "hierarchy.html", "hierarchy" ],
+ [ "类成员", "functions.html", [
+ [ "全部", "functions.html", "functions_dup" ],
+ [ "函数", "functions_func.html", "functions_func" ],
+ [ "变量", "functions_vars.html", null ],
+ [ "类型定义", "functions_type.html", null ],
+ [ "相关函数", "functions_rela.html", null ]
+ ] ]
+ ] ],
+ [ "文件", null, [
+ [ "文件列表", "files.html", "files" ],
+ [ "文件成员", "globals.html", [
+ [ "全部", "globals.html", null ],
+ [ "宏定义", "globals_defs.html", null ]
+ ] ]
+ ] ]
+ ] ]
+];
+
+var NAVTREEINDEX =
+[
+"allocators_8h_source.html",
+"classrapidjson_1_1_generic_object.html#af94485b6c52b821203fe2c23a92c282f",
+"classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b",
+"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga77005e892e6601599beaf421b0395c31",
+"structrapidjson_1_1_base_reader_handler.html#a823c816871a8dd881019ee8526b517cb"
+];
+
+var SYNCONMSG = '点击 关闭 面板同步';
+var SYNCOFFMSG = '点击 开启 面板同步'; \ No newline at end of file
diff --git a/zh-cn/navtreeindex0.js b/zh-cn/navtreeindex0.js
index b1f47445..684d300a 100644
--- a/zh-cn/navtreeindex0.js
+++ b/zh-cn/navtreeindex0.js
@@ -5,13 +5,13 @@ var NAVTREEINDEX0 =
"biginteger_8h_source.html":[15,0,0,0,1,0],
"classrapidjson_1_1_allocator.html":[14,0,0,0],
"classrapidjson_1_1_auto_u_t_f_input_stream.html":[14,0,0,3],
-"classrapidjson_1_1_auto_u_t_f_input_stream.html#a1e513c05b0be76071bfd31d528e8f3ed":[14,0,0,3,10],
-"classrapidjson_1_1_auto_u_t_f_input_stream.html#a21bdc07e3ee29a6c1139cecb748f3720":[14,0,0,3,5],
+"classrapidjson_1_1_auto_u_t_f_input_stream.html#a1e9b3e74895d28625fd184cf8897ed18":[14,0,0,3,10],
+"classrapidjson_1_1_auto_u_t_f_input_stream.html#a3666311c98787d9ed61b9fed2f3ac983":[14,0,0,3,3],
"classrapidjson_1_1_auto_u_t_f_input_stream.html#a407d1e2e7db6a547833e6b0a44162b6e":[14,0,0,3,6],
-"classrapidjson_1_1_auto_u_t_f_input_stream.html#a41853ea451467d098fa0034e8e01ac47":[14,0,0,3,4],
"classrapidjson_1_1_auto_u_t_f_input_stream.html#a5c9f041a3b32bf15bc9be888a8731d35":[14,0,0,3,1],
+"classrapidjson_1_1_auto_u_t_f_input_stream.html#a6c5f36399d52fdc8230c25e092d4c357":[14,0,0,3,5],
"classrapidjson_1_1_auto_u_t_f_input_stream.html#a6d9eca095f7ef8c249ebe43568d66d0e":[14,0,0,3,0],
-"classrapidjson_1_1_auto_u_t_f_input_stream.html#aa7a839dd7b37ef7e09fce3288dd8a554":[14,0,0,3,3],
+"classrapidjson_1_1_auto_u_t_f_input_stream.html#a9934b27779fad9e36e6a85cbbaf21877":[14,0,0,3,4],
"classrapidjson_1_1_auto_u_t_f_input_stream.html#abd4074558faa530f19aeeca6339e58e4":[14,0,0,3,9],
"classrapidjson_1_1_auto_u_t_f_input_stream.html#ad148d858b28b501d16d68b5e5af8602e":[14,0,0,3,2],
"classrapidjson_1_1_auto_u_t_f_input_stream.html#ae2706e06ffd8666c40c3a51705eef76c":[14,0,0,3,7],
@@ -22,126 +22,126 @@ var NAVTREEINDEX0 =
"classrapidjson_1_1_auto_u_t_f_output_stream.html#a0fd284bc102b7802bf5541a3169d912e":[14,0,0,4,8],
"classrapidjson_1_1_auto_u_t_f_output_stream.html#a11ab92b78f15ccb20917887f06d6de66":[14,0,0,4,5],
"classrapidjson_1_1_auto_u_t_f_output_stream.html#a39c828ee4c5b052df7338ec7fda1a17d":[14,0,0,4,1],
-"classrapidjson_1_1_auto_u_t_f_output_stream.html#a778eedb35104758eafadd9d0deab2913":[14,0,0,4,4],
-"classrapidjson_1_1_auto_u_t_f_output_stream.html#a78930d33c147ae74c29e4abb362e1c29":[14,0,0,4,9],
+"classrapidjson_1_1_auto_u_t_f_output_stream.html#a89e2fba1e92b4f1408744934fcb56881":[14,0,0,4,4],
"classrapidjson_1_1_auto_u_t_f_output_stream.html#aaf40884d8f4fbf24ea040d3363c9967e":[14,0,0,4,0],
-"classrapidjson_1_1_auto_u_t_f_output_stream.html#aafdb7398f46838d65f1ea550f124eab0":[14,0,0,4,3],
+"classrapidjson_1_1_auto_u_t_f_output_stream.html#ac6c7dadb3851cf9e49c55273dd89937c":[14,0,0,4,9],
"classrapidjson_1_1_auto_u_t_f_output_stream.html#ad3c65d2c5f94590add9bd743f09c0c63":[14,0,0,4,6],
+"classrapidjson_1_1_auto_u_t_f_output_stream.html#ae01c4c0e6ac78b9bc875a9e73c63fd05":[14,0,0,4,3],
"classrapidjson_1_1_basic_i_stream_wrapper.html":[14,0,0,6],
"classrapidjson_1_1_basic_i_stream_wrapper.html#a06939b6b8f349a611e6dd8ed82274a76":[14,0,0,6,7],
-"classrapidjson_1_1_basic_i_stream_wrapper.html#a0e9c8277d08c0896507460805b302dbc":[14,0,0,6,9],
+"classrapidjson_1_1_basic_i_stream_wrapper.html#a298096361d0d34706ba68af0a68e389f":[14,0,0,6,9],
"classrapidjson_1_1_basic_i_stream_wrapper.html#a2b4e069522fa9119685f1cee836e5cfa":[14,0,0,6,1],
"classrapidjson_1_1_basic_i_stream_wrapper.html#a5175c92fadc5278b215bad1822b62267":[14,0,0,6,6],
-"classrapidjson_1_1_basic_i_stream_wrapper.html#a5e758b5c252ec7b4e03e19b7112a03f3":[14,0,0,6,3],
"classrapidjson_1_1_basic_i_stream_wrapper.html#a5fd972d8cd20b90ba0772aeebf122597":[14,0,0,6,0],
"classrapidjson_1_1_basic_i_stream_wrapper.html#ab787ec1bce9ec0e4ddc42cde173d3ab1":[14,0,0,6,2],
"classrapidjson_1_1_basic_i_stream_wrapper.html#ac803b6494e23a3432c6da1ba9cb9abdc":[14,0,0,6,8],
-"classrapidjson_1_1_basic_i_stream_wrapper.html#ae48f5624f0eb9ff2d58631d254bb0ab7":[14,0,0,6,4],
+"classrapidjson_1_1_basic_i_stream_wrapper.html#adfae250fbfdf7dda0ee9b3895758e767":[14,0,0,6,3],
"classrapidjson_1_1_basic_i_stream_wrapper.html#af020a73e0739581f784b68c1f5adb385":[14,0,0,6,5],
+"classrapidjson_1_1_basic_i_stream_wrapper.html#afaece8ea8d7b73abc0d4942070b41f8a":[14,0,0,6,4],
"classrapidjson_1_1_basic_o_stream_wrapper.html":[14,0,0,7],
"classrapidjson_1_1_basic_o_stream_wrapper.html#a0d9c9c5d11e53ea486cf555fb43d6fe2":[14,0,0,7,5],
-"classrapidjson_1_1_basic_o_stream_wrapper.html#a1614c9862e711b62e7df0329410830e5":[14,0,0,7,3],
-"classrapidjson_1_1_basic_o_stream_wrapper.html#a41654718c87b0db23c17a14d52852b74":[14,0,0,7,8],
"classrapidjson_1_1_basic_o_stream_wrapper.html#a4d981433f0df0fbcaed206d11642b183":[14,0,0,7,2],
"classrapidjson_1_1_basic_o_stream_wrapper.html#a4ea92ceb4c1fae9cdd1912f2ab07dd73":[14,0,0,7,7],
"classrapidjson_1_1_basic_o_stream_wrapper.html#a615d4f601af4c039c9087a50578226b0":[14,0,0,7,0],
"classrapidjson_1_1_basic_o_stream_wrapper.html#a68222d18ea4a16917b374ca53f78bbcd":[14,0,0,7,1],
+"classrapidjson_1_1_basic_o_stream_wrapper.html#a6bf51fa9e5692dceaf98b0cceba3f7e2":[14,0,0,7,8],
"classrapidjson_1_1_basic_o_stream_wrapper.html#a8e1c33024d08945a32b85aeba87dca82":[14,0,0,7,6],
+"classrapidjson_1_1_basic_o_stream_wrapper.html#ac3baaf203553871fbd849368e1b5526e":[14,0,0,7,3],
"classrapidjson_1_1_basic_o_stream_wrapper.html#ae4e99bf009dd43c7e760eebae4e732ac":[14,0,0,7,4],
"classrapidjson_1_1_crt_allocator.html":[14,0,0,8],
"classrapidjson_1_1_crt_allocator.html#a5378ce42f3fe244f8826d85757271ed0":[14,0,0,8,1],
"classrapidjson_1_1_crt_allocator.html#aa3dab0aa1b00fc5b6e6cf29708e6667f":[14,0,0,8,0],
"classrapidjson_1_1_encoded_input_stream.html":[14,0,0,9],
"classrapidjson_1_1_encoded_input_stream.html#a0eec878bbb78d4e672212931dd566eb3":[14,0,0,9,1],
+"classrapidjson_1_1_encoded_input_stream.html#a120a6eb51f4e96dc164ffa70659b34f7":[14,0,0,9,3],
"classrapidjson_1_1_encoded_input_stream.html#a4caab7f136c784d2d47539bedb106b35":[14,0,0,9,6],
"classrapidjson_1_1_encoded_input_stream.html#a518de4fc2f2da0d55005d6334a93a704":[14,0,0,9,4],
"classrapidjson_1_1_encoded_input_stream.html#a56f9a8c6636976e173f41f88f0028dbb":[14,0,0,9,2],
-"classrapidjson_1_1_encoded_input_stream.html#a6165120ca88b62a1839dde0566b52828":[14,0,0,9,3],
+"classrapidjson_1_1_encoded_input_stream.html#a6142e8348c47443eddce35bf7203ca29":[14,0,0,9,8],
"classrapidjson_1_1_encoded_input_stream.html#a6182dbfa7cf1c5f29e1cc0e9b575c95e":[14,0,0,9,7],
"classrapidjson_1_1_encoded_input_stream.html#a65d027f1323e1f615b5893c3625cacd0":[14,0,0,9,5],
-"classrapidjson_1_1_encoded_input_stream.html#ab2e25998df6a33f8cae7f70cfef9297a":[14,0,0,9,8],
"classrapidjson_1_1_encoded_input_stream.html#ac1cf99de822b615beaa5e33ac989a20a":[14,0,0,9,0],
"classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html":[14,0,0,10],
-"classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a39fccd84f5f5e421e04d7ca9124ccc5f":[14,0,0,10,8],
+"classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a290e9bc39e7c717652ab5f3f83d5c273":[14,0,0,10,8],
"classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a40adb7c5a368025230a6e0d682f255b6":[14,0,0,10,1],
+"classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a4fc3d22ee4c1516066883546c1462c70":[14,0,0,10,3],
"classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a69362a93cd4e1ae73beea86848a70689":[14,0,0,10,4],
"classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a87daa0b45556f4e475f39754ba14815a":[14,0,0,10,2],
"classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a907f1851cfe76ae1c3eb9e2074bfa507":[14,0,0,10,0],
"classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#a954a2404a0b4419ada15d85f87e857c7":[14,0,0,10,6],
"classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#aa31436be9421373c4269d065883c2068":[14,0,0,10,5],
"classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#ac28dccc556d38360434cc36d4b5e7222":[14,0,0,10,9],
-"classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#adad05fb88d8e3d62fcb0fdd077906753":[14,0,0,10,3],
"classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html#ae9ca9ba461ddaabcc5c82c54bc55bd12":[14,0,0,10,7],
"classrapidjson_1_1_encoded_output_stream.html":[14,0,0,11],
"classrapidjson_1_1_encoded_output_stream.html#a1ac9766d0a88f3913762e51512cc90e1":[14,0,0,11,1],
"classrapidjson_1_1_encoded_output_stream.html#a27f733fa1ba8b35b4fddd2a569ac4ba1":[14,0,0,11,7],
-"classrapidjson_1_1_encoded_output_stream.html#a43030332e4e4e08788ae76bc41e1bab7":[14,0,0,11,8],
"classrapidjson_1_1_encoded_output_stream.html#a6739a8fb953962998438c636ff9f05a3":[14,0,0,11,6],
"classrapidjson_1_1_encoded_output_stream.html#a725ecc2947f20d49b8dc0baf93929923":[14,0,0,11,2],
+"classrapidjson_1_1_encoded_output_stream.html#a8f7a07f454334646a679afa49c930e8e":[14,0,0,11,3],
"classrapidjson_1_1_encoded_output_stream.html#aa96ac761f570fbdbcc2375ad4edd8b6f":[14,0,0,11,0],
-"classrapidjson_1_1_encoded_output_stream.html#ae63eda01064846ee9d04f1f7f3b29a82":[14,0,0,11,3],
+"classrapidjson_1_1_encoded_output_stream.html#accd11ac295fedffb5398546fca7138c2":[14,0,0,11,8],
"classrapidjson_1_1_encoded_output_stream.html#af5d5dbcd275de9c9a565f8e01a9cf559":[14,0,0,11,5],
"classrapidjson_1_1_encoded_output_stream.html#afe815c555bae4a46cc0c119b695b9d31":[14,0,0,11,4],
"classrapidjson_1_1_encoding.html":[14,0,0,12],
"classrapidjson_1_1_file_read_stream.html":[14,0,0,13],
+"classrapidjson_1_1_file_read_stream.html#a100ae611dab44b2533e3a13d409c8234":[14,0,0,13,9],
"classrapidjson_1_1_file_read_stream.html#a1b3ae0fe7ad88d8c9c1fac7854d1d7ec":[14,0,0,13,2],
"classrapidjson_1_1_file_read_stream.html#a3160ea8b9906840ef690a07784b97acf":[14,0,0,13,7],
-"classrapidjson_1_1_file_read_stream.html#a4906a871babb1f99ab583cf1c20dfc8d":[14,0,0,13,9],
"classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929":[14,0,0,13,0],
"classrapidjson_1_1_file_read_stream.html#a5230a74fccebd3bc41f5e455e3cf7777":[14,0,0,13,6],
"classrapidjson_1_1_file_read_stream.html#a581c9287a3d0df4db997276be40c1d29":[14,0,0,13,5],
"classrapidjson_1_1_file_read_stream.html#a72b610ada5d86e8977a2bc1f2f4c0808":[14,0,0,13,1],
+"classrapidjson_1_1_file_read_stream.html#a905873a05053d1415f73c5c05c732b32":[14,0,0,13,4],
"classrapidjson_1_1_file_read_stream.html#a96ccdf2feca81ad57ccfd489ffeaf84b":[14,0,0,13,8],
-"classrapidjson_1_1_file_read_stream.html#acd66b37d543e380c1a0b439210762b7b":[14,0,0,13,3],
-"classrapidjson_1_1_file_read_stream.html#ae40bad01efd692ce99ef08031a9a1b4b":[14,0,0,13,4],
+"classrapidjson_1_1_file_read_stream.html#ac1ae71d3abf9de0da0fcd02f4a4a91e1":[14,0,0,13,3],
"classrapidjson_1_1_file_write_stream.html":[14,0,0,14],
"classrapidjson_1_1_file_write_stream.html#a330ab2dff49aca7015f92e699a675f11":[14,0,0,14,5],
"classrapidjson_1_1_file_write_stream.html#a5a3b2b270c90f4672400d36a4f056fbc":[14,0,0,14,4],
"classrapidjson_1_1_file_write_stream.html#a6b3d198633b02a7d016b8833b4615b33":[14,0,0,14,8],
"classrapidjson_1_1_file_write_stream.html#a6e66d814422fd311a908cf2145535b99":[14,0,0,14,7],
+"classrapidjson_1_1_file_write_stream.html#a8a9816245140dac55d66c24d5f21e231":[14,0,0,14,3],
"classrapidjson_1_1_file_write_stream.html#a9abf2078f78a30c7ad868f480e4221be":[14,0,0,14,1],
-"classrapidjson_1_1_file_write_stream.html#aa29c9e8cf63110d93ff7efd3c9878ff5":[14,0,0,14,3],
+"classrapidjson_1_1_file_write_stream.html#ab57d1149f396b095b1eab2154974983d":[14,0,0,14,9],
"classrapidjson_1_1_file_write_stream.html#ac755d1f640dc82a2359b2867ce09ac0c":[14,0,0,14,6],
-"classrapidjson_1_1_file_write_stream.html#ac98579a05c02fb64eee509860bc9b989":[14,0,0,14,9],
"classrapidjson_1_1_file_write_stream.html#ad21fb3d1318a91a1d32ce971378981e1":[14,0,0,14,2],
"classrapidjson_1_1_file_write_stream.html#afc606cc81f6c3709d81bf99b30566330":[14,0,0,14,0],
"classrapidjson_1_1_generic_array.html":[14,0,0,15],
-"classrapidjson_1_1_generic_array.html#a0f01edc26dc5a8843dfc1c59579324a7":[14,0,0,15,14],
-"classrapidjson_1_1_generic_array.html#a217cd30de86c6088fd4235652f2d2dd1":[14,0,0,15,7],
-"classrapidjson_1_1_generic_array.html#a2ab0b1e708e7a4a2eeb4714e5762ca19":[14,0,0,15,21],
-"classrapidjson_1_1_generic_array.html#a322ae35485b05197a24820bbd58b71aa":[14,0,0,15,8],
-"classrapidjson_1_1_generic_array.html#a3547e50ff64b4cf3c747d8f5e3dae32b":[14,0,0,15,3],
-"classrapidjson_1_1_generic_array.html#a36ac5aaa10bd2b76bd86818301e553a2":[14,0,0,15,6],
-"classrapidjson_1_1_generic_array.html#a38b9056be3e83beb4de3332ecb8b3c8a":[14,0,0,15,22],
-"classrapidjson_1_1_generic_array.html#a406fbe61840670c49b6d1e567f748e98":[14,0,0,15,15],
-"classrapidjson_1_1_generic_array.html#a4cb1ce26601d5cce7d512c70abacc395":[14,0,0,15,13],
-"classrapidjson_1_1_generic_array.html#a5a52218e3b47904c19339aec9249e1c8":[14,0,0,15,23],
-"classrapidjson_1_1_generic_array.html#a61f0b8d0a91e9b48fcddb43bff9ab333":[14,0,0,15,19],
-"classrapidjson_1_1_generic_array.html#a88a62a594b5830293dacde8db609ba6a":[14,0,0,15,11],
+"classrapidjson_1_1_generic_array.html#a0308428814ba3ee5094114e2ccfa2572":[14,0,0,15,3],
+"classrapidjson_1_1_generic_array.html#a0bcd130448a9d68303523df7b22dc452":[14,0,0,15,20],
+"classrapidjson_1_1_generic_array.html#a13d2a18801a80add6e1bd9ad167822a5":[14,0,0,15,15],
+"classrapidjson_1_1_generic_array.html#a1b671cc963732398d9234cf01aa339ab":[14,0,0,15,12],
+"classrapidjson_1_1_generic_array.html#a27e2a9f13adcca6e0f191495cdce9689":[14,0,0,15,14],
+"classrapidjson_1_1_generic_array.html#a32299e51f24648e04757de26d952ffe7":[14,0,0,15,10],
+"classrapidjson_1_1_generic_array.html#a3ac4b469ea0a9034533fd4cbdbfc8616":[14,0,0,15,9],
+"classrapidjson_1_1_generic_array.html#a417eefa7bd2a3d357e947e64044f0bd9":[14,0,0,15,4],
+"classrapidjson_1_1_generic_array.html#a50ccee2eea89c21fcd29363506e5ed3f":[14,0,0,15,19],
+"classrapidjson_1_1_generic_array.html#a673eda4c52685461b5bbeccf2f2b5c88":[14,0,0,15,21],
+"classrapidjson_1_1_generic_array.html#a6f2b607cc4e648e5b250dea147843476":[14,0,0,15,2],
+"classrapidjson_1_1_generic_array.html#a78052c2a7bb54ee4ea7579df5eab480c":[14,0,0,15,11],
+"classrapidjson_1_1_generic_array.html#a82298d507b2b15c9d909c25a32f5afeb":[14,0,0,15,0],
"classrapidjson_1_1_generic_array.html#a899449e1a645b5e377af059fb61113d8":[14,0,0,15,25],
-"classrapidjson_1_1_generic_array.html#a8f15375c676103c3ad0dac92f3d17a90":[14,0,0,15,2],
-"classrapidjson_1_1_generic_array.html#a92a199e5417ad39a993e8d1c36b5aa3f":[14,0,0,15,4],
-"classrapidjson_1_1_generic_array.html#aa50b701c3115897bf0fd8bdf668235fe":[14,0,0,15,5],
-"classrapidjson_1_1_generic_array.html#aa6b6a24f9e2bb2b1f41972c949f6b54b":[14,0,0,15,20],
-"classrapidjson_1_1_generic_array.html#aaaa24a40bd60cb89ef67e172d73f6eac":[14,0,0,15,24],
-"classrapidjson_1_1_generic_array.html#acde662d9993be651a69b9ccd188a2df7":[14,0,0,15,10],
-"classrapidjson_1_1_generic_array.html#ad07fbe50d88d061dbe0c2c794db80a30":[14,0,0,15,0],
-"classrapidjson_1_1_generic_array.html#ad607ccb1b90fbb73ce8c428a36b1f1a4":[14,0,0,15,18],
-"classrapidjson_1_1_generic_array.html#adcd89fca44ecf2a92118e4d46ead180a":[14,0,0,15,12],
-"classrapidjson_1_1_generic_array.html#adfd9f67611fbd6297acb5b8c70fadacd":[14,0,0,15,16],
-"classrapidjson_1_1_generic_array.html#af544f625293fc10256dad72172743ed3":[14,0,0,15,1],
-"classrapidjson_1_1_generic_array.html#afcc807b170fa40a0e7a5d7eaba19cdb4":[14,0,0,15,17],
-"classrapidjson_1_1_generic_array.html#afd0f1cc1c6ee225273269f781dbad4a1":[14,0,0,15,9],
+"classrapidjson_1_1_generic_array.html#a9d3851894eaea693572b934541ee3563":[14,0,0,15,22],
+"classrapidjson_1_1_generic_array.html#aaa816f9b2ab65c842c343e5dbe99d876":[14,0,0,15,13],
+"classrapidjson_1_1_generic_array.html#ab9c9bffca8056d6b20b9f92334d35798":[14,0,0,15,17],
+"classrapidjson_1_1_generic_array.html#ad0473410a03268bbc25cb6d95ecc9925":[14,0,0,15,24],
+"classrapidjson_1_1_generic_array.html#ad1110e43990424e416555541731f229f":[14,0,0,15,23],
+"classrapidjson_1_1_generic_array.html#ad52689025256c94097a0e7bb1c70620e":[14,0,0,15,5],
+"classrapidjson_1_1_generic_array.html#ae3455ca0429fa330cb981c78fab473c0":[14,0,0,15,18],
+"classrapidjson_1_1_generic_array.html#ae59cd71ac1e26cc66ae0269991f82f26":[14,0,0,15,8],
+"classrapidjson_1_1_generic_array.html#ae82a8e56892743f606ae07da8f9a2f5a":[14,0,0,15,1],
+"classrapidjson_1_1_generic_array.html#ae94140e6dbab05cd3918d3e75819dc0a":[14,0,0,15,6],
+"classrapidjson_1_1_generic_array.html#aebd828a2f020262b41af908fbb28a571":[14,0,0,15,7],
+"classrapidjson_1_1_generic_array.html#af8fb2a13a98c62a284de0005850d624c":[14,0,0,15,16],
"classrapidjson_1_1_generic_document.html":[14,0,0,16],
"classrapidjson_1_1_generic_document.html#a09b1953e1610e182ddcf050b346957b2":[14,0,0,16,5],
"classrapidjson_1_1_generic_document.html#a0bdf1d5fc1f6305af484b0269d72a93e":[14,0,0,16,25],
"classrapidjson_1_1_generic_document.html#a0d63efcc43758ac3aed77e868233369d":[14,0,0,16,43],
-"classrapidjson_1_1_generic_document.html#a0de48f0c884423b6fcfabc2e93942968":[14,0,0,16,19],
"classrapidjson_1_1_generic_document.html#a133a57e6fa510655e2933decc7361ccc":[14,0,0,16,16],
+"classrapidjson_1_1_generic_document.html#a153e5a065ca9660673974f9df203be4b":[14,0,0,16,13],
"classrapidjson_1_1_generic_document.html#a278e93a502e19762fdfc337875ca34f8":[14,0,0,16,35],
-"classrapidjson_1_1_generic_document.html#a2ab17089bd6249bf2a7959d56d35cb68":[14,0,0,16,14],
"classrapidjson_1_1_generic_document.html#a31c317d08baedd18ef914e56d848659b":[14,0,0,16,28],
"classrapidjson_1_1_generic_document.html#a332d4082d24364fba781dc3d263b4202":[14,0,0,16,7],
+"classrapidjson_1_1_generic_document.html#a36d19989c9221b27036675455516a974":[14,0,0,16,19],
"classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85":[14,0,0,16,31],
"classrapidjson_1_1_generic_document.html#a3b56cdb811eea58932dcb1e425263831":[14,0,0,16,41],
"classrapidjson_1_1_generic_document.html#a41bbec044c421e870a9d355075d741bc":[14,0,0,16,2],
@@ -152,6 +152,7 @@ var NAVTREEINDEX0 =
"classrapidjson_1_1_generic_document.html#a56f3b745a657f2171e6a354b5652a445":[14,0,0,16,40],
"classrapidjson_1_1_generic_document.html#a5ea841518170c19b896c53dc255fae41":[14,0,0,16,36],
"classrapidjson_1_1_generic_document.html#a63e18887979da500ece6f0bd10d29b64":[14,0,0,16,34],
+"classrapidjson_1_1_generic_document.html#a7607bb42b51547e44bfd4cab35d8f20e":[14,0,0,16,14],
"classrapidjson_1_1_generic_document.html#a7ba626bf84eb45a9bca0b7723bf47f3f":[14,0,0,16,29],
"classrapidjson_1_1_generic_document.html#a82b27e7b228eb46a23f99720063ab4fb":[14,0,0,16,4],
"classrapidjson_1_1_generic_document.html#a8367a827588dd91d02e21ef945bec9f5":[14,0,0,16,1],
@@ -162,92 +163,91 @@ var NAVTREEINDEX0 =
"classrapidjson_1_1_generic_document.html#ab5157ac18077576ea583ecfa69dda931":[14,0,0,16,27],
"classrapidjson_1_1_generic_document.html#ab53214e81f7402edbe57829cb1ee6c87":[14,0,0,16,18],
"classrapidjson_1_1_generic_document.html#ab5b308584e4bea9f59e0ba32ebd22b16":[14,0,0,16,23],
-"classrapidjson_1_1_generic_document.html#ab791c05727d83f6834a1b916783dbc06":[14,0,0,16,11],
+"classrapidjson_1_1_generic_document.html#ab94c280c079a6837a24951cb4d8f337b":[14,0,0,16,12],
"classrapidjson_1_1_generic_document.html#abadda08ccb7404576e74104916329c21":[14,0,0,16,15],
"classrapidjson_1_1_generic_document.html#abe5944e40f6a374645a92b4a77bc3b6e":[14,0,0,16,9],
"classrapidjson_1_1_generic_document.html#abf1cbab989b856f9d260787b2575750b":[14,0,0,16,39],
-"classrapidjson_1_1_generic_document.html#ac785c064649dea6cfa67207b6bda748e":[14,0,0,16,13],
"classrapidjson_1_1_generic_document.html#aca5ed8f26946f49dc4b7b4143ea6398c":[14,0,0,16,24],
"classrapidjson_1_1_generic_document.html#acdbdf67f126b45fcf3c7029bdaa930d8":[14,0,0,16,37],
"classrapidjson_1_1_generic_document.html#acf96a3c7fd61486d049c701b1fe5d414":[14,0,0,16,33],
"classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f":[14,0,0,16,10],
-"classrapidjson_1_1_generic_document.html#ad97e64c123ec1e07ea62ab0a9ce80c00":[14,0,0,16,12],
"classrapidjson_1_1_generic_document.html#ae3d86a4b7199f654aad627941280ddda":[14,0,0,16,26],
"classrapidjson_1_1_generic_document.html#ae4ee7d86b8c906c83dbe15e57eb6ac6a":[14,0,0,16,32],
"classrapidjson_1_1_generic_document.html#aea842b533a858c9a3861451ad9e8642c":[14,0,0,16,20],
"classrapidjson_1_1_generic_document.html#aeab83624e94e75f3f9faa18e0c74ba20":[14,0,0,16,38],
"classrapidjson_1_1_generic_document.html#af061c039a990c2970dc31e5626149367":[14,0,0,16,30],
+"classrapidjson_1_1_generic_document.html#af532179ca5ad5434a5e8af63f5da4c5f":[14,0,0,16,11],
"classrapidjson_1_1_generic_member_iterator.html":[14,0,0,19],
-"classrapidjson_1_1_generic_member_iterator.html#a0122d34447eb93d44a206b458c07f0ad":[14,0,0,19,21],
-"classrapidjson_1_1_generic_member_iterator.html#a075195a552e8624f3dd95b9cac9d377f":[14,0,0,19,24],
"classrapidjson_1_1_generic_member_iterator.html#a0854c7e305fa3b9c509a85bcba7c37b1":[14,0,0,19,11],
-"classrapidjson_1_1_generic_member_iterator.html#a1565b29a6926f1608458d0390cb08a0c":[14,0,0,19,8],
+"classrapidjson_1_1_generic_member_iterator.html#a0e6cf49338db1c15b9e2bb93005b7597":[14,0,0,19,19],
"classrapidjson_1_1_generic_member_iterator.html#a17955e32a06f667c672b270e6a4d2195":[14,0,0,19,4],
"classrapidjson_1_1_generic_member_iterator.html#a192f924969f2b9d99ed1ec4ec2552884":[14,0,0,19,22],
"classrapidjson_1_1_generic_member_iterator.html#a1a91868fa388664bb301061e3e24badb":[14,0,0,19,3],
+"classrapidjson_1_1_generic_member_iterator.html#a1cfebee3ec82a524dfe3788854eebb8c":[14,0,0,19,25],
+"classrapidjson_1_1_generic_member_iterator.html#a21d762a5d9641cde856336ac439a20e1":[14,0,0,19,9],
+"classrapidjson_1_1_generic_member_iterator.html#a36f7e485594c44a81a7c501cafb1cbf7":[14,0,0,19,14],
"classrapidjson_1_1_generic_member_iterator.html#a37091c3dd8470486ef5188f3c1108653":[14,0,0,19,2],
"classrapidjson_1_1_generic_member_iterator.html#a38a9b2515b32b47183948bc76449cd18":[14,0,0,19,12],
"classrapidjson_1_1_generic_member_iterator.html#a38d0f8a8d55d86b0b2f49b308978ba0e":[14,0,0,19,18],
"classrapidjson_1_1_generic_member_iterator.html#a41b953d6523fdc09f4f21c7b345e5833":[14,0,0,19,1],
"classrapidjson_1_1_generic_member_iterator.html#a5b29025a0fe480332fa24922ef5852c0":[14,0,0,19,16],
-"classrapidjson_1_1_generic_member_iterator.html#a5e7ae66f286fc67da4d53f13eb7f47e7":[14,0,0,19,19],
-"classrapidjson_1_1_generic_member_iterator.html#a6036bfa6337e6aa30b5e5c8ee6a6b47a":[14,0,0,19,23],
"classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc":[14,0,0,19,0],
-"classrapidjson_1_1_generic_member_iterator.html#a6d7cfaef258b0774da1b642907d81060":[14,0,0,19,15],
-"classrapidjson_1_1_generic_member_iterator.html#a71a9839fb0a74fb27ab42708a267be8e":[14,0,0,19,9],
+"classrapidjson_1_1_generic_member_iterator.html#a6c313e57c10ca419a7321ee791378198":[14,0,0,19,8],
+"classrapidjson_1_1_generic_member_iterator.html#a76a73a0206437a1318bb93af83f0b7ec":[14,0,0,19,26],
"classrapidjson_1_1_generic_member_iterator.html#a7f531c899039358b2a5cd1873d71beb2":[14,0,0,19,13],
-"classrapidjson_1_1_generic_member_iterator.html#a81ee4247651f3aa3653b31f0016a7d46":[14,0,0,19,14],
"classrapidjson_1_1_generic_member_iterator.html#a82bdd5798f1a5ac0e3e7ba4bd6938cfc":[14,0,0,19,28],
-"classrapidjson_1_1_generic_member_iterator.html#a88534f0a8a2d3095845bf92e92244216":[14,0,0,19,20],
+"classrapidjson_1_1_generic_member_iterator.html#a874f8e34f3ae9889e9380feb36582779":[14,0,0,19,23],
+"classrapidjson_1_1_generic_member_iterator.html#a8defc2832dfffde7e7e8cab99233f16f":[14,0,0,19,21],
"classrapidjson_1_1_generic_member_iterator.html#a915a1b6f0a0bbe6a1df69571a789e348":[14,0,0,19,5],
"classrapidjson_1_1_generic_member_iterator.html#aa30ffef74b3f4978b403024d81b484e4":[14,0,0,19,7],
"classrapidjson_1_1_generic_member_iterator.html#aa375aeb1ffac85cddc3a72a6c24ec6e1":[14,0,0,19,27],
-"classrapidjson_1_1_generic_member_iterator.html#aad9022156ee168a878bce7e0ff197087":[14,0,0,19,26],
+"classrapidjson_1_1_generic_member_iterator.html#abfad2c34a97f82178cbf9464e958e2c2":[14,0,0,19,15],
"classrapidjson_1_1_generic_member_iterator.html#ac920af483c9e31a6746c22acf0dffc50":[14,0,0,19,6],
-"classrapidjson_1_1_generic_member_iterator.html#adc513705f7e344cf2eca93e8ae609e4b":[14,0,0,19,25],
+"classrapidjson_1_1_generic_member_iterator.html#ace89a84c151b8346cfc9ade17b5bac21":[14,0,0,19,10],
+"classrapidjson_1_1_generic_member_iterator.html#ae40f615a3674f3d387cba9fac217a30b":[14,0,0,19,20],
"classrapidjson_1_1_generic_member_iterator.html#aeb9ae9faaca1608e9ee93ebb50892839":[14,0,0,19,17],
-"classrapidjson_1_1_generic_member_iterator.html#afeae73650cc16de6dd7c459d0e46c262":[14,0,0,19,10],
+"classrapidjson_1_1_generic_member_iterator.html#afeb581725f6ae68ed508803e73295a14":[14,0,0,19,24],
"classrapidjson_1_1_generic_object.html":[14,0,0,21],
-"classrapidjson_1_1_generic_object.html#a024444704ef3ab6dd64b9ae544d31f6f":[14,0,0,21,37],
-"classrapidjson_1_1_generic_object.html#a096552670a1217ab1e91659b23a169ab":[14,0,0,21,41],
-"classrapidjson_1_1_generic_object.html#a125760c64421601e341eb90b6cfe95c4":[14,0,0,21,28],
-"classrapidjson_1_1_generic_object.html#a134228f1d98876dc00a4d1355abb1c5c":[14,0,0,21,14],
-"classrapidjson_1_1_generic_object.html#a1a1977c940f432dcf644b410632b0276":[14,0,0,21,22],
-"classrapidjson_1_1_generic_object.html#a2542a5003f90a98626d55fcd2bbe07f6":[14,0,0,21,31],
-"classrapidjson_1_1_generic_object.html#a2b792e93071a8aeeb19814400302b6ad":[14,0,0,21,25],
-"classrapidjson_1_1_generic_object.html#a2d5a458d0b48498cc46be82aba937e10":[14,0,0,21,2],
-"classrapidjson_1_1_generic_object.html#a2e9bdc3415548283c8977d4368415cf0":[14,0,0,21,9],
-"classrapidjson_1_1_generic_object.html#a316aaee9efc32f7599e8335b0dfcb994":[14,0,0,21,6],
-"classrapidjson_1_1_generic_object.html#a34d1b04528351f00a0c0c7f90f5020ae":[14,0,0,21,20],
-"classrapidjson_1_1_generic_object.html#a376c9e20c133ddb8bbbc678f174dc8bc":[14,0,0,21,36],
-"classrapidjson_1_1_generic_object.html#a383111febedcaf84a7fd72fab5ed90cb":[14,0,0,21,16],
-"classrapidjson_1_1_generic_object.html#a394415edfd48d9a5f371c260fc37496c":[14,0,0,21,33],
-"classrapidjson_1_1_generic_object.html#a3b563f651f5eba238c87aa8a692b97e5":[14,0,0,21,32],
-"classrapidjson_1_1_generic_object.html#a3dd23b20c0ba292f7a09676493d1db27":[14,0,0,21,34],
-"classrapidjson_1_1_generic_object.html#a4db59e277c974a365636e422e391c3b4":[14,0,0,21,4],
-"classrapidjson_1_1_generic_object.html#a5512f4339f327885b21a232f499a402b":[14,0,0,21,12],
-"classrapidjson_1_1_generic_object.html#a60dee2db688a5084e0e40e3685df8284":[14,0,0,21,18],
-"classrapidjson_1_1_generic_object.html#a793b002c81a0380e41acb8225b9cc2cc":[14,0,0,21,40],
-"classrapidjson_1_1_generic_object.html#a7ce499ac2bae523c94f39c17fb0edce5":[14,0,0,21,15],
-"classrapidjson_1_1_generic_object.html#a7df3a1a583291a8bd5fb0d771d57096e":[14,0,0,21,26],
-"classrapidjson_1_1_generic_object.html#a87a6318cc1bec3706825f698d79c1f5e":[14,0,0,21,21],
-"classrapidjson_1_1_generic_object.html#a896032a27a88a16b2b9c4f9e6636f876":[14,0,0,21,39],
+"classrapidjson_1_1_generic_object.html#a00d71a7ee4d903e74fdc5a83750dd0f7":[14,0,0,21,3],
+"classrapidjson_1_1_generic_object.html#a046e47c2bc624f677603d34d0f108347":[14,0,0,21,6],
+"classrapidjson_1_1_generic_object.html#a05c6698dd3203dbbe537942d63073fcc":[14,0,0,21,29],
+"classrapidjson_1_1_generic_object.html#a09c45c8e0e61ada9eb511d3601a52c29":[14,0,0,21,18],
+"classrapidjson_1_1_generic_object.html#a10fd0c5b5ef61479725590b78c006234":[14,0,0,21,27],
+"classrapidjson_1_1_generic_object.html#a158d16b9052e356436211158f2fb0638":[14,0,0,21,35],
+"classrapidjson_1_1_generic_object.html#a1bdc4fd5a89c27b4e8aa5d7e39ece85b":[14,0,0,21,21],
+"classrapidjson_1_1_generic_object.html#a2222165c8e1d29b8a6f534a8b54a2115":[14,0,0,21,17],
+"classrapidjson_1_1_generic_object.html#a282660500748eff5ebab93b88a9d478f":[14,0,0,21,9],
+"classrapidjson_1_1_generic_object.html#a414fb36461847d576c8d0b2386655703":[14,0,0,21,14],
+"classrapidjson_1_1_generic_object.html#a446032e977f37638cf3c44eb3a972fdd":[14,0,0,21,32],
+"classrapidjson_1_1_generic_object.html#a46c7868bddba87a819cccca94bbdbda9":[14,0,0,21,7],
+"classrapidjson_1_1_generic_object.html#a50a9c9ee7e8a8321de28390f5290f89c":[14,0,0,21,22],
+"classrapidjson_1_1_generic_object.html#a579a7d7ab7102bcf86c948d0df3d2f2d":[14,0,0,21,2],
+"classrapidjson_1_1_generic_object.html#a583962734202dfdf22ab851d78f24d92":[14,0,0,21,31],
+"classrapidjson_1_1_generic_object.html#a598fd1d5f55289eca275847f0e8ef295":[14,0,0,21,5],
+"classrapidjson_1_1_generic_object.html#a5df619ffdefc3a7e1f6f7c2670c305f7":[14,0,0,21,23],
+"classrapidjson_1_1_generic_object.html#a77468ae046c9366a52e1baa75d963f6d":[14,0,0,21,40],
"classrapidjson_1_1_generic_object.html#a899449e1a645b5e377af059fb61113d8":[14,0,0,21,43],
-"classrapidjson_1_1_generic_object.html#a921de3b7a412a705ca90b9385eaabb28":[14,0,0,21,11],
-"classrapidjson_1_1_generic_object.html#a947c52731e84a33bbcd2729ad72272b3":[14,0,0,21,29],
-"classrapidjson_1_1_generic_object.html#a9782c6609c13d9ad2b5bd892d8cbf4a1":[14,0,0,21,1],
-"classrapidjson_1_1_generic_object.html#a996ed0f2d6de222eaa5e555964e4c20e":[14,0,0,21,10],
-"classrapidjson_1_1_generic_object.html#a9acdd4367fa4bcdd0a42cac9407826b4":[14,0,0,21,8],
-"classrapidjson_1_1_generic_object.html#a9ea4749d28efae46e021da377ce86901":[14,0,0,21,38],
-"classrapidjson_1_1_generic_object.html#ab1e58e0d9459ebb104f447210ff869d7":[14,0,0,21,19],
-"classrapidjson_1_1_generic_object.html#ab671c0cf6ffb6cefa505fb5b5c735d18":[14,0,0,21,42],
-"classrapidjson_1_1_generic_object.html#ab69826a21c401352104a4cc803b254ed":[14,0,0,21,3],
-"classrapidjson_1_1_generic_object.html#ab72467cb9b73248d1c98ba6ae0d47bf2":[14,0,0,21,35],
-"classrapidjson_1_1_generic_object.html#abc0323708e17b4df4e3878f3a616e641":[14,0,0,21,24],
-"classrapidjson_1_1_generic_object.html#acb878d8d0ea52ab7f9f91d622e412d1c":[14,0,0,21,5],
-"classrapidjson_1_1_generic_object.html#acd99a41ea60aa60bcf782dbbc02af8aa":[14,0,0,21,13],
-"classrapidjson_1_1_generic_object.html#ad5445b0f7623a17b20f4d947cc9c46a1":[14,0,0,21,0],
-"classrapidjson_1_1_generic_object.html#ad9da896f4105810ad8c03db97b7009c2":[14,0,0,21,23],
-"classrapidjson_1_1_generic_object.html#adaa6f8aa349c16363035170c5cdda4c2":[14,0,0,21,7],
-"classrapidjson_1_1_generic_object.html#ae3375abc321cef3e23d96be8ccfc2095":[14,0,0,21,27]
+"classrapidjson_1_1_generic_object.html#a920c32f4acd1f8a896c467777452595a":[14,0,0,21,36],
+"classrapidjson_1_1_generic_object.html#a9227df396b62534391cd9a52ab7cdf37":[14,0,0,21,42],
+"classrapidjson_1_1_generic_object.html#a947f543afbdd5e6d1c5b2dd1fe5a6e60":[14,0,0,21,1],
+"classrapidjson_1_1_generic_object.html#a99752a443910d9aa7658ae7f893a0ab1":[14,0,0,21,15],
+"classrapidjson_1_1_generic_object.html#aa5cd5126d5965b6dfe0b630e53ad6cff":[14,0,0,21,28],
+"classrapidjson_1_1_generic_object.html#aa96ab7566d9d7cce166d8b51cd072b92":[14,0,0,21,39],
+"classrapidjson_1_1_generic_object.html#aae420e2eac920ff10d5c749f567e4905":[14,0,0,21,10],
+"classrapidjson_1_1_generic_object.html#ab47bc8d841321d77c140e9df729f5233":[14,0,0,21,8],
+"classrapidjson_1_1_generic_object.html#ab9a78993f69240bff0744f05436aaf80":[14,0,0,21,37],
+"classrapidjson_1_1_generic_object.html#ac238b3e856310ca7f8622e1252ea7f0f":[14,0,0,21,26],
+"classrapidjson_1_1_generic_object.html#ac3410e31a3a38bd7004daf8e76d5327c":[14,0,0,21,30],
+"classrapidjson_1_1_generic_object.html#ac412c8d073aa02f622b3904e4195425c":[14,0,0,21,4],
+"classrapidjson_1_1_generic_object.html#acd045fbc7ffebf7902244fb1034b8751":[14,0,0,21,11],
+"classrapidjson_1_1_generic_object.html#ad0bc0d524c95b4e7eb816843ac40f264":[14,0,0,21,16],
+"classrapidjson_1_1_generic_object.html#ad5ad0ae2038d629f17b10b2b11ced58b":[14,0,0,21,33],
+"classrapidjson_1_1_generic_object.html#ad8569180721b7194fffb0f289c0f8956":[14,0,0,21,19],
+"classrapidjson_1_1_generic_object.html#adce47ea944260d77171c710f34d4e402":[14,0,0,21,38],
+"classrapidjson_1_1_generic_object.html#ae30003e248368737382eed69ec8fe1eb":[14,0,0,21,0],
+"classrapidjson_1_1_generic_object.html#ae4681bdff872d25f5100bc53d8a48bb3":[14,0,0,21,25],
+"classrapidjson_1_1_generic_object.html#ae811070cbc37cc67bb80a8bdb7d6db14":[14,0,0,21,12],
+"classrapidjson_1_1_generic_object.html#aebd8b710e89673cd279b798ba2f3cf85":[14,0,0,21,13],
+"classrapidjson_1_1_generic_object.html#af2fa07494d817effd1b50c0a84e442cf":[14,0,0,21,41],
+"classrapidjson_1_1_generic_object.html#af5d1661531777782d90249fe5ee748cb":[14,0,0,21,20]
};
diff --git a/zh-cn/navtreeindex1.js b/zh-cn/navtreeindex1.js
index e34a11c0..e1186e38 100644
--- a/zh-cn/navtreeindex1.js
+++ b/zh-cn/navtreeindex1.js
@@ -1,107 +1,108 @@
var NAVTREEINDEX1 =
{
-"classrapidjson_1_1_generic_object.html#ae38ccb43fb8bbd15ebcfbfb7ef02b6ce":[14,0,0,21,17],
-"classrapidjson_1_1_generic_object.html#aec5d23c7e1e0156c254c5e9f73d96c0f":[14,0,0,21,30],
+"classrapidjson_1_1_generic_object.html#af94485b6c52b821203fe2c23a92c282f":[14,0,0,21,34],
+"classrapidjson_1_1_generic_object.html#afaa41ea8c0ed91b7e064d31f6a6ab9ef":[14,0,0,21,24],
"classrapidjson_1_1_generic_pointer.html":[14,0,0,22],
"classrapidjson_1_1_generic_pointer.html#a00ad17ea227d2556404df7cc64c6aeb5":[14,0,0,22,6],
+"classrapidjson_1_1_generic_pointer.html#a033a099aaa6b36df2d5171bdc593e98e":[14,0,0,22,12],
+"classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663":[14,0,0,22,38],
+"classrapidjson_1_1_generic_pointer.html#a07fa31c03c96e260f234087882dce408":[14,0,0,22,30],
+"classrapidjson_1_1_generic_pointer.html#a0ae84f686e1af593b9445c2c502101b2":[14,0,0,22,41],
"classrapidjson_1_1_generic_pointer.html#a0e144b9956a5272c13ceff3b9306e748":[14,0,0,22,9],
-"classrapidjson_1_1_generic_pointer.html#a0ee51e6c996d4665b398dae5dbf00bc4":[14,0,0,22,25],
-"classrapidjson_1_1_generic_pointer.html#a112f364fe9aeabba2a72e83bcbeb8fda":[14,0,0,22,34],
-"classrapidjson_1_1_generic_pointer.html#a151f17dc1c655b9dc0a9a3cf06e6bdcb":[14,0,0,22,41],
+"classrapidjson_1_1_generic_pointer.html#a16833ef8a38386e6c310d602426b45f0":[14,0,0,22,29],
+"classrapidjson_1_1_generic_pointer.html#a18494d59f0317c037fa3bd037e436cec":[14,0,0,22,13],
+"classrapidjson_1_1_generic_pointer.html#a1f428c25a3a905683e616d76c2d9efcf":[14,0,0,22,33],
"classrapidjson_1_1_generic_pointer.html#a23194bb6ce6c07c78981344fe80ac3a6":[14,0,0,22,36],
-"classrapidjson_1_1_generic_pointer.html#a2949cb104effdf323781ae70ce469ed9":[14,0,0,22,24],
-"classrapidjson_1_1_generic_pointer.html#a2b5a8fb688e6b6a1b077ce103df455c3":[14,0,0,22,17],
-"classrapidjson_1_1_generic_pointer.html#a2ee50bcbfa76119094eef0284eeddfbe":[14,0,0,22,45],
-"classrapidjson_1_1_generic_pointer.html#a309d819cc14e9d2183df4807bc99fea5":[14,0,0,22,19],
-"classrapidjson_1_1_generic_pointer.html#a3733a6d6cf2a3a13f2a59b109b56d800":[14,0,0,22,16],
+"classrapidjson_1_1_generic_pointer.html#a29d7ee42eb5646f829aeca6c6989555a":[14,0,0,22,51],
+"classrapidjson_1_1_generic_pointer.html#a2ac51ee7af5b9d7628140ae8501edcf4":[14,0,0,22,28],
+"classrapidjson_1_1_generic_pointer.html#a30f4eac82e9fded60dead3f7d1cb3941":[14,0,0,22,11],
"classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e":[14,0,0,22,2],
-"classrapidjson_1_1_generic_pointer.html#a3baa23b919dc9ba9421b8e6fbf3e0605":[14,0,0,22,15],
-"classrapidjson_1_1_generic_pointer.html#a3bb1e63a2c0aa61a9e95d6d65c4c3ffd":[14,0,0,22,29],
-"classrapidjson_1_1_generic_pointer.html#a3e74f5b9c9fd3307f6ebac61a7131524":[14,0,0,22,35],
-"classrapidjson_1_1_generic_pointer.html#a40413907ac94e218f93625d3a5c8c454":[14,0,0,22,49],
-"classrapidjson_1_1_generic_pointer.html#a573a35dd96aacffe209e1442720f447a":[14,0,0,22,33],
-"classrapidjson_1_1_generic_pointer.html#a5e9e740bec7f5a1703088171e0b2557b":[14,0,0,22,32],
-"classrapidjson_1_1_generic_pointer.html#a64f7bb98da73976b59597cdde96a40b8":[14,0,0,22,10],
-"classrapidjson_1_1_generic_pointer.html#a6c615761374ddce265d542f4b4b476b1":[14,0,0,22,26],
+"classrapidjson_1_1_generic_pointer.html#a3a7ff4e0b700c2975cf455fef23226b4":[14,0,0,22,46],
+"classrapidjson_1_1_generic_pointer.html#a3bb15fa5592f2bfad6f2c9af7940b952":[14,0,0,22,37],
+"classrapidjson_1_1_generic_pointer.html#a4690cd1d6c85168ebd2ce0afe186a4fa":[14,0,0,22,50],
+"classrapidjson_1_1_generic_pointer.html#a4aadec8f0efe9a7ac42ac4906a5f676d":[14,0,0,22,14],
+"classrapidjson_1_1_generic_pointer.html#a4f0ef2b49a9561d570217249343d9335":[14,0,0,22,40],
+"classrapidjson_1_1_generic_pointer.html#a618808f066fb1104d36f012cced3b27a":[14,0,0,22,15],
"classrapidjson_1_1_generic_pointer.html#a6df9f6a01d1b5945811055e1cf8aead6":[14,0,0,22,7],
-"classrapidjson_1_1_generic_pointer.html#a83ff802b8fcacd96e60ba1c2627a19f0":[14,0,0,22,44],
+"classrapidjson_1_1_generic_pointer.html#a73073ca3c9e47eba7c27c16151b269ac":[14,0,0,22,48],
+"classrapidjson_1_1_generic_pointer.html#a75caef2a047c56466f0b599bdda882c9":[14,0,0,22,23],
+"classrapidjson_1_1_generic_pointer.html#a791e40c10682b9db0adf2b6e0b8b3d78":[14,0,0,22,24],
+"classrapidjson_1_1_generic_pointer.html#a7cb5eda2af1722e52efa591c4103ebec":[14,0,0,22,10],
"classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7":[14,0,0,22,1],
+"classrapidjson_1_1_generic_pointer.html#a8ca73989b4f3ffa5154a229f95f1e0c9":[14,0,0,22,35],
+"classrapidjson_1_1_generic_pointer.html#a8e5ed62ba30bb3f7a09a826746f70574":[14,0,0,22,47],
"classrapidjson_1_1_generic_pointer.html#a8f831aae14afc493a82b5fb6aa9c3c43":[14,0,0,22,4],
-"classrapidjson_1_1_generic_pointer.html#a96e6f4c01632be39df82917f833710bc":[14,0,0,22,11],
-"classrapidjson_1_1_generic_pointer.html#a98454081fb9557b3d2285c4e89bd34f6":[14,0,0,22,40],
-"classrapidjson_1_1_generic_pointer.html#a9bd1c4076e732ffc1b4527ac5659264e":[14,0,0,22,46],
+"classrapidjson_1_1_generic_pointer.html#a923a1100c029a28e25894708bdce784c":[14,0,0,22,18],
+"classrapidjson_1_1_generic_pointer.html#a9371832d9089cca9b7f549172fd75cc8":[14,0,0,22,43],
+"classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c":[14,0,0,22,34],
"classrapidjson_1_1_generic_pointer.html#a9f8119f2c714f78794854828789b832e":[14,0,0,22,8],
"classrapidjson_1_1_generic_pointer.html#aa077ce171ea25cf501c12f2d5df7f248":[14,0,0,22,3],
-"classrapidjson_1_1_generic_pointer.html#aaaa5b0ecdfa6af45e7dabc1987c87cac":[14,0,0,22,50],
-"classrapidjson_1_1_generic_pointer.html#ab6982b814e41d8f64bea7d5faab93b1f":[14,0,0,22,20],
-"classrapidjson_1_1_generic_pointer.html#ab914090864d0ded21a376867c33ad865":[14,0,0,22,28],
-"classrapidjson_1_1_generic_pointer.html#ab9166f175517b1bff8c2219ea769e506":[14,0,0,22,48],
-"classrapidjson_1_1_generic_pointer.html#ac19f479c656ddd6a8bd9888a9fb27f96":[14,0,0,22,39],
-"classrapidjson_1_1_generic_pointer.html#ac4b35d8051c17a8c9408f71ae8541d19":[14,0,0,22,13],
-"classrapidjson_1_1_generic_pointer.html#ac817b123619422f03c44a46978d9fbd0":[14,0,0,22,22],
+"classrapidjson_1_1_generic_pointer.html#aa6df2ca27eecabbbad825a64a3d2bfe9":[14,0,0,22,42],
+"classrapidjson_1_1_generic_pointer.html#aaa4e92344cc07e98adb5b9f5b93927b8":[14,0,0,22,31],
+"classrapidjson_1_1_generic_pointer.html#aac2171a0ac38298b2d0ae063351ec176":[14,0,0,22,20],
+"classrapidjson_1_1_generic_pointer.html#abdc025b8391b271f1134a7ba7039c27f":[14,0,0,22,27],
+"classrapidjson_1_1_generic_pointer.html#ac07c300d43f04dad9caa0cb209cb2853":[14,0,0,22,25],
+"classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2":[14,0,0,22,26],
"classrapidjson_1_1_generic_pointer.html#acdac4ea8e57920194827be4afb942d97":[14,0,0,22,21],
-"classrapidjson_1_1_generic_pointer.html#ad0bd4948e56dce4b75b39f744050322c":[14,0,0,22,14],
-"classrapidjson_1_1_generic_pointer.html#ad96e263ba29209259fd4abe63d7f4458":[14,0,0,22,31],
-"classrapidjson_1_1_generic_pointer.html#ad9f28da15453d91c3669618a6f48bfcc":[14,0,0,22,51],
-"classrapidjson_1_1_generic_pointer.html#adc01f1be5f05127f849a2bf10a97e89b":[14,0,0,22,23],
-"classrapidjson_1_1_generic_pointer.html#add58edd4f813645f8ffead6956967f96":[14,0,0,22,43],
-"classrapidjson_1_1_generic_pointer.html#ae9037fa1a22498e2a8c0f96f866f6288":[14,0,0,22,42],
-"classrapidjson_1_1_generic_pointer.html#ae9f3e27a210a0974892c1260c2e4a39f":[14,0,0,22,27],
-"classrapidjson_1_1_generic_pointer.html#aec10492caf6e853935d9a360bbe73713":[14,0,0,22,18],
-"classrapidjson_1_1_generic_pointer.html#aecea7b5c4786f509e35c3917efa57fce":[14,0,0,22,38],
+"classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856":[14,0,0,22,16],
+"classrapidjson_1_1_generic_pointer.html#ad7a692d4e08d578f7e24afb7c4004276":[14,0,0,22,44],
+"classrapidjson_1_1_generic_pointer.html#adc4bf5a3892f5626a8517f90c88e4b7f":[14,0,0,22,17],
+"classrapidjson_1_1_generic_pointer.html#ae985c27c1d061b93ba4f8875cfa5f7b5":[14,0,0,22,49],
"classrapidjson_1_1_generic_pointer.html#aeefcd60e5ad37d80ec43f5315ae84809":[14,0,0,22,5],
-"classrapidjson_1_1_generic_pointer.html#af0d009a8322a7b61f63a9539ca8bddaf":[14,0,0,22,37],
-"classrapidjson_1_1_generic_pointer.html#af2e3630aeaebb6628c2b1694a0595452":[14,0,0,22,12],
-"classrapidjson_1_1_generic_pointer.html#af547130d348ca1805d882955a377bbe4":[14,0,0,22,47],
-"classrapidjson_1_1_generic_pointer.html#af89e3e8f87bb833d4eb4bb2fd4074431":[14,0,0,22,30],
+"classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd":[14,0,0,22,19],
+"classrapidjson_1_1_generic_pointer.html#af19e2313004885cfa9c45f50b30b32e2":[14,0,0,22,32],
+"classrapidjson_1_1_generic_pointer.html#af2f51d68c82136086bed9593719abd1a":[14,0,0,22,39],
+"classrapidjson_1_1_generic_pointer.html#af649a48d77aa856cddaa748ad6b0d6ac":[14,0,0,22,22],
+"classrapidjson_1_1_generic_pointer.html#afb649edbdbe09a6840b12d67c9f2501e":[14,0,0,22,45],
"classrapidjson_1_1_generic_reader.html":[14,0,0,23],
+"classrapidjson_1_1_generic_reader.html#a042c621cf745c5ed3a6f5ff9418dd05e":[14,0,0,23,3],
"classrapidjson_1_1_generic_reader.html#a0781d19e8c6bc044d9cc5f5d3dde287e":[14,0,0,23,0],
"classrapidjson_1_1_generic_reader.html#a2bac14d193873d661d79ad000473a908":[14,0,0,23,9],
-"classrapidjson_1_1_generic_reader.html#a40fd326bad7d7033f096b549cbf159db":[14,0,0,23,3],
-"classrapidjson_1_1_generic_reader.html#a46ded2951b8fa395ed421989d66e71fe":[14,0,0,23,4],
"classrapidjson_1_1_generic_reader.html#a544704abdce535d93ae0f45d0cf0bc0d":[14,0,0,23,10],
"classrapidjson_1_1_generic_reader.html#a56ab1065ea75167aeacb4802425bf57f":[14,0,0,23,1],
"classrapidjson_1_1_generic_reader.html#a60fa11ff60f71b3a466bbd962f35dfdb":[14,0,0,23,5],
"classrapidjson_1_1_generic_reader.html#a90403a2c55dadf82fd2bb9d4c66b3280":[14,0,0,23,6],
-"classrapidjson_1_1_generic_reader.html#ab907a36c410e96154c99797a6a0ce16d":[14,0,0,23,2],
+"classrapidjson_1_1_generic_reader.html#ab50019e0a715320f83b7610b83dcef8f":[14,0,0,23,2],
"classrapidjson_1_1_generic_reader.html#abac6611bec17167de50fede5cd5194ca":[14,0,0,23,7],
+"classrapidjson_1_1_generic_reader.html#ac42370c3497a0e2b6973110f298e3a59":[14,0,0,23,4],
"classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b":[14,0,0,23,8],
"classrapidjson_1_1_generic_schema_document.html":[14,0,0,24],
"classrapidjson_1_1_generic_schema_document.html#a019035fd281ca52874ed434ce4f7d4d8":[14,0,0,24,2],
"classrapidjson_1_1_generic_schema_document.html#a61540c0f8aa542760ae03257a0e6dab7":[14,0,0,24,4],
"classrapidjson_1_1_generic_schema_document.html#a6fc497ef6e303b3a3ecec9fefe82eade":[14,0,0,24,0],
"classrapidjson_1_1_generic_schema_document.html#a87eb1db271e7f57442802a5f4f6178f3":[14,0,0,24,6],
+"classrapidjson_1_1_generic_schema_document.html#a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a":[14,0,0,24,9],
"classrapidjson_1_1_generic_schema_document.html#aaf4e7f371de938025f7ed4be3b83266e":[14,0,0,24,5],
"classrapidjson_1_1_generic_schema_document.html#ab2764f2258889b3262eff6293d7ca015":[14,0,0,24,3],
"classrapidjson_1_1_generic_schema_document.html#ad200cc7bcb193c8568cdbda7b7fd0496":[14,0,0,24,7],
"classrapidjson_1_1_generic_schema_document.html#adf6f3372013227873ed392dee1e752bf":[14,0,0,24,8],
-"classrapidjson_1_1_generic_schema_document.html#af64ea17654ab0f1a91e382d422f91daf":[14,0,0,24,9],
"classrapidjson_1_1_generic_schema_document.html#af9b82162834b30bdcbe93cb065d0aedd":[14,0,0,24,1],
"classrapidjson_1_1_generic_schema_document.html#afcc03e6ba8f1a819e1a028c31ad38347":[14,0,0,24,10],
"classrapidjson_1_1_generic_schema_validator.html":[14,0,0,25],
+"classrapidjson_1_1_generic_schema_validator.html#a03bcd5497a574cffbd066d0aec2b5585":[14,0,0,25,18],
"classrapidjson_1_1_generic_schema_validator.html#a0619c9faf3014ef141d1c6d05ae04ddc":[14,0,0,25,3],
"classrapidjson_1_1_generic_schema_validator.html#a0e1d8f19381bd53d77cc00a9a6dcd067":[14,0,0,25,5],
"classrapidjson_1_1_generic_schema_validator.html#a1be5d3b3f73c05d84a76cad3a9948a35":[14,0,0,25,21],
"classrapidjson_1_1_generic_schema_validator.html#a2bee26a73c644a72c2baa2970b35c7ac":[14,0,0,25,32],
"classrapidjson_1_1_generic_schema_validator.html#a311489ae16471b5e111a62090a8675e0":[14,0,0,25,29],
+"classrapidjson_1_1_generic_schema_validator.html#a3238efb9d9144c2d6577362d8dc5f61b":[14,0,0,25,19],
"classrapidjson_1_1_generic_schema_validator.html#a3a628f6b520c40707329c60b06847a18":[14,0,0,25,31],
"classrapidjson_1_1_generic_schema_validator.html#a58fb3589123904533021926530a206ce":[14,0,0,25,26],
+"classrapidjson_1_1_generic_schema_validator.html#a60dfb4a89593c8d3ca4c89a6202feb52":[14,0,0,25,17],
"classrapidjson_1_1_generic_schema_validator.html#a615b93b84c732e405f3847c7d789acf8":[14,0,0,25,28],
"classrapidjson_1_1_generic_schema_validator.html#a73d58da18b6e77665daaa977852f205c":[14,0,0,25,24],
-"classrapidjson_1_1_generic_schema_validator.html#a8381f8d4dca195449f086ffbd25bb9b7":[14,0,0,25,19],
"classrapidjson_1_1_generic_schema_validator.html#a8d24483082f9b4b2b3f35bff78c66529":[14,0,0,25,16],
-"classrapidjson_1_1_generic_schema_validator.html#a914628c4d69faea91ada1dee61d25d59":[14,0,0,25,18],
"classrapidjson_1_1_generic_schema_validator.html#a92a6d2ba413cfd05cb2122fc119efd46":[14,0,0,25,30],
"classrapidjson_1_1_generic_schema_validator.html#a98561df249a90a257fb8a57ffcf1b581":[14,0,0,25,20],
"classrapidjson_1_1_generic_schema_validator.html#a98a80c23569edb89af722c124a136b49":[14,0,0,25,13],
"classrapidjson_1_1_generic_schema_validator.html#a9d1110efc1a7f8c18cd88020310b35bf":[14,0,0,25,12],
"classrapidjson_1_1_generic_schema_validator.html#aace9622f8ebac1c386081f6d1dcd774e":[14,0,0,25,2],
-"classrapidjson_1_1_generic_schema_validator.html#ab520a4ee6df3e23ffb948c8d5ae7bf38":[14,0,0,25,22],
"classrapidjson_1_1_generic_schema_validator.html#ab5b7093443e29cf66eb7cf47f3d8583d":[14,0,0,25,0],
"classrapidjson_1_1_generic_schema_validator.html#abaea0f74722261f6dde0db65594efdfe":[14,0,0,25,1],
"classrapidjson_1_1_generic_schema_validator.html#ac2247fb21e5dd87c9590f45fb089d3d1":[14,0,0,25,7],
"classrapidjson_1_1_generic_schema_validator.html#acc07bd08b00195d84bb5b83f59c593d3":[14,0,0,25,4],
"classrapidjson_1_1_generic_schema_validator.html#acd4ac0e7042c9ab63e5b9e443dbc0d14":[14,0,0,25,15],
+"classrapidjson_1_1_generic_schema_validator.html#ad32a9ad31dbb588edaaf038ab053275b":[14,0,0,25,22],
"classrapidjson_1_1_generic_schema_validator.html#ad9f00d71bf62b8983cf2514c43fb1572":[14,0,0,25,6],
"classrapidjson_1_1_generic_schema_validator.html#ae3d4ceb7937a1a6ac3702c29e9243128":[14,0,0,25,14],
"classrapidjson_1_1_generic_schema_validator.html#ae5b23d65482201d75072b958308d9d7b":[14,0,0,25,9],
@@ -109,145 +110,144 @@ var NAVTREEINDEX1 =
"classrapidjson_1_1_generic_schema_validator.html#aec8a2e41bc8185df35ebf9ebedb52355":[14,0,0,25,11],
"classrapidjson_1_1_generic_schema_validator.html#aefcbbbdba183ef7b13347aa3b4f352bd":[14,0,0,25,25],
"classrapidjson_1_1_generic_schema_validator.html#af2ad6b4fb9837b90643da7cdd62e413b":[14,0,0,25,23],
-"classrapidjson_1_1_generic_schema_validator.html#af66e4a41d71c89edfabb176af7839f04":[14,0,0,25,17],
"classrapidjson_1_1_generic_schema_validator.html#af7620c515a7ea2f75ff300cfbf9916cf":[14,0,0,25,10],
"classrapidjson_1_1_generic_schema_validator.html#afe6cd0d9088a1d4cf8100c0efc9f76fc":[14,0,0,25,27],
"classrapidjson_1_1_generic_string_buffer.html":[14,0,0,26],
"classrapidjson_1_1_generic_string_buffer.html#a061b1ffdcd0d660d98ab4a8e3ab49975":[14,0,0,26,14],
+"classrapidjson_1_1_generic_string_buffer.html#a0a114be213152d570a2d9fde7a28fe11":[14,0,0,26,4],
"classrapidjson_1_1_generic_string_buffer.html#a315f6f4528438a19d5a93eac3e2c99f0":[14,0,0,26,0],
"classrapidjson_1_1_generic_string_buffer.html#a35733ffe70f63b28857b8d738b2ffad7":[14,0,0,26,11],
"classrapidjson_1_1_generic_string_buffer.html#a495081cfdd864623565606daf02f1187":[14,0,0,26,10],
+"classrapidjson_1_1_generic_string_buffer.html#a520c0f75424762ea44ebf6ecdd1931d8":[14,0,0,26,6],
"classrapidjson_1_1_generic_string_buffer.html#a614af5a72984c88bd5a65e2bc233d310":[14,0,0,26,2],
-"classrapidjson_1_1_generic_string_buffer.html#a629cedcefa12a8057fad525df8548a88":[14,0,0,26,5],
"classrapidjson_1_1_generic_string_buffer.html#a7e688f68b88820655f717d3cc352b842":[14,0,0,26,13],
"classrapidjson_1_1_generic_string_buffer.html#a96f9ddc4322573a15d086f29197a3d1b":[14,0,0,26,1],
+"classrapidjson_1_1_generic_string_buffer.html#a9d830ec37a4ba0fba3b523c90aaf8b42":[14,0,0,26,5],
"classrapidjson_1_1_generic_string_buffer.html#aa848ba1b8220afb4103d8099cbd6d3ff":[14,0,0,26,8],
"classrapidjson_1_1_generic_string_buffer.html#aabe024dd7fc2ea0a0c929d7eea3d0b32":[14,0,0,26,3],
-"classrapidjson_1_1_generic_string_buffer.html#ace0bc8bee07187577116892b566a61d9":[14,0,0,26,6],
"classrapidjson_1_1_generic_string_buffer.html#acfdf31dc9458a63e4d6544d3079c8d2e":[14,0,0,26,9],
"classrapidjson_1_1_generic_string_buffer.html#ae70a632053e258c7c431e0e35b095c84":[14,0,0,26,12],
-"classrapidjson_1_1_generic_string_buffer.html#aefe471aaf1430189bf40ddb3fb7ebca3":[14,0,0,26,4],
"classrapidjson_1_1_generic_string_buffer.html#afb41bae09405ddd9aa9250ac47ab235e":[14,0,0,26,7],
"classrapidjson_1_1_generic_value.html":[14,0,0,29],
-"classrapidjson_1_1_generic_value.html#a00dd3013a94baa577d51fff5ac7c1bb0":[14,0,0,29,91],
-"classrapidjson_1_1_generic_value.html#a015a8559e69e0e6237ec5ce2f0b38f43":[14,0,0,29,115],
+"classrapidjson_1_1_generic_value.html#a01b08bc71b07839324b3a1fdc8341712":[14,0,0,29,61],
+"classrapidjson_1_1_generic_value.html#a01b8758dbfece60480392667795be717":[14,0,0,29,69],
"classrapidjson_1_1_generic_value.html#a0220ddebe2f023fa75b643a50e90e559":[14,0,0,29,8],
"classrapidjson_1_1_generic_value.html#a05906384808645a2e798d29a9b2d441d":[14,0,0,29,7],
+"classrapidjson_1_1_generic_value.html#a064ecd709d167b07008acd79e941b68e":[14,0,0,29,90],
"classrapidjson_1_1_generic_value.html#a06ce0e14ec83b53c83e1b1699b53a25e":[14,0,0,29,12],
"classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db":[14,0,0,29,151],
"classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b":[14,0,0,29,102],
-"classrapidjson_1_1_generic_value.html#a08bf77a430b865404c57a93d8f0f6d3d":[14,0,0,29,45],
-"classrapidjson_1_1_generic_value.html#a0a25f4740338ecb965ae9675abd673e2":[14,0,0,29,87],
-"classrapidjson_1_1_generic_value.html#a0b02962601636f6b040c6451ec7a3778":[14,0,0,29,121],
-"classrapidjson_1_1_generic_value.html#a0cb232adce79932c499c5f04cbc8dc54":[14,0,0,29,104],
-"classrapidjson_1_1_generic_value.html#a0cbd9b2bfa0bb7fe196a79703c5f488e":[14,0,0,29,75],
+"classrapidjson_1_1_generic_value.html#a07d947971c59c9ce884b3c5205c9238f":[14,0,0,29,41],
+"classrapidjson_1_1_generic_value.html#a0dcb17e6f5ac240c4dfdb3aa97a394b8":[14,0,0,29,93],
"classrapidjson_1_1_generic_value.html#a0e173c8bb01a536c94529d4e3f9bfc67":[14,0,0,29,148],
"classrapidjson_1_1_generic_value.html#a0ec9f34bef5890241d4bc882b73b1db4":[14,0,0,29,123],
-"classrapidjson_1_1_generic_value.html#a0eda9834f241e5c5b23161a7ee33758b":[14,0,0,29,67],
-"classrapidjson_1_1_generic_value.html#a0faeebacf8592f438654224f2b9f2fe7":[14,0,0,29,71],
"classrapidjson_1_1_generic_value.html#a121e40b5944be337189eb63b98b7e6ce":[14,0,0,29,51],
-"classrapidjson_1_1_generic_value.html#a131eda3b3f5e37fca8dff43c77963fad":[14,0,0,29,61],
+"classrapidjson_1_1_generic_value.html#a150726bc6f5a7af5bce9e9a8b76e0e98":[14,0,0,29,85],
"classrapidjson_1_1_generic_value.html#a163e60b101e5ae534597c050a6eba511":[14,0,0,29,50],
"classrapidjson_1_1_generic_value.html#a17971ba2bcd4eb1716098fdfe9182386":[14,0,0,29,131],
+"classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea":[14,0,0,29,73],
+"classrapidjson_1_1_generic_value.html#a1ad0fa486347a4e58804bb8af5fe1050":[14,0,0,29,94],
+"classrapidjson_1_1_generic_value.html#a1bac9a1db05bb5825bc0adaeabf4775b":[14,0,0,29,121],
"classrapidjson_1_1_generic_value.html#a1f125e735577aae64c0306345de45563":[14,0,0,29,21],
-"classrapidjson_1_1_generic_value.html#a1f28a345c9b9c93c76abf695669e4378":[14,0,0,29,103],
-"classrapidjson_1_1_generic_value.html#a2233b836b63bca749efae44a6e39757d":[14,0,0,29,81],
+"classrapidjson_1_1_generic_value.html#a1f4835373e05abae52b91e1c6b7ec92c":[14,0,0,29,103],
"classrapidjson_1_1_generic_value.html#a25069c76d045b058e54835d8c467c789":[14,0,0,29,134],
"classrapidjson_1_1_generic_value.html#a252af37875a1115f107082263af2cb3c":[14,0,0,29,63],
-"classrapidjson_1_1_generic_value.html#a25f0f486ad79b8e42774cb070da836c8":[14,0,0,29,76],
-"classrapidjson_1_1_generic_value.html#a2666f119b3c883b251f74156d41a8239":[14,0,0,29,90],
+"classrapidjson_1_1_generic_value.html#a274f975f1a3127746e027c2a90fd101e":[14,0,0,29,64],
"classrapidjson_1_1_generic_value.html#a278b420ea75b0ec18d88d4c9e9199d62":[14,0,0,29,59],
"classrapidjson_1_1_generic_value.html#a27db22089fc69aacda8309c593ed9812":[14,0,0,29,54],
+"classrapidjson_1_1_generic_value.html#a295506a024a28d02a2ddae9d0e47c58b":[14,0,0,29,117],
"classrapidjson_1_1_generic_value.html#a2ca9400394581ce55c3e4a9633ffa33c":[14,0,0,29,139],
"classrapidjson_1_1_generic_value.html#a2ccb4736d0f2ec07f06f630d8fe54f8d":[14,0,0,29,38],
-"classrapidjson_1_1_generic_value.html#a2e6e849cfb368a3fa708f8bcf1d56ec9":[14,0,0,29,150],
+"classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c":[14,0,0,29,100],
+"classrapidjson_1_1_generic_value.html#a35d6a245412e8ce81c5b5d6b9d9e881c":[14,0,0,29,71],
"classrapidjson_1_1_generic_value.html#a39f5e1993897a86741b55c32ed4f54ef":[14,0,0,29,5],
-"classrapidjson_1_1_generic_value.html#a3a7aca6411c7fb393e0a9129a2ba886d":[14,0,0,29,88],
"classrapidjson_1_1_generic_value.html#a3e930bffb40a78e570e3deef461f0532":[14,0,0,29,147],
"classrapidjson_1_1_generic_value.html#a403b63e001a16eeff42348a736b9f749":[14,0,0,29,129],
+"classrapidjson_1_1_generic_value.html#a408ab1a7454dfa54917b92195f81622b":[14,0,0,29,115],
"classrapidjson_1_1_generic_value.html#a41946915cb219a684f6ffc9341efee22":[14,0,0,29,124],
"classrapidjson_1_1_generic_value.html#a433a64b466c80cadf7d1acaa6f065437":[14,0,0,29,31],
-"classrapidjson_1_1_generic_value.html#a469c0cc3e72f846757fb64fa52fafee5":[14,0,0,29,97],
-"classrapidjson_1_1_generic_value.html#a47e0d6193602b02b0d2852ce7335c5ff":[14,0,0,29,84],
-"classrapidjson_1_1_generic_value.html#a48fbbb00daf332db840aa0f5644fc828":[14,0,0,29,95],
+"classrapidjson_1_1_generic_value.html#a4960b901fdd3e8f7bf766e471390a0b0":[14,0,0,29,56],
"classrapidjson_1_1_generic_value.html#a4a8060a42b7953a2981ad892180ca5a6":[14,0,0,29,19],
-"classrapidjson_1_1_generic_value.html#a4c05202c7f49309c9faffe98ff1e5878":[14,0,0,29,119],
-"classrapidjson_1_1_generic_value.html#a4d224cb84bf46a3adc1286ee9d976028":[14,0,0,29,86],
"classrapidjson_1_1_generic_value.html#a4d337239ee3e2096462f6a36b9ab0811":[14,0,0,29,118],
-"classrapidjson_1_1_generic_value.html#a4f805574820d5e87cecbd5f154c79387":[14,0,0,29,92],
"classrapidjson_1_1_generic_value.html#a51e93a4fb57f77a39767acb076bf43c1":[14,0,0,29,24],
"classrapidjson_1_1_generic_value.html#a52b7b54f6fe4f4885690f6fc60862f53":[14,0,0,29,128],
"classrapidjson_1_1_generic_value.html#a538446f8bdb8e7765d1705d8d157358a":[14,0,0,29,70],
-"classrapidjson_1_1_generic_value.html#a548e6c8a99c525573d933933610977cb":[14,0,0,29,79],
+"classrapidjson_1_1_generic_value.html#a5444562cb25d10a2cb1c5ef5a86c3e49":[14,0,0,29,96],
"classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379":[14,0,0,29,11],
"classrapidjson_1_1_generic_value.html#a5623c9039977ca0daf394e5c12f10c2d":[14,0,0,29,135],
+"classrapidjson_1_1_generic_value.html#a573712808dd5d8814c103cf55fd761b4":[14,0,0,29,67],
"classrapidjson_1_1_generic_value.html#a578e35f3350717db2aae534969b2346a":[14,0,0,29,35],
"classrapidjson_1_1_generic_value.html#a58ecce8a34fc029039b8079de246bdaa":[14,0,0,29,156],
"classrapidjson_1_1_generic_value.html#a5d47340c96346c5028fee4c9068d783d":[14,0,0,29,0],
-"classrapidjson_1_1_generic_value.html#a61b8b363430c366384ee2bbdcb91bf20":[14,0,0,29,83],
+"classrapidjson_1_1_generic_value.html#a5daef830cdbe445a6450be3feae2662a":[14,0,0,29,84],
+"classrapidjson_1_1_generic_value.html#a5e64a654ea30e182e4f0b4913c95a1d1":[14,0,0,29,82],
+"classrapidjson_1_1_generic_value.html#a5f2396316c5145cb41ebbccfb03100ba":[14,0,0,29,68],
+"classrapidjson_1_1_generic_value.html#a6188d3ad8430b56ef45b9bd5633eafce":[14,0,0,29,89],
+"classrapidjson_1_1_generic_value.html#a6443cf5323fb46c4c51cd15a365da49b":[14,0,0,29,105],
"classrapidjson_1_1_generic_value.html#a646b6d4d3d98799a0926d96ffa127a58":[14,0,0,29,15],
"classrapidjson_1_1_generic_value.html#a65bfc3073fa80ee5eba8e985abe2f941":[14,0,0,29,25],
-"classrapidjson_1_1_generic_value.html#a66f1a57c68b149a31faa739d51c463ec":[14,0,0,29,64],
+"classrapidjson_1_1_generic_value.html#a66b362b364e57f17ae56ea1d41eb4883":[14,0,0,29,119],
"classrapidjson_1_1_generic_value.html#a67f32cbe6eb699f95391a58efd39a070":[14,0,0,29,137],
"classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99":[14,0,0,29,48],
"classrapidjson_1_1_generic_value.html#a68d8d197ae1fb83d4dc202f9812af4cc":[14,0,0,29,126],
-"classrapidjson_1_1_generic_value.html#a69d917b47799f63fc588bf294fa71483":[14,0,0,29,65],
-"classrapidjson_1_1_generic_value.html#a6cbb8a305fdc40beb83bee2b99ac5b59":[14,0,0,29,42],
"classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f":[14,0,0,29,4],
"classrapidjson_1_1_generic_value.html#a6f0d90a3f269061a73d05999fd61473e":[14,0,0,29,140],
-"classrapidjson_1_1_generic_value.html#a6f7f7c66d8f8c08e496ae831ba114126":[14,0,0,29,112],
"classrapidjson_1_1_generic_value.html#a71b9e2ec1f7bf9e2f034126ca7b4945a":[14,0,0,29,22],
"classrapidjson_1_1_generic_value.html#a77b0f41557b3c34b57a180698312c4a8":[14,0,0,29,29],
-"classrapidjson_1_1_generic_value.html#a77b677674bc92a6e6a78cc9736a44f1c":[14,0,0,29,69],
-"classrapidjson_1_1_generic_value.html#a7821da23b34e3509a80469acfa1850f5":[14,0,0,29,93],
-"classrapidjson_1_1_generic_value.html#a7bed9035dd1beeabe6f47e870874e793":[14,0,0,29,111],
+"classrapidjson_1_1_generic_value.html#a78d80b935babeedbfa71914a8fe5baa7":[14,0,0,29,65],
+"classrapidjson_1_1_generic_value.html#a794129b8adffb97d123306a0c0ccaf71":[14,0,0,29,79],
+"classrapidjson_1_1_generic_value.html#a799a8a2503989f486f3fc7a660266555":[14,0,0,29,150],
"classrapidjson_1_1_generic_value.html#a7cb3cbaefe4fb99aaf9f155fb4ee039b":[14,0,0,29,141],
"classrapidjson_1_1_generic_value.html#a81291ad1031afe43aca4719e2989d7dc":[14,0,0,29,1],
+"classrapidjson_1_1_generic_value.html#a812e5c07f74a90566e7636330740eb6a":[14,0,0,29,42],
"classrapidjson_1_1_generic_value.html#a83ba61e8a5170c2e172fd60ebc11016f":[14,0,0,29,27],
"classrapidjson_1_1_generic_value.html#a852788b35257762cd8d6c4bf5c5d77bc":[14,0,0,29,28],
"classrapidjson_1_1_generic_value.html#a85dc131bdad8077ce970d580d333d15a":[14,0,0,29,37],
-"classrapidjson_1_1_generic_value.html#a88d2c5b861cd8a6a14976456dfbc1f64":[14,0,0,29,100],
"classrapidjson_1_1_generic_value.html#a893da1069660536fd3943a0149206a6e":[14,0,0,29,30],
"classrapidjson_1_1_generic_value.html#a899449e1a645b5e377af059fb61113d8":[14,0,0,29,153],
"classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f":[14,0,0,29,6],
"classrapidjson_1_1_generic_value.html#a8b508fecfecbecb418c999597d83d384":[14,0,0,29,132],
+"classrapidjson_1_1_generic_value.html#a8b7e47c57a20d0de0cd19eee799ebd88":[14,0,0,29,99],
"classrapidjson_1_1_generic_value.html#a8c89bdc7f8dd14e4ab974e587b99405a":[14,0,0,29,149],
"classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603":[14,0,0,29,40],
"classrapidjson_1_1_generic_value.html#a8d75bf0c6c0fa4f8d340a4236e98539b":[14,0,0,29,57],
"classrapidjson_1_1_generic_value.html#a8ec7fc7f221306925c7674dccbe02b07":[14,0,0,29,114],
-"classrapidjson_1_1_generic_value.html#a8f135403c71fa69ba164f019e1a51fd0":[14,0,0,29,117],
"classrapidjson_1_1_generic_value.html#a8fb89523de7b22be0c69069f05d04b41":[14,0,0,29,3],
+"classrapidjson_1_1_generic_value.html#a8ffdbcf1cd70c87792f5d486313dc28c":[14,0,0,29,88],
+"classrapidjson_1_1_generic_value.html#a90916413828ce8da6868051236313583":[14,0,0,29,58],
"classrapidjson_1_1_generic_value.html#a916f443e02f9379d8fbde49a4d440f61":[14,0,0,29,49],
-"classrapidjson_1_1_generic_value.html#a92991a57de8cf42da2e4efc792acefea":[14,0,0,29,68],
-"classrapidjson_1_1_generic_value.html#a92f0524be583ff2b12c80587a57921d2":[14,0,0,29,94],
+"classrapidjson_1_1_generic_value.html#a917b849cbd1a0bda256e8841ca4ecf24":[14,0,0,29,81],
"classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a":[14,0,0,29,98],
-"classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8":[14,0,0,29,73],
-"classrapidjson_1_1_generic_value.html#a9a3648431f0227759bade4363525619d":[14,0,0,29,82],
+"classrapidjson_1_1_generic_value.html#a97ef0b0785542eaa8e2337161c358c07":[14,0,0,29,72],
+"classrapidjson_1_1_generic_value.html#a9b3b30acbe60d7a5b105afa05c1ddfb0":[14,0,0,29,78],
"classrapidjson_1_1_generic_value.html#a9ba3d9d8a106d5b7e92fb49db897c21b":[14,0,0,29,146],
-"classrapidjson_1_1_generic_value.html#aa059dee923cc0446752e321ff70936a6":[14,0,0,29,66],
+"classrapidjson_1_1_generic_value.html#aa1ab35be7c796a75dec562844a1917e6":[14,0,0,29,75],
+"classrapidjson_1_1_generic_value.html#aa27d086d265f0ce447b15b15f0a2ed6e":[14,0,0,29,66],
"classrapidjson_1_1_generic_value.html#aa56b69bac5423622eff6998ce4802106":[14,0,0,29,43],
"classrapidjson_1_1_generic_value.html#aa59273e0adfe2a9d0e6ac29d2537d9ed":[14,0,0,29,125],
"classrapidjson_1_1_generic_value.html#aa60074f72a6d1651828a104b0c6387b1":[14,0,0,29,127],
"classrapidjson_1_1_generic_value.html#aa62b57746c96ce3d264b2fe178196062":[14,0,0,29,116],
-"classrapidjson_1_1_generic_value.html#aa646b271a6802e57c2987d133594690c":[14,0,0,29,74],
"classrapidjson_1_1_generic_value.html#aa70ada250f3a0c5aeee0ce138d136b06":[14,0,0,29,39],
+"classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b":[14,0,0,29,77],
"classrapidjson_1_1_generic_value.html#aaa465706fda1e1ef4513ce877e0b4b69":[14,0,0,29,155],
"classrapidjson_1_1_generic_value.html#aaa92aa34a1b7ba91980a461bd526a4db":[14,0,0,29,62],
-"classrapidjson_1_1_generic_value.html#aab763460a97e8944ddedf51203581a3b":[14,0,0,29,72],
"classrapidjson_1_1_generic_value.html#aabb538578a3c1e60c86cda32d062bc1c":[14,0,0,29,143],
-"classrapidjson_1_1_generic_value.html#aad5c657dc7d79e128bec55eddc5a4164":[14,0,0,29,56],
+"classrapidjson_1_1_generic_value.html#aac009c514da7e112aa8a9054c4d3e247":[14,0,0,29,76],
+"classrapidjson_1_1_generic_value.html#aaddbbbb35cd783f209f889cf8dea9570":[14,0,0,29,113],
"classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109":[14,0,0,29,46],
"classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68":[14,0,0,29,33],
"classrapidjson_1_1_generic_value.html#ab05bc9e52e201a2867ea5bac141ee1ae":[14,0,0,29,152],
"classrapidjson_1_1_generic_value.html#ab4babf200cac2dacb412a3ea279ddf5b":[14,0,0,29,145],
+"classrapidjson_1_1_generic_value.html#ab4e5285102bb686f39bca2855a17a181":[14,0,0,29,110],
+"classrapidjson_1_1_generic_value.html#ab5ce40f269b788b6dac0c2d95cf58201":[14,0,0,29,92],
"classrapidjson_1_1_generic_value.html#ab705cb56bfb380005704cda2d0edf168":[14,0,0,29,36],
"classrapidjson_1_1_generic_value.html#ab7446da62fdc61d6d987d508cdb6ac13":[14,0,0,29,109],
"classrapidjson_1_1_generic_value.html#ab933ad7ff8c9d08f73cebaecb700dbe9":[14,0,0,29,17],
"classrapidjson_1_1_generic_value.html#abba0c9ccfd90726f916c36013a2e9e19":[14,0,0,29,18],
-"classrapidjson_1_1_generic_value.html#abc8945d3411c6ce583d322753ce028e1":[14,0,0,29,41],
+"classrapidjson_1_1_generic_value.html#abdd6a3b703a03aada4c186a2365698e7":[14,0,0,29,47],
+"classrapidjson_1_1_generic_value.html#ac38ba24b67587939ff4d76ab65340d11":[14,0,0,29,60],
+"classrapidjson_1_1_generic_value.html#ac4f8e1cb46ffe319fad442265ab297b0":[14,0,0,29,86],
"classrapidjson_1_1_generic_value.html#ac51a3b3046aaa12aa1d88ac876a28cec":[14,0,0,29,52],
-"classrapidjson_1_1_generic_value.html#aca0cff58ccd1d50ddce2eb2182e322c2":[14,0,0,29,138],
-"classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b":[14,0,0,29,9],
-"classrapidjson_1_1_generic_value.html#acc8ea5f64c4bb4d32b5286e5e9f4d0e0":[14,0,0,29,89],
-"classrapidjson_1_1_generic_value.html#acd4ae9a8dba4498d1d7cce6667529bb8":[14,0,0,29,20]
+"classrapidjson_1_1_generic_value.html#ac61d98a6f865040d8e250191e2a3a552":[14,0,0,29,91],
+"classrapidjson_1_1_generic_value.html#aca0cff58ccd1d50ddce2eb2182e322c2":[14,0,0,29,138]
};
diff --git a/zh-cn/navtreeindex2.js b/zh-cn/navtreeindex2.js
index 6304a277..5e884987 100644
--- a/zh-cn/navtreeindex2.js
+++ b/zh-cn/navtreeindex2.js
@@ -1,41 +1,41 @@
var NAVTREEINDEX2 =
{
-"classrapidjson_1_1_generic_value.html#acf5019b9002ebfd66a1191d19e986c7b":[14,0,0,29,99],
+"classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b":[14,0,0,29,9],
+"classrapidjson_1_1_generic_value.html#acc6b1791cca8daef18521918136264b7":[14,0,0,29,80],
+"classrapidjson_1_1_generic_value.html#acd4ae9a8dba4498d1d7cce6667529bb8":[14,0,0,29,20],
+"classrapidjson_1_1_generic_value.html#ad08a62c65a793ab1d0abe7eac03776fd":[14,0,0,29,45],
"classrapidjson_1_1_generic_value.html#ad1f8199e65662e0d52a13a1577d4e4a5":[14,0,0,29,14],
"classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811":[14,0,0,29,55],
"classrapidjson_1_1_generic_value.html#ad290f179591025e871bedbbac89ac276":[14,0,0,29,34],
"classrapidjson_1_1_generic_value.html#ad2935191ab28c2c2e472b739a9d58202":[14,0,0,29,13],
-"classrapidjson_1_1_generic_value.html#ad2b3832cef0c74490de72954f8891a90":[14,0,0,29,60],
-"classrapidjson_1_1_generic_value.html#ad2d9786831d721cf8f1bf0dbdf86404a":[14,0,0,29,47],
-"classrapidjson_1_1_generic_value.html#ad7e6ef7acbbfef57485b9f2dee620dbf":[14,0,0,29,106],
+"classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c":[14,0,0,29,32],
+"classrapidjson_1_1_generic_value.html#ad5bf5afd53f21f370f917041b3be4bfc":[14,0,0,29,104],
"classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae":[14,0,0,29,44],
+"classrapidjson_1_1_generic_value.html#ad951d4bff60d37dd603ce68a36f1732a":[14,0,0,29,74],
"classrapidjson_1_1_generic_value.html#ad9553bb9ccbfd19547c473a95405a8b2":[14,0,0,29,26],
-"classrapidjson_1_1_generic_value.html#adaba7873c2c23ad2733c323040fee69f":[14,0,0,29,85],
"classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee":[14,0,0,29,101],
"classrapidjson_1_1_generic_value.html#adc312de070d03a63e6c692c9c61db156":[14,0,0,29,120],
"classrapidjson_1_1_generic_value.html#adca019775f68f012643781cd2c2515ac":[14,0,0,29,16],
"classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4":[14,0,0,29,2],
-"classrapidjson_1_1_generic_value.html#ade8d1ca2b8e8afa02cde46e26866440b":[14,0,0,29,80],
+"classrapidjson_1_1_generic_value.html#adcdd96c0780ecd834a98d09bc402a1ea":[14,0,0,29,83],
"classrapidjson_1_1_generic_value.html#ae08898bef949f217f0e5d28e19f05992":[14,0,0,29,154],
"classrapidjson_1_1_generic_value.html#ae1b1a60a9c69ce5ac48b8c445e3e9231":[14,0,0,29,10],
"classrapidjson_1_1_generic_value.html#ae475f31fb851138ced40e2ff6cb43ca6":[14,0,0,29,122],
"classrapidjson_1_1_generic_value.html#ae5576f5bb31c707ffd8ce6d6c58135a5":[14,0,0,29,133],
"classrapidjson_1_1_generic_value.html#ae6351043ec30d8a151b0a072cfbc46d5":[14,0,0,29,144],
-"classrapidjson_1_1_generic_value.html#ae6c196979931e8283bcbd499133169ed":[14,0,0,29,113],
+"classrapidjson_1_1_generic_value.html#ae6fe0576ff0336f6e2b09fe32f3ff809":[14,0,0,29,106],
+"classrapidjson_1_1_generic_value.html#ae7043304c8625aec1fc2df3363e7bb0a":[14,0,0,29,95],
+"classrapidjson_1_1_generic_value.html#ae89a77887aa3eb1f1f913727cbff6786":[14,0,0,29,97],
"classrapidjson_1_1_generic_value.html#ae8bcedd951f50b69786aaaa1828e9fac":[14,0,0,29,107],
-"classrapidjson_1_1_generic_value.html#aec193a145bd3e2d21a7896e2faa2a608":[14,0,0,29,96],
"classrapidjson_1_1_generic_value.html#aecc9d0a6aafe31f4fdf9f6e75e5f089c":[14,0,0,29,108],
-"classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e":[14,0,0,29,32],
-"classrapidjson_1_1_generic_value.html#af17b9b6ba6a9fb4e02d2dced5aa0ee0c":[14,0,0,29,77],
-"classrapidjson_1_1_generic_value.html#af24703a7474efe0998a35002a24fe622":[14,0,0,29,58],
+"classrapidjson_1_1_generic_value.html#af03ef6020e188bbfceb018da5cd8becc":[14,0,0,29,111],
+"classrapidjson_1_1_generic_value.html#af089d2bee0386ca7504ff4fab466c87f":[14,0,0,29,112],
"classrapidjson_1_1_generic_value.html#af5ada19ad065eeecc7112409bc8d9bbb":[14,0,0,29,136],
"classrapidjson_1_1_generic_value.html#af91573ce61d798f0bc5dc88b00742697":[14,0,0,29,130],
"classrapidjson_1_1_generic_value.html#af930563f804086df25f70bb5f1de8e6a":[14,0,0,29,53],
-"classrapidjson_1_1_generic_value.html#afb1942ef13566484e1806689834a053f":[14,0,0,29,78],
"classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f":[14,0,0,29,142],
-"classrapidjson_1_1_generic_value.html#afbdbc9cbc3b59feb5a28d5bfee97dbb3":[14,0,0,29,110],
+"classrapidjson_1_1_generic_value.html#afd2e8dbf6112c2ea007a6274dd37e472":[14,0,0,29,87],
"classrapidjson_1_1_generic_value.html#afe94e5e86a5b1a3fb605a9f8422f048b":[14,0,0,29,23],
-"classrapidjson_1_1_generic_value.html#aff1711092a1278d36b8152f5520a686e":[14,0,0,29,105],
"classrapidjson_1_1_handler.html":[14,0,0,30],
"classrapidjson_1_1_i_generic_remote_schema_document_provider.html":[14,0,0,31],
"classrapidjson_1_1_i_generic_remote_schema_document_provider.html#a16421821dd1e9aaf9fb7bcb981296aab":[14,0,0,31,1],
@@ -44,12 +44,12 @@ var NAVTREEINDEX2 =
"classrapidjson_1_1_memory_pool_allocator.html":[14,0,0,32],
"classrapidjson_1_1_memory_pool_allocator.html#a208c29e04b1d748bfe068444b7044344":[14,0,0,32,5],
"classrapidjson_1_1_memory_pool_allocator.html#a59d783f4feba17dcd35d9f25fcbc09f4":[14,0,0,32,0],
-"classrapidjson_1_1_memory_pool_allocator.html#a7433671a5129289939c3a4f24d173b6e":[14,0,0,32,3],
"classrapidjson_1_1_memory_pool_allocator.html#a880524b17bbecb5d2691b8075050d55d":[14,0,0,32,6],
"classrapidjson_1_1_memory_pool_allocator.html#aa050d52c62503ca6d6f66289ce83a18e":[14,0,0,32,4],
+"classrapidjson_1_1_memory_pool_allocator.html#aa08b368c54e7643fcd23ef55139b9b40":[14,0,0,32,7],
"classrapidjson_1_1_memory_pool_allocator.html#aa1d5b36c67611937e8ad6b2be53a483e":[14,0,0,32,2],
-"classrapidjson_1_1_memory_pool_allocator.html#aad83829efa77ad26a23f74d6cab3d781":[14,0,0,32,7],
"classrapidjson_1_1_memory_pool_allocator.html#abcc572bdb6902c9d69711540db5098a7":[14,0,0,32,1],
+"classrapidjson_1_1_memory_pool_allocator.html#acdf0fc08cbcd940205a0a6289f1c58bd":[14,0,0,32,3],
"classrapidjson_1_1_pretty_writer.html":[14,0,0,35],
"classrapidjson_1_1_pretty_writer.html#a0b7000c10be5b1e24920ce27a7ba7f6a":[14,0,0,35,12],
"classrapidjson_1_1_pretty_writer.html#a0ebfb88ba0a9d87fe2a2f59f4e0b72fb":[14,0,0,35,11],
@@ -82,23 +82,23 @@ var NAVTREEINDEX2 =
"classrapidjson_1_1_pretty_writer.html#afb049092845d2c0168f1570cf4ad66bc":[14,0,0,35,13],
"classrapidjson_1_1_pretty_writer.html#aff11c26086470359ef3ab1142515441c":[14,0,0,35,14],
"classrapidjson_1_1_schema_validating_reader.html":[14,0,0,36],
+"classrapidjson_1_1_schema_validating_reader.html#a00e8db597e8a55b5f8810707dda40dfa":[14,0,0,36,3],
"classrapidjson_1_1_schema_validating_reader.html#a1e2bcc66cad23376241cd91e8bf8c706":[14,0,0,36,2],
"classrapidjson_1_1_schema_validating_reader.html#a3507a4886ce6778fe1cae39ed5f0baaf":[14,0,0,36,0],
"classrapidjson_1_1_schema_validating_reader.html#a42c64d1ed25ffb2e70a35b9e43e0e564":[14,0,0,36,1],
-"classrapidjson_1_1_schema_validating_reader.html#a84b5bb649a69e5da572ead36fb907b0e":[14,0,0,36,7],
-"classrapidjson_1_1_schema_validating_reader.html#a86c9e433d8b540e54808fd54ac9c4be0":[14,0,0,36,3],
-"classrapidjson_1_1_schema_validating_reader.html#aa23c98c009967dec658bd2099f3c9418":[14,0,0,36,5],
-"classrapidjson_1_1_schema_validating_reader.html#ac73cdab259f38f00af7862861a6e3c52":[14,0,0,36,6],
+"classrapidjson_1_1_schema_validating_reader.html#a67bf36f1e4bf24a0760170ed199f592b":[14,0,0,36,4],
+"classrapidjson_1_1_schema_validating_reader.html#a803e1eff3f4fa021e56c6583c45c9fb4":[14,0,0,36,7],
+"classrapidjson_1_1_schema_validating_reader.html#a957147a03ad791aa12a0552320371a41":[14,0,0,36,6],
"classrapidjson_1_1_schema_validating_reader.html#adb09230cc40b8dc5ba607de14d37dc42":[14,0,0,36,8],
-"classrapidjson_1_1_schema_validating_reader.html#af60e486b5ba0a826d443a111a4fbe87d":[14,0,0,36,4],
+"classrapidjson_1_1_schema_validating_reader.html#ae90052ccece8e04e7a840dd61f7ac83c":[14,0,0,36,5],
"classrapidjson_1_1_stream.html":[14,0,0,37],
"classrapidjson_1_1_writer.html":[14,0,0,50],
"classrapidjson_1_1_writer.html#a08e5ea94699a727a24123737927514ee":[14,0,0,50,27],
"classrapidjson_1_1_writer.html#a09c1a50dd2d6de4e8d59e6c8ecf62460":[14,0,0,50,31],
-"classrapidjson_1_1_writer.html#a0cde8037db76f887cd9c557fd68630c5":[14,0,0,50,13],
"classrapidjson_1_1_writer.html#a1221be4404ddaddc9605725e69dc7e53":[14,0,0,50,42],
"classrapidjson_1_1_writer.html#a1370d3fd6728d4f0b3f20d734bb27eaf":[14,0,0,50,52],
"classrapidjson_1_1_writer.html#a13c98a10c8a8be0823c6cfd8e1b479a4":[14,0,0,50,6],
+"classrapidjson_1_1_writer.html#a190d964d3e62155e87153e858a0b04da":[14,0,0,50,13],
"classrapidjson_1_1_writer.html#a1e857b9fe7071fc0b9fa89b56ad05651":[14,0,0,50,17],
"classrapidjson_1_1_writer.html#a22fd25fb5cb2db6c25762961e51e9c46":[14,0,0,50,11],
"classrapidjson_1_1_writer.html#a2cf973937ca1110293bf1350fac2a6d6":[14,0,0,50,1],
@@ -110,7 +110,6 @@ var NAVTREEINDEX2 =
"classrapidjson_1_1_writer.html#a474abb8f7b704f1ef7c00bbe2a2e01b6":[14,0,0,50,48],
"classrapidjson_1_1_writer.html#a49f2dd265ab15ee065f0506a8d3efac9":[14,0,0,50,29],
"classrapidjson_1_1_writer.html#a58ecbfbe9f86e5303448f2b8024cbd46":[14,0,0,50,14],
-"classrapidjson_1_1_writer.html#a5ba4d42de8571712f54f7d40a6414162":[14,0,0,50,10],
"classrapidjson_1_1_writer.html#a60939802ba2dfdd19754f20bda553a26":[14,0,0,50,34],
"classrapidjson_1_1_writer.html#a60b50a90fa1cfd525e14c37c36b9998d":[14,0,0,50,41],
"classrapidjson_1_1_writer.html#a65a378b4de5df3fb02521a4a78b25230":[14,0,0,50,19],
@@ -127,6 +126,7 @@ var NAVTREEINDEX2 =
"classrapidjson_1_1_writer.html#a939007778b53074132750d9eccfdc5a2":[14,0,0,50,50],
"classrapidjson_1_1_writer.html#a95860b89f9a9eea9d4336f0023c497ce":[14,0,0,50,44],
"classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2":[14,0,0,50,2],
+"classrapidjson_1_1_writer.html#aa436d23d8227c270a9a5297a6dbc0674":[14,0,0,50,10],
"classrapidjson_1_1_writer.html#aa7b6967dc237519e2a6d8b3939fb9634":[14,0,0,50,23],
"classrapidjson_1_1_writer.html#aada3d510b7637fd0e9e8b3cbad093c2e":[14,0,0,50,38],
"classrapidjson_1_1_writer.html#ab2ccb801bfd355ecc03a3a3ba5eb7392":[14,0,0,50,37],
@@ -145,10 +145,10 @@ var NAVTREEINDEX2 =
"classrapidjson_1_1_writer.html#afc5bc83bdf5fda810c8fe200cdda12b5":[14,0,0,50,35],
"classrapidjson_1_1_writer.html#afd055764da99bd167b030c19104b107a":[14,0,0,50,4],
"classrapidjson_1_1_writer.html#aff66881798d01e932a0b8b8ef97b0373":[14,0,0,50,5],
-"dir_0b07344794a20f8375311f92e90cd9a3.html":[15,0,0,0],
-"dir_2e777bb85672ca91d8484c1593fb1d89.html":[15,0,0],
-"dir_5167ae66a3a40cb9e5e46c75b7477e81.html":[15,0,0,0,1],
-"dir_fe9dda5e4327cd9afbdccfe35db969bf.html":[15,0,0,0,0],
+"dir_32fb88e4d38e67d524aa70efbc36f66b.html":[15,0,0,0],
+"dir_5937892b65cdaf02cc4201f920170bd1.html":[15,0,0,0,0],
+"dir_8d7584a8244d286291cd37b99676a43b.html":[15,0,0,0,1],
+"dir_d44c64559bbebec7f509842c48db8b23.html":[15,0,0],
"diyfp_8h_source.html":[15,0,0,0,1,1],
"document_8h.html":[15,0,0,0,3],
"document_8h.html#a578c51ab574a50a9c760b9da7c7562f2":[15,0,0,0,3,16],
@@ -162,8 +162,8 @@ var NAVTREEINDEX2 =
"encodedstream_8h_source.html":[15,0,0,0,4],
"encodings_8h_source.html":[15,0,0,0,5],
"error_8h.html":[15,0,0,0,0,1],
-"error_8h.html#ga4e77e464ec8abe1111ee581fc2cb00de":[15,0,0,0,0,1,2],
"error_8h.html#ga7d3acf640886b1f2552dc8c4cd6dea60":[15,0,0,0,0,1,3],
+"error_8h.html#gac1bee7fdafeba5a85c27943fcde12882":[15,0,0,0,0,1,2],
"error_8h.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286":[15,0,0,0,0,1,3,1],
"error_8h.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93":[15,0,0,0,0,1,3,7],
"error_8h.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5":[15,0,0,0,0,1,3,2],
@@ -186,8 +186,9 @@ var NAVTREEINDEX2 =
"filereadstream_8h_source.html":[15,0,0,0,6],
"files.html":[15,0],
"filewritestream_8h_source.html":[15,0,0,0,7],
-"functions.html":[14,2,0,0],
"functions.html":[14,2,0],
+"functions.html":[14,2,0,0],
+"functions_0x7e.html":[14,2,0,20],
"functions_b.html":[14,2,0,1],
"functions_c.html":[14,2,0,2],
"functions_d.html":[14,2,0,3],
@@ -195,6 +196,7 @@ var NAVTREEINDEX2 =
"functions_f.html":[14,2,0,5],
"functions_func.html":[14,2,1],
"functions_func.html":[14,2,1,0],
+"functions_func_0x7e.html":[14,2,1,17],
"functions_func_b.html":[14,2,1,1],
"functions_func_c.html":[14,2,1,2],
"functions_func_d.html":[14,2,1,3],
@@ -211,7 +213,6 @@ var NAVTREEINDEX2 =
"functions_func_t.html":[14,2,1,14],
"functions_func_v.html":[14,2,1,15],
"functions_func_w.html":[14,2,1,16],
-"functions_func_~.html":[14,2,1,17],
"functions_g.html":[14,2,0,6],
"functions_h.html":[14,2,0,7],
"functions_i.html":[14,2,0,8],
@@ -229,7 +230,6 @@ var NAVTREEINDEX2 =
"functions_v.html":[14,2,0,18],
"functions_vars.html":[14,2,2],
"functions_w.html":[14,2,0,19],
-"functions_~.html":[14,2,0,20],
"fwd_8h_source.html":[15,0,0,0,8],
"globals.html":[15,1,0],
"globals_defs.html":[15,1,1],
@@ -237,17 +237,17 @@ var NAVTREEINDEX2 =
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga0ccf72f3ebc4b3306ab669f95ca5c64b":[15,0,0,0,15,19],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga0ccf72f3ebc4b3306ab669f95ca5c64b":[12,0,13],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga1975595e2f1dc20a2d4859f340ac88c6":[12,0,16],
-"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga250603aa9e2a12429b25ba0c8108ad4f":[15,0,0,0,15,16],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga250603aa9e2a12429b25ba0c8108ad4f":[12,0,10],
-"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga2f2eef0ee4477f3fe5874703a66e997f":[12,0,4],
+"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga250603aa9e2a12429b25ba0c8108ad4f":[15,0,0,0,15,16],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga2f2eef0ee4477f3fe5874703a66e997f":[15,0,0,0,15,8],
+"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga2f2eef0ee4477f3fe5874703a66e997f":[12,0,4],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242":[15,0,0,0,15,2],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242":[12,0,1],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1":[15,0,0,0,15,9],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1":[12,0,5],
-"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5":[15,0,0,0,15,22],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5":[12,0,14],
+"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5":[15,0,0,0,15,22],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga743a79d3af927391fe3eb5c979136899":[15,0,0,0,15,13],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga743a79d3af927391fe3eb5c979136899":[12,0,8],
-"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga77005e892e6601599beaf421b0395c31":[12,0,11]
+"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga77005e892e6601599beaf421b0395c31":[15,0,0,0,16,2]
};
diff --git a/zh-cn/navtreeindex3.js b/zh-cn/navtreeindex3.js
index 90ee62fd..64650fd0 100644
--- a/zh-cn/navtreeindex3.js
+++ b/zh-cn/navtreeindex3.js
@@ -1,47 +1,47 @@
var NAVTREEINDEX3 =
{
-"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga77005e892e6601599beaf421b0395c31":[15,0,0,0,16,2],
+"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga77005e892e6601599beaf421b0395c31":[12,0,11],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga7f4e50c35dae3b015390daa6d48ce23c":[15,0,0,0,15,15],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga7f4e50c35dae3b015390daa6d48ce23c":[12,0,9],
-"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga93fb983f78208d12c822376e1ea6d185":[12,0,0],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga93fb983f78208d12c822376e1ea6d185":[15,0,0,0,15,0],
-"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaba2445f582142cf918e74c2d22d1aa07":[12,0,3],
+"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga93fb983f78208d12c822376e1ea6d185":[12,0,0],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaba2445f582142cf918e74c2d22d1aa07":[15,0,0,0,15,6],
-"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c":[12,0,2],
+"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaba2445f582142cf918e74c2d22d1aa07":[12,0,3],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c":[15,0,0,0,15,3],
+"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c":[12,0,2],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gad283cfde97d9a32b7d8e8107b11f70a6":[12,0,15],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gad283cfde97d9a32b7d8e8107b11f70a6":[15,0,0,0,15,23],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf1ff1685be6cbebb5d4b2ab997776f45":[15,0,0,0,15,11],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf1ff1685be6cbebb5d4b2ab997776f45":[12,0,6],
-"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf9125105c593a636a79f1c2d96835376":[15,0,0,0,15,12],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf9125105c593a636a79f1c2d96835376":[12,0,7],
-"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf967d31be43666ce7f53756d73bd1cdf":[15,0,0,0,15,17],
+"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf9125105c593a636a79f1c2d96835376":[15,0,0,0,15,12],
"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf967d31be43666ce7f53756d73bd1cdf":[12,0,12],
+"group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf967d31be43666ce7f53756d73bd1cdf":[15,0,0,0,15,17],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html":[12,1],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0498aebcfdd3d4a5dcb989ee29b93d4d":[12,1,0,13],
-"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a056e5792c1554fbc05b5f1cc168d82ae":[12,1,0,6],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0f03679d5fa2736d9e351541e767fac1":[12,1,0,1],
-"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a11595b2d573f0299422678c5e3695479":[12,1,0,11],
-"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a1743018526769d9b5b782fd7cffc9838":[12,1,0,7],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f":[12,1,0,3],
-"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a3d6e37872d7da5f4a4c41e724c8c5c5f":[12,1,0,10],
+"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a3c6a1f7b7dc21363a255eb10a3c0e00e":[12,1,0,4],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a40c0bd4d6c535c57acbb5c2e656bea38":[12,1,0,12],
-"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a51cfd45c07e28aa4fdd78b55d86f0591":[12,1,0,4],
+"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a512e065514f0c55c539ef70033a3f508":[12,1,0,11],
+"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a53e838c5114c4770b01ba5fb4fe2ec09":[12,1,0,10],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a58c9982e833d1c74686506ac7449200c":[12,1,0,14],
-"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a59558cbb7ba917a1c3924d83ed2da0d9":[12,1,0,0],
-"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a5ab5548c7a7776f4da20eac09fe57c1b":[12,1,0,5],
-"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a7766917944b27eec1ea2c2605f584ac5":[12,1,0,8],
+"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a82fc3c16d5b670e8a86630c4feb730c1":[12,1,0,9],
+"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a85036788b0cfd1c676900de6f8260bd6":[12,1,0,6],
+"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ab6d87c6ce9c849f35e902fbe23f485c4":[12,1,0,5],
+"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ac58540d291311724829cac7ead1bae79":[12,1,0,8],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ad15710045513f13ba526753c4a2cb59b":[12,1,0,2],
-"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#add4d4e2934a3b90cf6b6f765330e0d95":[12,1,0,9],
-"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga4e77e464ec8abe1111ee581fc2cb00de":[12,1,5],
+"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#af0936ace1dc9b674e9afb75ec6145b32":[12,1,0,7],
+"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#aff2daa285445bba8f76578ea274e34a3":[12,1,0,0],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60":[12,1,6],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c":[12,1,1],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7e4636fd48d0148f102b8a13f0539d8c":[15,0,0,0,0,1,0],
-"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461":[12,1,4],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461":[15,0,0,0,16,4],
+"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461":[12,1,4],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79":[12,1,8],
-"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d":[12,1,2],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d":[15,0,0,0,0,1,1],
+"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabe2e1bd1349e5a7d6c1af78c05a98f0d":[12,1,2],
+"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gac1bee7fdafeba5a85c27943fcde12882":[12,1,5],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b":[12,1,7],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865":[12,1,3],
"group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865":[15,0,0,0,16,3],
@@ -125,14 +125,17 @@ var NAVTREEINDEX3 =
"md_doc_pointer_8zh-cn.html#URIFragment":[3,5],
"md_doc_pointer_8zh-cn.html#UserSuppliedTokens":[3,6],
"md_doc_sax_8zh-cn.html":[7],
-"md_doc_sax_8zh-cn.html#CompletenessReset":[7,1,1],
-"md_doc_sax_8zh-cn.html#CustomDataStructure":[7,1,2],
-"md_doc_sax_8zh-cn.html#Filtering":[7,1,3],
+"md_doc_sax_8zh-cn.html#CompletenessReset":[7,1,2],
+"md_doc_sax_8zh-cn.html#CustomDataStructure":[7,2,0],
+"md_doc_sax_8zh-cn.html#Filtering":[7,2,1],
"md_doc_sax_8zh-cn.html#GenericReader":[7,0,1],
"md_doc_sax_8zh-cn.html#Handler":[7,0,0],
-"md_doc_sax_8zh-cn.html#PrettyWriter":[7,1,0],
+"md_doc_sax_8zh-cn.html#PrettyWriter":[7,1,1],
"md_doc_sax_8zh-cn.html#Reader":[7,0],
+"md_doc_sax_8zh-cn.html#SaxParsing":[7,0,2],
+"md_doc_sax_8zh-cn.html#SaxTechniques":[7,2],
"md_doc_sax_8zh-cn.html#Writer":[7,1],
+"md_doc_sax_8zh-cn.html#WriterTemplate":[7,1,0],
"md_doc_schema_8zh-cn.html":[8],
"md_doc_stream_8zh-cn.html":[4],
"md_doc_stream_8zh-cn.html#AutoUTFInputStream":[4,3,2],
@@ -246,8 +249,5 @@ var NAVTREEINDEX3 =
"structrapidjson_1_1_base_reader_handler.html#a2f3d3bec89a751cdcf7a4236dbc6b26d":[14,0,0,5,13],
"structrapidjson_1_1_base_reader_handler.html#a6216b7af34bbae857ff06363f5b13f5d":[14,0,0,5,6],
"structrapidjson_1_1_base_reader_handler.html#a76b043fefd5fac0faadf3846995af6f5":[14,0,0,5,16],
-"structrapidjson_1_1_base_reader_handler.html#a7de3a16b56209aa2aa56a42591c426cb":[14,0,0,5,7],
-"structrapidjson_1_1_base_reader_handler.html#a823c816871a8dd881019ee8526b517cb":[14,0,0,5,10],
-"structrapidjson_1_1_base_reader_handler.html#a8fc75176ec793217d40d5a8de049cdb3":[14,0,0,5,5],
-"structrapidjson_1_1_base_reader_handler.html#a92649c2dc3e94e085ee056c17444d418":[14,0,0,5,9]
+"structrapidjson_1_1_base_reader_handler.html#a7de3a16b56209aa2aa56a42591c426cb":[14,0,0,5,7]
};
diff --git a/zh-cn/navtreeindex4.js b/zh-cn/navtreeindex4.js
index 744766ed..8c81a4cf 100644
--- a/zh-cn/navtreeindex4.js
+++ b/zh-cn/navtreeindex4.js
@@ -1,5 +1,8 @@
var NAVTREEINDEX4 =
{
+"structrapidjson_1_1_base_reader_handler.html#a823c816871a8dd881019ee8526b517cb":[14,0,0,5,10],
+"structrapidjson_1_1_base_reader_handler.html#a8fc75176ec793217d40d5a8de049cdb3":[14,0,0,5,5],
+"structrapidjson_1_1_base_reader_handler.html#a92649c2dc3e94e085ee056c17444d418":[14,0,0,5,9],
"structrapidjson_1_1_base_reader_handler.html#a9627844582969a7d79a2250bdb4f9ec0":[14,0,0,5,15],
"structrapidjson_1_1_base_reader_handler.html#ad48b724f01c31c1fdbd623bd31df6a3c":[14,0,0,5,14],
"structrapidjson_1_1_base_reader_handler.html#ae61944eee4cb6a3f7f34f3d4edce7eeb":[14,0,0,5,1],
@@ -26,13 +29,13 @@ var NAVTREEINDEX4 =
"structrapidjson_1_1_generic_memory_buffer.html":[14,0,0,20],
"structrapidjson_1_1_generic_memory_buffer.html#a070ea27ab1e80df671ced9edb7d03150":[14,0,0,20,7],
"structrapidjson_1_1_generic_memory_buffer.html#a1b2639889f687f0f6f1b90181918f273":[14,0,0,20,2],
+"structrapidjson_1_1_generic_memory_buffer.html#a2c05ddb3b37a57fc941d7b377e95b67a":[14,0,0,20,4],
"structrapidjson_1_1_generic_memory_buffer.html#a56c70223d8897e245df31e22a1fea60f":[14,0,0,20,1],
"structrapidjson_1_1_generic_memory_buffer.html#a66a3e80663d94506cab0117777486a06":[14,0,0,20,3],
+"structrapidjson_1_1_generic_memory_buffer.html#a67f68c4192d6f1a7a90315f5c9bf2930":[14,0,0,20,5],
"structrapidjson_1_1_generic_memory_buffer.html#a7c2ccd0d38df6d3cb3abd5aed9e100f8":[14,0,0,20,0],
"structrapidjson_1_1_generic_memory_buffer.html#a80a159ebb64cee80b5e7fc37f971d5a5":[14,0,0,20,10],
"structrapidjson_1_1_generic_memory_buffer.html#a882b45865eb98aa84241ef8b87bae96d":[14,0,0,20,8],
-"structrapidjson_1_1_generic_memory_buffer.html#a917320efd5a6a8cf9cc4b6bd0eaf6b99":[14,0,0,20,5],
-"structrapidjson_1_1_generic_memory_buffer.html#aa859b19dc183e781a4257fdae6f57136":[14,0,0,20,4],
"structrapidjson_1_1_generic_memory_buffer.html#abcbad3bf8a20a90b6b586e63b07aed40":[14,0,0,20,6],
"structrapidjson_1_1_generic_memory_buffer.html#af10d96902f7aea2eae23269c11398fbb":[14,0,0,20,9],
"structrapidjson_1_1_generic_pointer_1_1_token.html":[14,0,0,22,0],
@@ -44,40 +47,40 @@ var NAVTREEINDEX4 =
"structrapidjson_1_1_generic_string_ref.html#a29cf407c6aa2313f13dff78d6ce02687":[14,0,0,27,2],
"structrapidjson_1_1_generic_string_ref.html#a45345164abed97ea24603d2020b33448":[14,0,0,27,4],
"structrapidjson_1_1_generic_string_ref.html#a578c51ab574a50a9c760b9da7c7562f2":[14,0,0,27,7],
+"structrapidjson_1_1_generic_string_ref.html#a86d30bb594a41619a7a5ba6c8dcce2bd":[14,0,0,27,5],
"structrapidjson_1_1_generic_string_ref.html#aa2a8eccae3d7eb14c30bc21afb7d6fba":[14,0,0,27,0],
"structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5":[14,0,0,27,6],
"structrapidjson_1_1_generic_string_ref.html#acd4d5ebac2b610ce647356aa52998002":[14,0,0,27,1],
"structrapidjson_1_1_generic_string_ref.html#ad9eb120a58cee500ff3bd5706779c4e4":[14,0,0,27,3],
"structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111":[14,0,0,27,9],
-"structrapidjson_1_1_generic_string_ref.html#af535787e3593802222f7b3f3096beff0":[14,0,0,27,5],
"structrapidjson_1_1_generic_string_ref.html#af94951529a5d51e8c4e6e770bb707c1f":[14,0,0,27,8],
"structrapidjson_1_1_generic_string_stream.html":[14,0,0,28],
-"structrapidjson_1_1_generic_string_stream.html#a01cec5597b6e399ea37df9b4bda8ffce":[14,0,0,28,8],
"structrapidjson_1_1_generic_string_stream.html#a105adc6eec3483f90f6f2cf57aa81c12":[14,0,0,28,6],
"structrapidjson_1_1_generic_string_stream.html#a2556705b0a0fd6393862efe6db025b32":[14,0,0,28,9],
-"structrapidjson_1_1_generic_string_stream.html#a3e8943d1072d2390f4b09d223c8bf4e0":[14,0,0,28,3],
"structrapidjson_1_1_generic_string_stream.html#a56bb2351836bace23555f4dc5abf57b1":[14,0,0,28,7],
"structrapidjson_1_1_generic_string_stream.html#a5c7a3e097eb461b9cec5976576ecb9e4":[14,0,0,28,2],
"structrapidjson_1_1_generic_string_stream.html#a70ad06c96ddf8349be59f3d4f6bbadc8":[14,0,0,28,0],
+"structrapidjson_1_1_generic_string_stream.html#a7b0cfaa0a08c80fa30140ba5679001c0":[14,0,0,28,8],
"structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d":[14,0,0,28,10],
"structrapidjson_1_1_generic_string_stream.html#a9a515c0ba83ad9029d1560952584cd2e":[14,0,0,28,4],
+"structrapidjson_1_1_generic_string_stream.html#aa941b18ff3849494ca3692a8688500da":[14,0,0,28,3],
"structrapidjson_1_1_generic_string_stream.html#ab160d646f4560d7b95f3fd816c3aac9a":[14,0,0,28,1],
"structrapidjson_1_1_generic_string_stream.html#aca059ce7c89211420513940db8a52668":[14,0,0,28,5],
"structrapidjson_1_1_memory_stream.html":[14,0,0,33],
"structrapidjson_1_1_memory_stream.html#a1c16eac80906e4ff0c1ad1bc6fe43635":[14,0,0,33,2],
"structrapidjson_1_1_memory_stream.html#a1cc586e50fbfc0bd5994977b42243b93":[14,0,0,33,10],
"structrapidjson_1_1_memory_stream.html#a2135b36b12e5fcd2ee575b9a9cdb579c":[14,0,0,33,7],
-"structrapidjson_1_1_memory_stream.html#a31ff2fc33c3611f0b97105ce7fa29be8":[14,0,0,33,3],
-"structrapidjson_1_1_memory_stream.html#a3471216ab10f9e8a4dab072028948985":[14,0,0,33,4],
"structrapidjson_1_1_memory_stream.html#a3721da916bbddb54c97f631c3d8eb811":[14,0,0,33,5],
"structrapidjson_1_1_memory_stream.html#a47f45298891e8156121b4017954fabe8":[14,0,0,33,11],
-"structrapidjson_1_1_memory_stream.html#a5bee48e0635814286a1bc7e0166763c1":[14,0,0,33,9],
"structrapidjson_1_1_memory_stream.html#a78a2158aae245de652bad7d53de1772c":[14,0,0,33,1],
"structrapidjson_1_1_memory_stream.html#a8c8437d59c32168a74226312d9e96ace":[14,0,0,33,12],
"structrapidjson_1_1_memory_stream.html#a9cda045c9d01e18c4d4b06b2afe2edf2":[14,0,0,33,6],
"structrapidjson_1_1_memory_stream.html#aa0f6a8e627bc071d96bd1dbb50188f68":[14,0,0,33,8],
+"structrapidjson_1_1_memory_stream.html#ab759106a74ad078260c2c1029bfb7030":[14,0,0,33,9],
"structrapidjson_1_1_memory_stream.html#abf9f7cf51a5830ae45e24f5d55fdceaf":[14,0,0,33,0],
+"structrapidjson_1_1_memory_stream.html#abfe6486d171f52af46147031e0c65bb6":[14,0,0,33,3],
"structrapidjson_1_1_memory_stream.html#ac0b4da6016e5ba6241604fd4258fb722":[14,0,0,33,13],
+"structrapidjson_1_1_memory_stream.html#ad17be8ddf7b91d91b70fe1cdf5478d14":[14,0,0,33,4],
"structrapidjson_1_1_stream_traits.html":[14,0,0,38],
"structrapidjson_1_1_stream_traits.html#aea5a3f90ea4fd2a1b9c9c9954294474daf6f7f81d1e208f1041e618b57e0d3828":[14,0,0,38,0],
"structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4.html":[14,0,0,39],
diff --git a/zh-cn/ostreamwrapper_8h_source.html b/zh-cn/ostreamwrapper_8h_source.html
index f56da63e..cf302cc7 100644
--- a/zh-cn/ostreamwrapper_8h_source.html
+++ b/zh-cn/ostreamwrapper_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/ostreamwrapper.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('ostreamwrapper_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,88 +81,7 @@ $(document).ready(function(){initNavTree('ostreamwrapper_8h_source.html','');});
<div class="title">ostreamwrapper.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_OSTREAMWRAPPER_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_OSTREAMWRAPPER_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;iosfwd&gt;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">//! Wrapper of \c std::basic_ostream into RapidJSON&#39;s Stream concept.</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> The classes can be wrapped including but not limited to:</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> - \c std::ostringstream</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> - \c std::stringstream</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> - \c std::wpstringstream</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> - \c std::wstringstream</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> - \c std::ifstream</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> - \c std::fstream</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> - \c std::wofstream</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> - \c std::wfstream</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> \tparam StreamType Class derived from \c std::basic_ostream.</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> StreamType&gt;</div>
-<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_basic_o_stream_wrapper.html"> 45</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a> {</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> StreamType::char_type Ch;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a>(StreamType&amp; stream) : stream_(stream) {}</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">void</span> Put(Ch c) {</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; stream_.put(c);</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">void</span> Flush() {</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; stream_.flush();</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// Not implemented</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">char</span> Peek()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">char</span> Take() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">char</span>* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">size_t</span> PutEnd(<span class="keywordtype">char</span>*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a>&amp;);</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a>&amp;);</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; StreamType&amp; stream_;</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;};</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper&lt;std::ostream&gt;</a> <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">OStreamWrapper</a>;</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper&lt;std::wostream&gt;</a> <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">WOStreamWrapper</a>;</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_OSTREAMWRAPPER_H_</span></div>
-<div class="ttc" id="classrapidjson_1_1_basic_o_stream_wrapper_html"><div class="ttname"><a href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper</a></div><div class="ttdoc">Wrapper of std::basic_ostream into RapidJSON&#39;s Stream concept. </div><div class="ttdef"><b>Definition:</b> ostreamwrapper.h:45</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_OSTREAMWRAPPER_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_OSTREAMWRAPPER_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;iosfwd&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">//! Wrapper of \c std::basic_ostream into RapidJSON&#39;s Stream concept.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> The classes can be wrapped including but not limited to:</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> - \c std::ostringstream</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> - \c std::stringstream</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> - \c std::wpstringstream</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> - \c std::wstringstream</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> - \c std::ifstream</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> - \c std::fstream</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> - \c std::wofstream</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> - \c std::wfstream</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> \tparam StreamType Class derived from \c std::basic_ostream.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> StreamType&gt;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_basic_o_stream_wrapper.html"> 45</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> StreamType::char_type Ch;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a>(StreamType&amp; stream) : stream_(stream) {}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">void</span> Put(Ch c) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; stream_.put(c);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">void</span> Flush() {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; stream_.flush();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="comment">// Not implemented</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordtype">char</span> Peek()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">char</span> Take() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">char</span>* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">size_t</span> PutEnd(<span class="keywordtype">char</span>*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a>&amp;);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper</a>&amp;);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; StreamType&amp; stream_;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;};</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper&lt;std::ostream&gt;</a> <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">OStreamWrapper</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">BasicOStreamWrapper&lt;std::wostream&gt;</a> <a class="code" href="classrapidjson_1_1_basic_o_stream_wrapper.html">WOStreamWrapper</a>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_OSTREAMWRAPPER_H_</span></div><div class="ttc" id="classrapidjson_1_1_basic_o_stream_wrapper_html"><div class="ttname"><a href="classrapidjson_1_1_basic_o_stream_wrapper.html">rapidjson::BasicOStreamWrapper</a></div><div class="ttdoc">Wrapper of std::basic_ostream into RapidJSON&amp;#39;s Stream concept. </div><div class="ttdef"><b>Definition:</b> ostreamwrapper.h:45</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
@@ -169,7 +89,7 @@ $(document).ready(function(){initNavTree('ostreamwrapper_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>ostreamwrapper.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>ostreamwrapper.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/pages.html b/zh-cn/pages.html
index 771cf260..add48245 100644
--- a/zh-cn/pages.html
+++ b/zh-cn/pages.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 相关页面</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('pages.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/pointer_8h_source.html b/zh-cn/pointer_8h_source.html
index 03f30787..6e828045 100644
--- a/zh-cn/pointer_8h_source.html
+++ b/zh-cn/pointer_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/pointer.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('pointer_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,1444 +81,89 @@ $(document).ready(function(){initNavTree('pointer_8h_source.html','');});
<div class="title">pointer.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_POINTER_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_POINTER_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">document.h</a>&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;internal/itoa.h&quot;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(<span class="keywordflow">switch</span>-<span class="keyword">enum</span>)</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;RAPIDJSON_DIAG_OFF(4512) <span class="comment">// assignment operator could not be generated</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> kPointerInvalidIndex = ~<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(0); <span class="comment">//!&lt; Represents an invalid index in GenericPointer::Token</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">//! Error code of parsing.</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"></span><span class="comment">/*! \ingroup RAPIDJSON_ERRORS</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> \see GenericPointer::GenericPointer, GenericPointer::GetParseErrorCode</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b"> 39</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b">PointerParseErrorCode</a> {</div>
-<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b"> 40</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a> = 0, <span class="comment">//!&lt; The parse is successful</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba2f2f8b238e201b7d540e8914bbfd2bed"> 42</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba2f2f8b238e201b7d540e8914bbfd2bed">kPointerParseErrorTokenMustBeginWithSolidus</a>, <span class="comment">//!&lt; A token must begin with a &#39;/&#39;</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba907c9fe4e541b257513e3a18635379f7"> 43</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba907c9fe4e541b257513e3a18635379f7">kPointerParseErrorInvalidEscape</a>, <span class="comment">//!&lt; Invalid escape</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba29831a02b8ee23a05d552b47f4d64d28"> 44</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba29831a02b8ee23a05d552b47f4d64d28">kPointerParseErrorInvalidPercentEncoding</a>, <span class="comment">//!&lt; Invalid percent encoding in URI fragment</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7bae244a98f53279fda5a750f847b81c54f"> 45</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7bae244a98f53279fda5a750f847b81c54f">kPointerParseErrorCharacterMustPercentEncode</a> <span class="comment">//!&lt; A character must percent encoded in URI fragment</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"></span>};</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"></span><span class="comment">// GenericPointer</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">//! Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator.</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> This class implements RFC 6901 &quot;JavaScript Object Notation (JSON) Pointer&quot; </span></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> (https://tools.ietf.org/html/rfc6901).</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> A JSON pointer is for identifying a specific value in a JSON document</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> (GenericDocument). It can simplify coding of DOM tree manipulation, because it</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> can access multiple-level depth of DOM tree with single API call.</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> After it parses a string representation (e.g. &quot;/foo/0&quot; or URI fragment </span></div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> representation (e.g. &quot;#/foo/0&quot;) into its internal representation (tokens),</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> it can be used to resolve a specific value in multiple documents, or sub-tree </span></div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> of documents.</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> Contrary to GenericValue, Pointer can be copy constructed and copy assigned.</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> Apart from assignment, a Pointer cannot be modified after construction.</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> Although Pointer is very convenient, please aware that constructing Pointer</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> involves parsing and dynamic memory allocation. A special constructor with user-</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> supplied tokens eliminates these.</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> GenericPointer depends on GenericDocument and GenericValue.</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> </span></div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> \tparam ValueType The value type of the DOM tree. E.g. GenericValue&lt;UTF8&lt;&gt; &gt;</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> \tparam Allocator The allocator type for allocating memory for internal representation.</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> </span></div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> \note GenericPointer uses same encoding of ValueType.</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> However, Allocator of GenericPointer is independent of Allocator of Value.</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueType, <span class="keyword">typename</span> Allocator = CrtAllocator&gt;</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keyword">class </span>GenericPointer {</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e"> 83</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::EncodingType <a class="code" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>; <span class="comment">//!&lt; Encoding type from Value</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7"> 84</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::Ch <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>; <span class="comment">//!&lt; Character type from Value</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> //! A token is the basic units of internal representation.</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> A JSON pointer string representation &quot;/foo/123&quot; is parsed to two tokens: </span></div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> &quot;foo&quot; and 123. 123 will be represented in both numeric form and string form.</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> They are resolved according to the actual value type (object or array).</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> For token that are not numbers, or the numeric value is out of bound</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> (greater than limits of SizeType), they are only treated as string form</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> (i.e. the token&#39;s index will be equal to kPointerInvalidIndex).</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> This struct is public so that user can create a Pointer without parsing and </span></div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> allocation, using a special constructor.</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_pointer_1_1_token.html"> 99</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> {</div>
-<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8"> 100</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8">name</a>; <span class="comment">//!&lt; Name of the token. It has null character at the end but it can contain null character.</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600"> 101</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a>; <span class="comment">//!&lt; Length of the name.</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d"> 102</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">index</a>; <span class="comment">//!&lt; A valid array index, if it is not equal to kPointerInvalidIndex.</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"></span> };</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> //!@name Constructors and destructor.</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> //! Default constructor.</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#aa077ce171ea25cf501c12f2d5df7f248"> 109</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#aa077ce171ea25cf501c12f2d5df7f248">GenericPointer</a>(<a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>) {}</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> //! Constructor that parses a string or URI fragment representation.</span></div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"> \param source A null-terminated, string or URI fragment representation of JSON pointer.</span></div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> \param allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one.</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a8f831aae14afc493a82b5fb6aa9c3c43"> 116</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a8f831aae14afc493a82b5fb6aa9c3c43">GenericPointer</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* source, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>) {</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; Parse(source, internal::StrLen(source));</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> //! Constructor that parses a string or URI fragment representation.</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> \param source A string or URI fragment representation of JSON pointer.</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> \param allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one.</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING.</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#aeefcd60e5ad37d80ec43f5315ae84809"> 127</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#aeefcd60e5ad37d80ec43f5315ae84809">GenericPointer</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; source, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>) {</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; Parse(source.c_str(), source.size());</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> //! Constructor that parses a string or URI fragment representation, with length of the source string.</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"> \param source A string or URI fragment representation of JSON pointer.</span></div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> \param length Length of source.</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> \param allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one.</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"> \note Slightly faster than the overload without length.</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a00ad17ea227d2556404df7cc64c6aeb5"> 139</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a00ad17ea227d2556404df7cc64c6aeb5">GenericPointer</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* source, <span class="keywordtype">size_t</span> length, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>) {</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; Parse(source, length);</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> //! Constructor with user-supplied tokens.</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"> This constructor let user supplies const array of tokens.</span></div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> This prevents the parsing process and eliminates allocation.</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"> This is preferred for memory constrained environments.</span></div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment"> \param tokens An constant array of tokens representing the JSON pointer.</span></div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment"> \param tokenCount Number of tokens.</span></div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment"> \b Example</span></div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment"> \code</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"> #define NAME(s) { s, sizeof(s) / sizeof(s[0]) - 1, kPointerInvalidIndex }</span></div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"> #define INDEX(i) { #i, sizeof(#i) - 1, i }</span></div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"> static const Pointer::Token kTokens[] = { NAME(&quot;foo&quot;), INDEX(123) };</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"> static const Pointer p(kTokens, sizeof(kTokens) / sizeof(kTokens[0]));</span></div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"> // Equivalent to static const Pointer p(&quot;/foo/123&quot;);</span></div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"> #undef NAME</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"> #undef INDEX</span></div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> \endcode</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a6df9f6a01d1b5945811055e1cf8aead6"> 165</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a6df9f6a01d1b5945811055e1cf8aead6">GenericPointer</a>(<span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a>* tokens, <span class="keywordtype">size_t</span> tokenCount) : allocator_(), ownAllocator_(), nameBuffer_(), tokens_(const_cast&lt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a>*&gt;(tokens)), tokenCount_(tokenCount), parseErrorOffset_(), parseErrorCode_(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>) {}</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> //! Copy constructor.</span></div>
-<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a9f8119f2c714f78794854828789b832e"> 168</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a9f8119f2c714f78794854828789b832e">GenericPointer</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&amp; rhs, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>) {</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; *<span class="keyword">this</span> = rhs;</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> //! Destructor.</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a0e144b9956a5272c13ceff3b9306e748"> 173</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a0e144b9956a5272c13ceff3b9306e748">~GenericPointer</a>() {</div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> (nameBuffer_) <span class="comment">// If user-supplied tokens constructor is used, nameBuffer_ is nullptr and tokens_ are not deallocated.</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; Allocator::Free(tokens_);</div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a>(ownAllocator_);</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"> //! Assignment operator.</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a23194bb6ce6c07c78981344fe80ac3a6"> 180</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a23194bb6ce6c07c78981344fe80ac3a6">operator=</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&amp; rhs) {</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">this</span> != &amp;rhs) {</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">// Do not delete ownAllcator</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span> (nameBuffer_)</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; Allocator::Free(tokens_);</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; tokenCount_ = rhs.tokenCount_;</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; parseErrorOffset_ = rhs.parseErrorOffset_;</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; parseErrorCode_ = rhs.parseErrorCode_;</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">if</span> (rhs.nameBuffer_)</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; CopyFromRaw(rhs); <span class="comment">// Normally parsed tokens.</span></div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; tokens_ = rhs.tokens_; <span class="comment">// User supplied const tokens.</span></div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; nameBuffer_ = 0;</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"> //!@name Append token</span></div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment"> //! Append a token and return a new Pointer</span></div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment"> \param token Token to be appended.</span></div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment"> \param allocator Allocator for the newly return Pointer.</span></div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment"> \return A new Pointer with appended token.</span></div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a64f7bb98da73976b59597cdde96a40b8"> 211</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a64f7bb98da73976b59597cdde96a40b8">Append</a>(<span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a>&amp; token, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> r;</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; r.allocator_ = allocator;</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> *p = r.CopyFromRaw(*<span class="keyword">this</span>, 1, token.<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a> + 1);</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; std::memcpy(p, token.<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8">name</a>, (token.<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a> + 1) * <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>));</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; r.tokens_[tokenCount_].name = p;</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; r.tokens_[tokenCount_].length = token.<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a>;</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; r.tokens_[tokenCount_].index = token.<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">index</a>;</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> r;</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment"> //! Append a name token with length, and return a new Pointer</span></div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment"> \param name Name to be appended.</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment"> \param length Length of name.</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment"> \param allocator Allocator for the newly return Pointer.</span></div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment"> \return A new Pointer with appended token.</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a96e6f4c01632be39df82917f833710bc"> 229</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a96e6f4c01632be39df82917f833710bc">Append</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* name, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> token = { name, length, kPointerInvalidIndex };</div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</span> Append(token, allocator);</div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment"> //! Append a name token without length, and return a new Pointer</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment"> \param name Name (const Ch*) to be appended.</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"> \param allocator Allocator for the newly return Pointer.</span></div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment"> \return A new Pointer with appended token.</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr&lt;internal::IsSame&lt;<span class="keyword">typename</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">internal::RemoveConst&lt;T&gt;::Type</a>, Ch&gt; &gt;), (<a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>))</div>
-<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#af2e3630aeaebb6628c2b1694a0595452"> 242</a></span>&#160; Append(T* name, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> Append(name, internal::StrLen(name), allocator);</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment"> //! Append a name token, and return a new Pointer</span></div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="comment"> \param name Name to be appended.</span></div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment"> \param allocator Allocator for the newly return Pointer.</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="comment"> \return A new Pointer with appended token.</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#ac4b35d8051c17a8c9408f71ae8541d19"> 253</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> <a class="code" href="classrapidjson_1_1_generic_pointer.html#ac4b35d8051c17a8c9408f71ae8541d19">Append</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> Append(name.c_str(), <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(name.size()), allocator);</div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"> //! Append a index token, and return a new Pointer</span></div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment"> \param index Index to be appended.</span></div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment"> \param allocator Allocator for the newly return Pointer.</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment"> \return A new Pointer with appended token.</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#ad0bd4948e56dce4b75b39f744050322c"> 264</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> <a class="code" href="classrapidjson_1_1_generic_pointer.html#ad0bd4948e56dce4b75b39f744050322c">Append</a>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordtype">char</span> buffer[21];</div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordtype">char</span>* end = <span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) == 4 ? internal::u32toa(index, buffer) : internal::u64toa(index, buffer);</div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(end - buffer);</div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; buffer[length] = <span class="charliteral">&#39;\0&#39;</span>;</div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>) == 1) {</div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> token = { <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>*<span class="keyword">&gt;</span>(buffer), length, index };</div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> Append(token, allocator);</div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> name[21];</div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt;= length; i++)</div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; name[i] = static_cast&lt;Ch&gt;(buffer[i]);</div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> token = { name, length, index };</div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">return</span> Append(token, allocator);</div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment"> //! Append a token by value, and return a new Pointer</span></div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="comment"> \param token token to be appended.</span></div>
-<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="comment"> \param allocator Allocator for the newly return Pointer.</span></div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="comment"> \return A new Pointer with appended token.</span></div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a3baa23b919dc9ba9421b8e6fbf3e0605"> 289</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a3baa23b919dc9ba9421b8e6fbf3e0605">Append</a>(<span class="keyword">const</span> ValueType&amp; token, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> (token.IsString())</div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> Append(token.GetString(), token.GetStringLength(), allocator);</div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(token.IsUint64());</div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(token.GetUint64() &lt;= <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(~0));</div>
-<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">return</span> Append(static_cast&lt;SizeType&gt;(token.GetUint64()), allocator);</div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"> //!@name Handling Parse Error</span></div>
-<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="comment"> //! Check whether this is a valid pointer.</span></div>
-<div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a112f364fe9aeabba2a72e83bcbeb8fda"> 303</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a112f364fe9aeabba2a72e83bcbeb8fda">IsValid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseErrorCode_ == <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>; }</div>
-<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment"> //! Get the parsing error offset in code unit.</span></div>
-<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#adc01f1be5f05127f849a2bf10a97e89b"> 306</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#adc01f1be5f05127f849a2bf10a97e89b">GetParseErrorOffset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseErrorOffset_; }</div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="comment"> //! Get the parsing error code.</span></div>
-<div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#ac817b123619422f03c44a46978d9fbd0"> 309</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b">PointerParseErrorCode</a> <a class="code" href="classrapidjson_1_1_generic_pointer.html#ac817b123619422f03c44a46978d9fbd0">GetParseErrorCode</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseErrorCode_; }</div>
-<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="comment"> //! Get the allocator of this pointer.</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#acdac4ea8e57920194827be4afb942d97"> 314</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#acdac4ea8e57920194827be4afb942d97">GetAllocator</a>() { <span class="keywordflow">return</span> *allocator_; }</div>
-<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="comment"> //!@name Tokens</span></div>
-<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="comment"> //! Get the token array (const version only).</span></div>
-<div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a0ee51e6c996d4665b398dae5dbf00bc4"> 320</a></span>&#160;<span class="comment"></span> <span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a>* <a class="code" href="classrapidjson_1_1_generic_pointer.html#a0ee51e6c996d4665b398dae5dbf00bc4">GetTokens</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> tokens_; }</div>
-<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="comment"> //! Get the number of tokens.</span></div>
-<div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a2949cb104effdf323781ae70ce469ed9"> 323</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a2949cb104effdf323781ae70ce469ed9">GetTokenCount</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> tokenCount_; }</div>
-<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment"> //!@name Equality/inequality operators</span></div>
-<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="comment"> //! Equality operator.</span></div>
-<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment"> \note When any pointers are invalid, always returns false.</span></div>
-<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#af0d009a8322a7b61f63a9539ca8bddaf"> 334</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#af0d009a8322a7b61f63a9539ca8bddaf">operator==</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&amp; rhs)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">if</span> (!IsValid() || !rhs.IsValid() || tokenCount_ != rhs.tokenCount_)</div>
-<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div>
-<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; tokenCount_; i++) {</div>
-<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">if</span> (tokens_[i].index != rhs.tokens_[i].index ||</div>
-<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; tokens_[i].length != rhs.tokens_[i].length || </div>
-<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; (tokens_[i].length != 0 &amp;&amp; std::memcmp(tokens_[i].name, rhs.tokens_[i].name, <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>)* tokens_[i].length) != 0))</div>
-<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; {</div>
-<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div>
-<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div>
-<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;</div>
-<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div>
-<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="comment"> //! Inequality operator.</span></div>
-<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="comment"> \note When any pointers are invalid, always returns true.</span></div>
-<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a3e74f5b9c9fd3307f6ebac61a7131524"> 354</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a3e74f5b9c9fd3307f6ebac61a7131524">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&amp; rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs); }</div>
-<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="comment"> //!@name Stringify</span></div>
-<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment"> //! Stringify the pointer into string representation.</span></div>
-<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment"> \tparam OutputStream Type of output stream.</span></div>
-<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="comment"> \param os The output stream.</span></div>
-<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#ab9166f175517b1bff8c2219ea769e506"> 367</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#ab9166f175517b1bff8c2219ea769e506">Stringify</a>(OutputStream&amp; os)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> Stringify&lt;false, OutputStream&gt;(os);</div>
-<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div>
-<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="comment"> //! Stringify the pointer into URI fragment representation.</span></div>
-<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="comment"> \tparam OutputStream Type of output stream.</span></div>
-<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="comment"> \param os The output stream.</span></div>
-<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a40413907ac94e218f93625d3a5c8c454"> 377</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a40413907ac94e218f93625d3a5c8c454">StringifyUriFragment</a>(OutputStream&amp; os)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">return</span> Stringify&lt;true, OutputStream&gt;(os);</div>
-<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div>
-<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="comment"> //!@name Create value</span></div>
-<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="comment"> //! Create a value in a subtree.</span></div>
-<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="comment"> If the value is not exist, it creates all parent values and a JSON Null value.</span></div>
-<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="comment"> So it always succeed and return the newly created or existing value.</span></div>
-<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="comment"> Remind that it may change types of parents according to tokens, so it </span></div>
-<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="comment"> potentially removes previously stored values. For example, if a document </span></div>
-<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="comment"> was an array, and &quot;/foo&quot; is used to create a value, then the document </span></div>
-<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment"> will be changed to an object, and all existing array elements are lost.</span></div>
-<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="comment"> \param root Root value of a DOM subtree to be resolved. It can be any value other than document root.</span></div>
-<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="comment"> \param allocator Allocator for creating the values if the specified value or its parents are not exist.</span></div>
-<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="comment"> \param alreadyExist If non-null, it stores whether the resolved value is already exist.</span></div>
-<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="comment"> \return The resolved newly created (a JSON Null value), or already exists value.</span></div>
-<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a3733a6d6cf2a3a13f2a59b109b56d800"> 401</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a3733a6d6cf2a3a13f2a59b109b56d800">Create</a>(ValueType&amp; root, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator, <span class="keywordtype">bool</span>* alreadyExist = 0)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsValid());</div>
-<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; ValueType* v = &amp;root;</div>
-<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordtype">bool</span> exist = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> *t = tokens_; t != tokens_ + tokenCount_; ++t) {</div>
-<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsArray() &amp;&amp; t-&gt;name[0] == <span class="charliteral">&#39;-&#39;</span> &amp;&amp; t-&gt;length == 1) {</div>
-<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; v-&gt;PushBack(ValueType().Move(), allocator);</div>
-<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; v = &amp;((*v)[v-&gt;Size() - 1]);</div>
-<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; exist = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div>
-<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">if</span> (t-&gt;index == kPointerInvalidIndex) { <span class="comment">// must be object name</span></div>
-<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span> (!v-&gt;IsObject())</div>
-<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; v-&gt;SetObject(); <span class="comment">// Change to Object</span></div>
-<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div>
-<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">else</span> { <span class="comment">// object name or array index</span></div>
-<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (!v-&gt;IsArray() &amp;&amp; !v-&gt;IsObject())</div>
-<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; v-&gt;SetArray(); <span class="comment">// Change to Array</span></div>
-<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div>
-<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div>
-<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsArray()) {</div>
-<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (t-&gt;index &gt;= v-&gt;Size()) {</div>
-<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; v-&gt;Reserve(t-&gt;index + 1, allocator);</div>
-<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">while</span> (t-&gt;index &gt;= v-&gt;Size())</div>
-<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; v-&gt;PushBack(ValueType().Move(), allocator);</div>
-<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; exist = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div>
-<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; v = &amp;((*v)[t-&gt;index]);</div>
-<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div>
-<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keyword">typename</span> ValueType::MemberIterator m = v-&gt;FindMember(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;Ch&gt;</a>(t-&gt;name, t-&gt;length));</div>
-<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span> (m == v-&gt;MemberEnd()) {</div>
-<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; v-&gt;AddMember(ValueType(t-&gt;name, t-&gt;length, allocator).Move(), ValueType().Move(), allocator);</div>
-<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; v = &amp;(--v-&gt;MemberEnd())-&gt;value; <span class="comment">// Assumes AddMember() appends at the end</span></div>
-<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; exist = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div>
-<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; v = &amp;m-&gt;value;</div>
-<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div>
-<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; }</div>
-<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div>
-<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div>
-<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">if</span> (alreadyExist)</div>
-<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; *alreadyExist = exist;</div>
-<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div>
-<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">return</span> *v;</div>
-<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div>
-<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;<span class="comment"> //! Creates a value in a document.</span></div>
-<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="comment"> \param document A document to be resolved.</span></div>
-<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="comment"> \param alreadyExist If non-null, it stores whether the resolved value is already exist.</span></div>
-<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="comment"> \return The resolved newly created, or already exists value.</span></div>
-<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div>
-<div class="line"><a name="l00456"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a2b5a8fb688e6b6a1b077ce103df455c3"> 456</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a2b5a8fb688e6b6a1b077ce103df455c3">Create</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, <span class="keywordtype">bool</span>* alreadyExist = 0)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">return</span> Create(document, document.<a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>(), alreadyExist);</div>
-<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div>
-<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="comment"> //!@name Query value</span></div>
-<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="comment"> //! Query a value in a subtree.</span></div>
-<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="comment"> \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.</span></div>
-<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="comment"> \param unresolvedTokenIndex If the pointer cannot resolve a token in the pointer, this parameter can obtain the index of unresolved token.</span></div>
-<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="comment"> \return Pointer to the value if it can be resolved. Otherwise null.</span></div>
-<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="comment"> \note</span></div>
-<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="comment"> There are only 3 situations when a value cannot be resolved:</span></div>
-<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="comment"> 1. A value in the path is not an array nor object.</span></div>
-<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;<span class="comment"> 2. An object value does not contain the token.</span></div>
-<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="comment"> 3. A token is out of range of an array value.</span></div>
-<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="comment"> Use unresolvedTokenIndex to retrieve the token index.</span></div>
-<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a309d819cc14e9d2183df4807bc99fea5"> 479</a></span>&#160; ValueType* <a class="code" href="classrapidjson_1_1_generic_pointer.html#a309d819cc14e9d2183df4807bc99fea5">Get</a>(ValueType&amp; root, <span class="keywordtype">size_t</span>* unresolvedTokenIndex = 0)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsValid());</div>
-<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; ValueType* v = &amp;root;</div>
-<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> *t = tokens_; t != tokens_ + tokenCount_; ++t) {</div>
-<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">switch</span> (v-&gt;GetType()) {</div>
-<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>:</div>
-<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div>
-<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keyword">typename</span> ValueType::MemberIterator m = v-&gt;FindMember(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;Ch&gt;</a>(t-&gt;name, t-&gt;length));</div>
-<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span> (m == v-&gt;MemberEnd())</div>
-<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; v = &amp;m-&gt;value;</div>
-<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div>
-<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>:</div>
-<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (t-&gt;index == kPointerInvalidIndex || t-&gt;index &gt;= v-&gt;Size())</div>
-<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; v = &amp;((*v)[t-&gt;index]);</div>
-<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div>
-<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div>
-<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="comment">// Error: unresolved token</span></div>
-<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">if</span> (unresolvedTokenIndex)</div>
-<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; *unresolvedTokenIndex = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(t - tokens_);</div>
-<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; }</div>
-<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">return</span> v;</div>
-<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div>
-<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="comment"> //! Query a const value in a const subtree.</span></div>
-<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="comment"> \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.</span></div>
-<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;<span class="comment"> \return Pointer to the value if it can be resolved. Otherwise null.</span></div>
-<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#ab6982b814e41d8f64bea7d5faab93b1f"> 514</a></span>&#160; <span class="keyword">const</span> ValueType* <a class="code" href="classrapidjson_1_1_generic_pointer.html#ab6982b814e41d8f64bea7d5faab93b1f">Get</a>(<span class="keyword">const</span> ValueType&amp; root, <span class="keywordtype">size_t</span>* unresolvedTokenIndex = 0)<span class="keyword"> const </span>{ </div>
-<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> Get(const_cast&lt;ValueType&amp;&gt;(root), unresolvedTokenIndex);</div>
-<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div>
-<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="comment"> //!@name Query a value with default</span></div>
-<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;<span class="comment"> //! Query a value in a subtree with default value.</span></div>
-<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="comment"> Similar to Get(), but if the specified value do not exists, it creates all parents and clone the default value.</span></div>
-<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="comment"> So that this function always succeed.</span></div>
-<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="comment"> \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.</span></div>
-<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="comment"> \param defaultValue Default value to be cloned if the value was not exists.</span></div>
-<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;<span class="comment"> \param allocator Allocator for creating the values if the specified value or its parents are not exist.</span></div>
-<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;<span class="comment"> \see Create()</span></div>
-<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00533"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a6c615761374ddce265d542f4b4b476b1"> 533</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a6c615761374ddce265d542f4b4b476b1">GetWithDefault</a>(ValueType&amp; root, <span class="keyword">const</span> ValueType&amp; defaultValue, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordtype">bool</span> alreadyExist;</div>
-<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">Value</a>&amp; v = Create(root, allocator, &amp;alreadyExist);</div>
-<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">return</span> alreadyExist ? v : v.<a class="code" href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae">CopyFrom</a>(defaultValue, allocator);</div>
-<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div>
-<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="comment"> //! Query a value in a subtree with default null-terminated string.</span></div>
-<div class="line"><a name="l00540"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#ae9f3e27a210a0974892c1260c2e4a39f"> 540</a></span>&#160;<span class="comment"></span> ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#ae9f3e27a210a0974892c1260c2e4a39f">GetWithDefault</a>(ValueType&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* defaultValue, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordtype">bool</span> alreadyExist;</div>
-<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">Value</a>&amp; v = Create(root, allocator, &amp;alreadyExist);</div>
-<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">return</span> alreadyExist ? v : v.<a class="code" href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f">SetString</a>(defaultValue, allocator);</div>
-<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div>
-<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div>
-<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="comment"> //! Query a value in a subtree with default std::basic_string.</span></div>
-<div class="line"><a name="l00548"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#ab914090864d0ded21a376867c33ad865"> 548</a></span>&#160;<span class="comment"></span> ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#ab914090864d0ded21a376867c33ad865">GetWithDefault</a>(ValueType&amp; root, <span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; defaultValue, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordtype">bool</span> alreadyExist;</div>
-<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">Value</a>&amp; v = Create(root, allocator, &amp;alreadyExist);</div>
-<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> alreadyExist ? v : v.<a class="code" href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f">SetString</a>(defaultValue, allocator);</div>
-<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; }</div>
-<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;<span class="comment"> //! Query a value in a subtree with default primitive value.</span></div>
-<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;<span class="comment"> \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool</span></div>
-<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (ValueType&amp;))</div>
-<div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a3bb1e63a2c0aa61a9e95d6d65c4c3ffd"> 561</a></span>&#160; GetWithDefault(ValueType&amp; root, T defaultValue, typename ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">return</span> GetWithDefault(root, ValueType(defaultValue).Move(), allocator);</div>
-<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; }</div>
-<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;<span class="comment"> //! Query a value in a document with default value.</span></div>
-<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div>
-<div class="line"><a name="l00567"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#af89e3e8f87bb833d4eb4bb2fd4074431"> 567</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#af89e3e8f87bb833d4eb4bb2fd4074431">GetWithDefault</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, <span class="keyword">const</span> ValueType&amp; defaultValue)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span> GetWithDefault(document, defaultValue, document.<a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>());</div>
-<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div>
-<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="comment"> //! Query a value in a document with default null-terminated string.</span></div>
-<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div>
-<div class="line"><a name="l00573"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#ad96e263ba29209259fd4abe63d7f4458"> 573</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#ad96e263ba29209259fd4abe63d7f4458">GetWithDefault</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* defaultValue)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">return</span> GetWithDefault(document, defaultValue, document.<a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>());</div>
-<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; }</div>
-<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; </div>
-<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;<span class="comment"> //! Query a value in a document with default std::basic_string.</span></div>
-<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div>
-<div class="line"><a name="l00580"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a5e9e740bec7f5a1703088171e0b2557b"> 580</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a5e9e740bec7f5a1703088171e0b2557b">GetWithDefault</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, <span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; defaultValue)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">return</span> GetWithDefault(document, defaultValue, document.<a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>());</div>
-<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; }</div>
-<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;<span class="comment"> //! Query a value in a document with default primitive value.</span></div>
-<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="comment"> \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool</span></div>
-<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> stackAllocator&gt;</div>
-<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (ValueType&amp;))</div>
-<div class="line"><a name="l00591"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a573a35dd96aacffe209e1442720f447a"> 591</a></span>&#160; GetWithDefault(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt;<a class="code" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator&gt;&amp; document, T defaultValue)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">return</span> GetWithDefault(document, defaultValue, document.GetAllocator());</div>
-<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div>
-<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;<span class="comment"> //!@name Set a value</span></div>
-<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="comment"> //! Set a value in a subtree, with move semantics.</span></div>
-<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="comment"> It creates all parents if they are not exist or types are different to the tokens.</span></div>
-<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="comment"> So this function always succeeds but potentially remove existing values.</span></div>
-<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<span class="comment"> \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.</span></div>
-<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;<span class="comment"> \param value Value to be set.</span></div>
-<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;<span class="comment"> \param allocator Allocator for creating the values if the specified value or its parents are not exist.</span></div>
-<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;<span class="comment"> \see Create()</span></div>
-<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#aecea7b5c4786f509e35c3917efa57fce"> 610</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#aecea7b5c4786f509e35c3917efa57fce">Set</a>(ValueType&amp; root, ValueType&amp; value, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">return</span> Create(root, allocator) = value;</div>
-<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; }</div>
-<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="comment"> //! Set a value in a subtree, with copy semantics.</span></div>
-<div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#ac19f479c656ddd6a8bd9888a9fb27f96"> 615</a></span>&#160;<span class="comment"></span> ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#ac19f479c656ddd6a8bd9888a9fb27f96">Set</a>(ValueType&amp; root, <span class="keyword">const</span> ValueType&amp; value, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">return</span> Create(root, allocator).CopyFrom(value, allocator);</div>
-<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; }</div>
-<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="comment"> //! Set a null-terminated string in a subtree.</span></div>
-<div class="line"><a name="l00620"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a98454081fb9557b3d2285c4e89bd34f6"> 620</a></span>&#160;<span class="comment"></span> ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a98454081fb9557b3d2285c4e89bd34f6">Set</a>(ValueType&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* value, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">return</span> Create(root, allocator) = ValueType(value, allocator).Move();</div>
-<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; }</div>
-<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div>
-<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;<span class="comment"> //! Set a std::basic_string in a subtree.</span></div>
-<div class="line"><a name="l00626"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a151f17dc1c655b9dc0a9a3cf06e6bdcb"> 626</a></span>&#160;<span class="comment"></span> ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a151f17dc1c655b9dc0a9a3cf06e6bdcb">Set</a>(ValueType&amp; root, <span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; value, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">return</span> Create(root, allocator) = ValueType(value, allocator).Move();</div>
-<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; }</div>
-<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;<span class="comment"> //! Set a primitive value in a subtree.</span></div>
-<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;<span class="comment"> \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool</span></div>
-<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (ValueType&amp;))</div>
-<div class="line"><a name="l00637"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#ae9037fa1a22498e2a8c0f96f866f6288"> 637</a></span>&#160; Set(ValueType&amp; root, T value, typename ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">return</span> Create(root, allocator) = ValueType(value).Move();</div>
-<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; }</div>
-<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;<span class="comment"> //! Set a value in a document, with move semantics.</span></div>
-<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div>
-<div class="line"><a name="l00643"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#add58edd4f813645f8ffead6956967f96"> 643</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#add58edd4f813645f8ffead6956967f96">Set</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, ValueType&amp; value)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">return</span> Create(document) = value;</div>
-<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; }</div>
-<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;<span class="comment"> //! Set a value in a document, with copy semantics.</span></div>
-<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div>
-<div class="line"><a name="l00649"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a83ff802b8fcacd96e60ba1c2627a19f0"> 649</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a83ff802b8fcacd96e60ba1c2627a19f0">Set</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, <span class="keyword">const</span> ValueType&amp; value)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">return</span> Create(document).CopyFrom(value, document.<a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>());</div>
-<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; }</div>
-<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="comment"> //! Set a null-terminated string in a document.</span></div>
-<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div>
-<div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a2ee50bcbfa76119094eef0284eeddfbe"> 655</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a2ee50bcbfa76119094eef0284eeddfbe">Set</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* value)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">return</span> Create(document) = ValueType(value, document.<a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>()).Move();</div>
-<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div>
-<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;</div>
-<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;<span class="comment"> //! Sets a std::basic_string in a document.</span></div>
-<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div>
-<div class="line"><a name="l00662"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a9bd1c4076e732ffc1b4527ac5659264e"> 662</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a9bd1c4076e732ffc1b4527ac5659264e">Set</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, <span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; value)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">return</span> Create(document) = ValueType(value, document.<a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>()).Move();</div>
-<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div>
-<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;<span class="comment"> //! Set a primitive value in a document.</span></div>
-<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="comment"> \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool</span></div>
-<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> stackAllocator&gt;</div>
-<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (ValueType&amp;))</div>
-<div class="line"><a name="l00673"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#af547130d348ca1805d882955a377bbe4"> 673</a></span>&#160; Set(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt;<a class="code" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator&gt;&amp; document, T value)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">return</span> Create(document) = value;</div>
-<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; }</div>
-<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="comment"> //!@name Swap a value</span></div>
-<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div>
-<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;<span class="comment"> //! Swap a value with a value in a subtree.</span></div>
-<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;<span class="comment"> It creates all parents if they are not exist or types are different to the tokens.</span></div>
-<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;<span class="comment"> So this function always succeeds but potentially remove existing values.</span></div>
-<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="comment"> \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.</span></div>
-<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="comment"> \param value Value to be swapped.</span></div>
-<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="comment"> \param allocator Allocator for creating the values if the specified value or its parents are not exist.</span></div>
-<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<span class="comment"> \see Create()</span></div>
-<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00692"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#aaaa5b0ecdfa6af45e7dabc1987c87cac"> 692</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#aaaa5b0ecdfa6af45e7dabc1987c87cac">Swap</a>(ValueType&amp; root, ValueType&amp; value, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">return</span> Create(root, allocator).Swap(value);</div>
-<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; }</div>
-<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;<span class="comment"> //! Swap a value with a value in a document.</span></div>
-<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div>
-<div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#ad9f28da15453d91c3669618a6f48bfcc"> 698</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#ad9f28da15453d91c3669618a6f48bfcc">Swap</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, ValueType&amp; value)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">return</span> Create(document).Swap(value);</div>
-<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; }</div>
-<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;<span class="comment"> //! Erase a value in a subtree.</span></div>
-<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;<span class="comment"> \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.</span></div>
-<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;<span class="comment"> \return Whether the resolved value is found and erased.</span></div>
-<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;<span class="comment"> \note Erasing with an empty pointer \c Pointer(&quot;&quot;), i.e. the root, always fail and return false.</span></div>
-<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00711"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#aec10492caf6e853935d9a360bbe73713"> 711</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#aec10492caf6e853935d9a360bbe73713">Erase</a>(ValueType&amp; root)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsValid());</div>
-<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">if</span> (tokenCount_ == 0) <span class="comment">// Cannot erase the root</span></div>
-<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div>
-<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; ValueType* v = &amp;root;</div>
-<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a>* last = tokens_ + (tokenCount_ - 1);</div>
-<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> *t = tokens_; t != last; ++t) {</div>
-<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">switch</span> (v-&gt;GetType()) {</div>
-<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>:</div>
-<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; {</div>
-<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keyword">typename</span> ValueType::MemberIterator m = v-&gt;FindMember(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;Ch&gt;</a>(t-&gt;name, t-&gt;length));</div>
-<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">if</span> (m == v-&gt;MemberEnd())</div>
-<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; v = &amp;m-&gt;value;</div>
-<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; }</div>
-<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>:</div>
-<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">if</span> (t-&gt;index == kPointerInvalidIndex || t-&gt;index &gt;= v-&gt;Size())</div>
-<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; v = &amp;((*v)[t-&gt;index]);</div>
-<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div>
-<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; }</div>
-<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;</div>
-<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">switch</span> (v-&gt;GetType()) {</div>
-<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>:</div>
-<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">return</span> v-&gt;EraseMember(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;Ch&gt;</a>(last-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8">name</a>, last-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a>));</div>
-<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>:</div>
-<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">if</span> (last-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">index</a> == kPointerInvalidIndex || last-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">index</a> &gt;= v-&gt;Size())</div>
-<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; v-&gt;Erase(v-&gt;Begin() + last-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">index</a>);</div>
-<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; }</div>
-<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; }</div>
-<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;</div>
-<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;<span class="keyword">private</span>:<span class="comment"></span></div>
-<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;<span class="comment"> //! Clone the content from rhs to this.</span></div>
-<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;<span class="comment"> \param rhs Source pointer.</span></div>
-<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;<span class="comment"> \param extraToken Extra tokens to be allocated.</span></div>
-<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;<span class="comment"> \param extraNameBufferSize Extra name buffer size (in number of Ch) to be allocated.</span></div>
-<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;<span class="comment"> \return Start of non-occupied name buffer, for storing extra names.</span></div>
-<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; Ch* CopyFromRaw(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&amp; rhs, <span class="keywordtype">size_t</span> extraToken = 0, <span class="keywordtype">size_t</span> extraNameBufferSize = 0) {</div>
-<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">if</span> (!allocator_) <span class="comment">// allocator is independently owned.</span></div>
-<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; ownAllocator_ = allocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(<a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>)();</div>
-<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;</div>
-<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordtype">size_t</span> nameBufferSize = rhs.tokenCount_; <span class="comment">// null terminators for tokens</span></div>
-<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">for</span> (Token *t = rhs.tokens_; t != rhs.tokens_ + rhs.tokenCount_; ++t)</div>
-<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; nameBufferSize += t-&gt;length;</div>
-<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;</div>
-<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; tokenCount_ = rhs.tokenCount_ + extraToken;</div>
-<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; tokens_ = <span class="keyword">static_cast&lt;</span>Token *<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(tokenCount_ * <span class="keyword">sizeof</span>(Token) + (nameBufferSize + extraNameBufferSize) * <span class="keyword">sizeof</span>(Ch)));</div>
-<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; nameBuffer_ = <span class="keyword">reinterpret_cast&lt;</span>Ch *<span class="keyword">&gt;</span>(tokens_ + tokenCount_);</div>
-<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="keywordflow">if</span> (rhs.tokenCount_ &gt; 0) {</div>
-<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; std::memcpy(tokens_, rhs.tokens_, rhs.tokenCount_ * <span class="keyword">sizeof</span>(Token));</div>
-<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; }</div>
-<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">if</span> (nameBufferSize &gt; 0) {</div>
-<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; std::memcpy(nameBuffer_, rhs.nameBuffer_, nameBufferSize * <span class="keyword">sizeof</span>(Ch));</div>
-<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; }</div>
-<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;</div>
-<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="comment">// Adjust pointers to name buffer</span></div>
-<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; std::ptrdiff_t diff = nameBuffer_ - rhs.nameBuffer_;</div>
-<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">for</span> (Token *t = tokens_; t != tokens_ + rhs.tokenCount_; ++t)</div>
-<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; t-&gt;name += diff;</div>
-<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160;</div>
-<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">return</span> nameBuffer_ + nameBufferSize;</div>
-<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; }</div>
-<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;<span class="comment"> //! Check whether a character should be percent-encoded.</span></div>
-<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;<span class="comment"> According to RFC 3986 2.3 Unreserved Characters.</span></div>
-<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;<span class="comment"> \param c The character (code unit) to be tested.</span></div>
-<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordtype">bool</span> NeedPercentEncode(Ch c)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">return</span> !((c &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; c &lt;= &#39;9&#39;) || (c &gt;= <span class="charliteral">&#39;A&#39;</span> &amp;&amp; c &lt;=&#39;Z&#39;) || (c &gt;= <span class="charliteral">&#39;a&#39;</span> &amp;&amp; c &lt;= <span class="charliteral">&#39;z&#39;</span>) || c == <span class="charliteral">&#39;-&#39;</span> || c == <span class="charliteral">&#39;.&#39;</span> || c == <span class="charliteral">&#39;_&#39;</span> || c ==<span class="charliteral">&#39;~&#39;</span>);</div>
-<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; }</div>
-<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;<span class="comment"> //! Parse a JSON String or its URI fragment representation into tokens.</span></div>
-<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;<span class="comment"></span><span class="preprocessor">#ifndef __clang__ // -Wdocumentation</span></div>
-<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;<span class="comment"> /*!</span></div>
-<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;<span class="comment"> \param source Either a JSON Pointer string, or its URI fragment representation. Not need to be null terminated.</span></div>
-<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;<span class="comment"> \param length Length of the source string.</span></div>
-<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;<span class="comment"> \note Source cannot be JSON String Representation of JSON Pointer, e.g. In &quot;/\u0000&quot;, \u0000 will not be unescaped.</span></div>
-<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordtype">void</span> Parse(<span class="keyword">const</span> Ch* source, <span class="keywordtype">size_t</span> length) {</div>
-<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(source != NULL);</div>
-<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(nameBuffer_ == 0);</div>
-<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(tokens_ == 0);</div>
-<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;</div>
-<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="comment">// Create own allocator if user did not supply.</span></div>
-<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">if</span> (!allocator_)</div>
-<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; ownAllocator_ = allocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(Allocator)();</div>
-<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;</div>
-<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="comment">// Count number of &#39;/&#39; as tokenCount</span></div>
-<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; tokenCount_ = 0;</div>
-<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> Ch* s = source; s != source + length; s++) </div>
-<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordflow">if</span> (*s == <span class="charliteral">&#39;/&#39;</span>)</div>
-<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; tokenCount_++;</div>
-<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;</div>
-<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; Token* token = tokens_ = <span class="keyword">static_cast&lt;</span>Token *<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(tokenCount_ * <span class="keyword">sizeof</span>(Token) + length * <span class="keyword">sizeof</span>(Ch)));</div>
-<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; Ch* name = nameBuffer_ = <span class="keyword">reinterpret_cast&lt;</span>Ch *<span class="keyword">&gt;</span>(tokens_ + tokenCount_);</div>
-<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordtype">size_t</span> i = 0;</div>
-<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;</div>
-<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="comment">// Detect if it is a URI fragment</span></div>
-<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordtype">bool</span> uriFragment = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">if</span> (source[i] == <span class="charliteral">&#39;#&#39;</span>) {</div>
-<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; uriFragment = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; i++;</div>
-<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div>
-<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;</div>
-<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">if</span> (i != length &amp;&amp; source[i] != <span class="charliteral">&#39;/&#39;</span>) {</div>
-<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; parseErrorCode_ = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba2f2f8b238e201b7d540e8914bbfd2bed">kPointerParseErrorTokenMustBeginWithSolidus</a>;</div>
-<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">goto</span> error;</div>
-<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; }</div>
-<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160;</div>
-<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">while</span> (i &lt; length) {</div>
-<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(source[i] == <span class="charliteral">&#39;/&#39;</span>);</div>
-<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; i++; <span class="comment">// consumes &#39;/&#39;</span></div>
-<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160;</div>
-<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; token-&gt;name = name;</div>
-<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordtype">bool</span> isNumber = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;</div>
-<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">while</span> (i &lt; length &amp;&amp; source[i] != <span class="charliteral">&#39;/&#39;</span>) {</div>
-<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; Ch c = source[i];</div>
-<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">if</span> (uriFragment) {</div>
-<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="comment">// Decoding percent-encoding for URI fragment</span></div>
-<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;%&#39;</span>) {</div>
-<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; PercentDecodeStream is(&amp;source[i], source + length);</div>
-<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; GenericInsituStringStream&lt;EncodingType&gt; os(name);</div>
-<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; Ch* begin = os.PutBegin();</div>
-<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">if</span> (!Transcoder&lt;UTF8&lt;&gt;, EncodingType&gt;().Validate(is, os) || !is.IsValid()) {</div>
-<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; parseErrorCode_ = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba29831a02b8ee23a05d552b47f4d64d28">kPointerParseErrorInvalidPercentEncoding</a>;</div>
-<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">goto</span> error;</div>
-<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; }</div>
-<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordtype">size_t</span> len = os.PutEnd(begin);</div>
-<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; i += is.Tell() - 1;</div>
-<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">if</span> (len == 1)</div>
-<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; c = *name;</div>
-<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; name += len;</div>
-<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; isNumber = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; i++;</div>
-<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; }</div>
-<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; }</div>
-<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (NeedPercentEncode(c)) {</div>
-<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; parseErrorCode_ = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7bae244a98f53279fda5a750f847b81c54f">kPointerParseErrorCharacterMustPercentEncode</a>;</div>
-<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">goto</span> error;</div>
-<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; }</div>
-<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; }</div>
-<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;</div>
-<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; i++;</div>
-<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; </div>
-<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="comment">// Escaping &quot;~0&quot; -&gt; &#39;~&#39;, &quot;~1&quot; -&gt; &#39;/&#39;</span></div>
-<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;~&#39;</span>) {</div>
-<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">if</span> (i &lt; length) {</div>
-<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; c = source[i];</div>
-<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;0&#39;</span>) c = <span class="charliteral">&#39;~&#39;</span>;</div>
-<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;1&#39;</span>) c = <span class="charliteral">&#39;/&#39;</span>;</div>
-<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; parseErrorCode_ = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba907c9fe4e541b257513e3a18635379f7">kPointerParseErrorInvalidEscape</a>;</div>
-<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">goto</span> error;</div>
-<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; }</div>
-<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; i++;</div>
-<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; }</div>
-<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; parseErrorCode_ = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba907c9fe4e541b257513e3a18635379f7">kPointerParseErrorInvalidEscape</a>;</div>
-<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">goto</span> error;</div>
-<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; }</div>
-<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; }</div>
-<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;</div>
-<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="comment">// First check for index: all of characters are digit</span></div>
-<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">if</span> (c &lt; &#39;0&#39; || c &gt; <span class="charliteral">&#39;9&#39;</span>)</div>
-<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; isNumber = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;</div>
-<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; *name++ = c;</div>
-<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; }</div>
-<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; token-&gt;length = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(name - token-&gt;name);</div>
-<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">if</span> (token-&gt;length == 0)</div>
-<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; isNumber = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; *name++ = <span class="charliteral">&#39;\0&#39;</span>; <span class="comment">// Null terminator</span></div>
-<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;</div>
-<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="comment">// Second check for index: more than one digit cannot have leading zero</span></div>
-<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">if</span> (isNumber &amp;&amp; token-&gt;length &gt; 1 &amp;&amp; token-&gt;name[0] == <span class="charliteral">&#39;0&#39;</span>)</div>
-<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; isNumber = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;</div>
-<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="comment">// String to SizeType conversion</span></div>
-<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> n = 0;</div>
-<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordflow">if</span> (isNumber) {</div>
-<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; token-&gt;length; j++) {</div>
-<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> m = n * 10 + <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(token-&gt;name[j] - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">if</span> (m &lt; n) { <span class="comment">// overflow detection</span></div>
-<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; isNumber = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; }</div>
-<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; n = m;</div>
-<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; }</div>
-<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; }</div>
-<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;</div>
-<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; token-&gt;index = isNumber ? n : kPointerInvalidIndex;</div>
-<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; token++;</div>
-<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; }</div>
-<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160;</div>
-<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(name &lt;= nameBuffer_ + length); <span class="comment">// Should not overflow buffer</span></div>
-<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; parseErrorCode_ = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>;</div>
-<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;</div>
-<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; error:</div>
-<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; Allocator::Free(tokens_);</div>
-<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; nameBuffer_ = 0;</div>
-<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; tokens_ = 0;</div>
-<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; tokenCount_ = 0;</div>
-<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; parseErrorOffset_ = i;</div>
-<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; }</div>
-<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160;<span class="comment"> //! Stringify to string or URI fragment representation.</span></div>
-<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;<span class="comment"> \tparam uriFragment True for stringifying to URI fragment representation. False for string representation.</span></div>
-<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;<span class="comment"> \tparam OutputStream type of output stream.</span></div>
-<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;<span class="comment"> \param os The output stream.</span></div>
-<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">bool</span> uriFragment, <span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="keywordtype">bool</span> Stringify(OutputStream&amp; os)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsValid());</div>
-<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;</div>
-<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keywordflow">if</span> (uriFragment)</div>
-<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; os.Put(<span class="charliteral">&#39;#&#39;</span>);</div>
-<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;</div>
-<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="keywordflow">for</span> (Token *t = tokens_; t != tokens_ + tokenCount_; ++t) {</div>
-<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; os.Put(<span class="charliteral">&#39;/&#39;</span>);</div>
-<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; t-&gt;length; j++) {</div>
-<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; Ch c = t-&gt;name[j];</div>
-<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;~&#39;</span>) {</div>
-<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; os.Put(<span class="charliteral">&#39;~&#39;</span>);</div>
-<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; os.Put(<span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; }</div>
-<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;/&#39;</span>) {</div>
-<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; os.Put(<span class="charliteral">&#39;~&#39;</span>);</div>
-<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; os.Put(<span class="charliteral">&#39;1&#39;</span>);</div>
-<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; }</div>
-<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uriFragment &amp;&amp; NeedPercentEncode(c)) { </div>
-<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="comment">// Transcode to UTF8 sequence</span></div>
-<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; GenericStringStream&lt;typename ValueType::EncodingType&gt; source(&amp;t-&gt;name[j]);</div>
-<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; PercentEncodeStream&lt;OutputStream&gt; target(os);</div>
-<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keywordflow">if</span> (!Transcoder&lt;EncodingType, UTF8&lt;&gt; &gt;().Validate(source, target))</div>
-<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; j += source.Tell() - 1;</div>
-<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; }</div>
-<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; os.Put(c);</div>
-<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; }</div>
-<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; }</div>
-<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; }</div>
-<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;<span class="comment"> //! A helper stream for decoding a percent-encoded sequence into code unit.</span></div>
-<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160;<span class="comment"> This stream decodes %XY triplet into code unit (0-255).</span></div>
-<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;<span class="comment"> If it encounters invalid characters, it sets output code unit as 0 and </span></div>
-<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;<span class="comment"> mark invalid, and to be checked by IsValid().</span></div>
-<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keyword">class </span>PercentDecodeStream {</div>
-<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::Ch Ch;</div>
-<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;<span class="comment"> //! Constructor</span></div>
-<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;<span class="comment"> \param source Start of the stream</span></div>
-<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;<span class="comment"> \param end Past-the-end of the stream.</span></div>
-<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; PercentDecodeStream(<span class="keyword">const</span> Ch* source, <span class="keyword">const</span> Ch* end) : src_(source), head_(source), end_(end), valid_(true) {}</div>
-<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;</div>
-<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; Ch Take() {</div>
-<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordflow">if</span> (*src_ != <span class="charliteral">&#39;%&#39;</span> || src_ + 3 &gt; end_) { <span class="comment">// %XY triplet</span></div>
-<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; valid_ = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; }</div>
-<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; src_++;</div>
-<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; Ch c = 0;</div>
-<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; 2; j++) {</div>
-<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; c = <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c &lt;&lt; 4);</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; Ch h = *src_;</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="keywordflow">if</span> (h &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; h &lt;= <span class="charliteral">&#39;9&#39;</span>) c = <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c + h - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (h &gt;= <span class="charliteral">&#39;A&#39;</span> &amp;&amp; h &lt;= <span class="charliteral">&#39;F&#39;</span>) c = <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c + h - <span class="charliteral">&#39;A&#39;</span> + 10);</div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (h &gt;= <span class="charliteral">&#39;a&#39;</span> &amp;&amp; h &lt;= <span class="charliteral">&#39;f&#39;</span>) c = <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c + h - <span class="charliteral">&#39;a&#39;</span> + 10);</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; valid_ = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; }</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; src_++;</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; }</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">return</span> c;</div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; }</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(src_ - head_); }</div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keywordtype">bool</span> IsValid()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> valid_; }</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keyword">const</span> Ch* src_; <span class="comment">//!&lt; Current read position.</span></div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;<span class="comment"></span> <span class="keyword">const</span> Ch* head_; <span class="comment">//!&lt; Original head of the string.</span></div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;<span class="comment"></span> <span class="keyword">const</span> Ch* end_; <span class="comment">//!&lt; Past-the-end position.</span></div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> valid_; <span class="comment">//!&lt; Whether the parsing is valid.</span></div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;<span class="comment"></span> };</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;<span class="comment"> //! A helper stream to encode character (UTF-8 code unit) into percent-encoded sequence.</span></div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keyword">class </span>PercentEncodeStream {</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; PercentEncodeStream(OutputStream&amp; os) : os_(os) {}</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <span class="keywordtype">void</span> Put(<span class="keywordtype">char</span> c) { <span class="comment">// UTF-8 must be byte</span></div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> u = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(c);</div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> hexDigits[16] = { <span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;3&#39;</span>, <span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;6&#39;</span>, <span class="charliteral">&#39;7&#39;</span>, <span class="charliteral">&#39;8&#39;</span>, <span class="charliteral">&#39;9&#39;</span>, <span class="charliteral">&#39;A&#39;</span>, <span class="charliteral">&#39;B&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39;D&#39;</span>, <span class="charliteral">&#39;E&#39;</span>, <span class="charliteral">&#39;F&#39;</span> };</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; os_.Put(<span class="charliteral">&#39;%&#39;</span>);</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; os_.Put(static_cast&lt;typename OutputStream::Ch&gt;(hexDigits[u &gt;&gt; 4]));</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; os_.Put(static_cast&lt;typename OutputStream::Ch&gt;(hexDigits[u &amp; 15]));</div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; }</div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; OutputStream&amp; os_;</div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; };</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;</div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; Allocator* allocator_; <span class="comment">//!&lt; The current allocator. It is either user-supplied or equal to ownAllocator_.</span></div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;<span class="comment"></span> Allocator* ownAllocator_; <span class="comment">//!&lt; Allocator owned by this Pointer.</span></div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;<span class="comment"></span> Ch* nameBuffer_; <span class="comment">//!&lt; A buffer containing all names in tokens.</span></div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;<span class="comment"></span> Token* tokens_; <span class="comment">//!&lt; A list of tokens.</span></div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> tokenCount_; <span class="comment">//!&lt; Number of tokens in tokens_.</span></div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> parseErrorOffset_; <span class="comment">//!&lt; Offset in code unit when parsing fail.</span></div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b">PointerParseErrorCode</a> parseErrorCode_; <span class="comment">//!&lt; Parsing error code.</span></div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;<span class="comment"></span>};</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;<span class="comment">//! GenericPointer for Value (UTF-8, default allocator).</span></div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> GenericPointer&lt;Value&gt; <a class="code" href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">Pointer</a>;</div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;<span class="comment">//!@name Helper functions for GenericPointer</span></div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;<span class="comment"></span><span class="comment">//@{</span></div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; CreateValueByPointer(T&amp; root, <span class="keyword">const</span> GenericPointer&lt;typename T::ValueType&gt;&amp; pointer, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keywordflow">return</span> pointer.Create(root, a);</div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;}</div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;</div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; CreateValueByPointer(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename T::ValueType&gt;(source, N - 1).Create(root, a);</div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;}</div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;</div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;<span class="comment">// No allocator parameter</span></div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;</div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; CreateValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> GenericPointer&lt;typename DocumentType::ValueType&gt;&amp; pointer) {</div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="keywordflow">return</span> pointer.Create(document);</div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;}</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; CreateValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N]) {</div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename DocumentType::ValueType&gt;(source, N - 1).Create(document);</div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;}</div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;<span class="keyword">typename</span> T::ValueType* GetValueByPointer(T&amp; root, <span class="keyword">const</span> GenericPointer&lt;typename T::ValueType&gt;&amp; pointer, <span class="keywordtype">size_t</span>* unresolvedTokenIndex = 0) {</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="keywordflow">return</span> pointer.Get(root, unresolvedTokenIndex);</div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;}</div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;</div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;<span class="keyword">const</span> <span class="keyword">typename</span> T::ValueType* GetValueByPointer(<span class="keyword">const</span> T&amp; root, <span class="keyword">const</span> GenericPointer&lt;typename T::ValueType&gt;&amp; pointer, <span class="keywordtype">size_t</span>* unresolvedTokenIndex = 0) {</div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keywordflow">return</span> pointer.Get(root, unresolvedTokenIndex);</div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;}</div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;</div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;<span class="keyword">typename</span> T::ValueType* GetValueByPointer(T&amp; root, <span class="keyword">const</span> CharType (&amp;source)[N], <span class="keywordtype">size_t</span>* unresolvedTokenIndex = 0) {</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename T::ValueType&gt;(source, N - 1).Get(root, unresolvedTokenIndex);</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;}</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;</div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;<span class="keyword">const</span> <span class="keyword">typename</span> T::ValueType* GetValueByPointer(<span class="keyword">const</span> T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keywordtype">size_t</span>* unresolvedTokenIndex = 0) {</div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename T::ValueType&gt;(source, N - 1).Get(root, unresolvedTokenIndex);</div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;}</div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; GetValueByPointerWithDefault(T&amp; root, <span class="keyword">const</span> GenericPointer&lt;typename T::ValueType&gt;&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> T::ValueType&amp; defaultValue, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="keywordflow">return</span> pointer.GetWithDefault(root, defaultValue, a);</div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;}</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;</div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; GetValueByPointerWithDefault(T&amp; root, <span class="keyword">const</span> GenericPointer&lt;typename T::ValueType&gt;&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> T::Ch* defaultValue, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="keywordflow">return</span> pointer.GetWithDefault(root, defaultValue, a);</div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;}</div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;</div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; GetValueByPointerWithDefault(T&amp; root, <span class="keyword">const</span> GenericPointer&lt;typename T::ValueType&gt;&amp; pointer, <span class="keyword">const</span> std::basic_string&lt;typename T::Ch&gt;&amp; defaultValue, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keywordflow">return</span> pointer.GetWithDefault(root, defaultValue, a);</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;}</div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;</div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> T2&gt;</div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> T::ValueType&amp;))</div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;GetValueByPointerWithDefault(T&amp; root, const GenericPointer&lt;typename T::ValueType&gt;&amp; pointer, T2 defaultValue, typename T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keywordflow">return</span> pointer.GetWithDefault(root, defaultValue, a);</div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;}</div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; GetValueByPointerWithDefault(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> T::ValueType&amp; defaultValue, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename T::ValueType&gt;(source, N - 1).GetWithDefault(root, defaultValue, a);</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;}</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; GetValueByPointerWithDefault(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> T::Ch* defaultValue, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename T::ValueType&gt;(source, N - 1).GetWithDefault(root, defaultValue, a);</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;}</div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; GetValueByPointerWithDefault(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> std::basic_string&lt;typename T::Ch&gt;&amp; defaultValue, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename T::ValueType&gt;(source, N - 1).GetWithDefault(root, defaultValue, a);</div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;}</div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;</div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N, <span class="keyword">typename</span> T2&gt;</div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> T::ValueType&amp;))</div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;GetValueByPointerWithDefault(T&amp; root, const CharType(&amp;source)[N], T2 defaultValue, typename T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename T::ValueType&gt;(source, N - 1).GetWithDefault(root, defaultValue, a);</div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;}</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;<span class="comment">// No allocator parameter</span></div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;</div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; GetValueByPointerWithDefault(DocumentType&amp; document, <span class="keyword">const</span> GenericPointer&lt;typename DocumentType::ValueType&gt;&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::ValueType&amp; defaultValue) {</div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <span class="keywordflow">return</span> pointer.GetWithDefault(document, defaultValue);</div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;}</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;</div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; GetValueByPointerWithDefault(DocumentType&amp; document, <span class="keyword">const</span> GenericPointer&lt;typename DocumentType::ValueType&gt;&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::Ch* defaultValue) {</div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">return</span> pointer.GetWithDefault(document, defaultValue);</div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;}</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;</div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; GetValueByPointerWithDefault(DocumentType&amp; document, <span class="keyword">const</span> GenericPointer&lt;typename DocumentType::ValueType&gt;&amp; pointer, <span class="keyword">const</span> std::basic_string&lt;typename DocumentType::Ch&gt;&amp; defaultValue) {</div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="keywordflow">return</span> pointer.GetWithDefault(document, defaultValue);</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;}</div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;</div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> T2&gt;</div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> DocumentType::ValueType&amp;))</div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;GetValueByPointerWithDefault(DocumentType&amp; document, const GenericPointer&lt;typename DocumentType::ValueType&gt;&amp; pointer, T2 defaultValue) {</div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">return</span> pointer.GetWithDefault(document, defaultValue);</div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;}</div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;</div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; GetValueByPointerWithDefault(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::ValueType&amp; defaultValue) {</div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename DocumentType::ValueType&gt;(source, N - 1).GetWithDefault(document, defaultValue);</div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;}</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;</div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; GetValueByPointerWithDefault(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::Ch* defaultValue) {</div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename DocumentType::ValueType&gt;(source, N - 1).GetWithDefault(document, defaultValue);</div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;}</div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;</div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; GetValueByPointerWithDefault(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> std::basic_string&lt;typename DocumentType::Ch&gt;&amp; defaultValue) {</div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename DocumentType::ValueType&gt;(source, N - 1).GetWithDefault(document, defaultValue);</div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;}</div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;</div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N, <span class="keyword">typename</span> T2&gt;</div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> DocumentType::ValueType&amp;))</div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;GetValueByPointerWithDefault(DocumentType&amp; document, const CharType(&amp;source)[N], T2 defaultValue) {</div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename DocumentType::ValueType&gt;(source, N - 1).GetWithDefault(document, defaultValue);</div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;}</div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> GenericPointer&lt;typename T::ValueType&gt;&amp; pointer, <span class="keyword">typename</span> T::ValueType&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <span class="keywordflow">return</span> pointer.Set(root, value, a);</div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;}</div>
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;</div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> GenericPointer&lt;typename T::ValueType&gt;&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> T::ValueType&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keywordflow">return</span> pointer.Set(root, value, a);</div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;}</div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;</div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> GenericPointer&lt;typename T::ValueType&gt;&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> T::Ch* value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <span class="keywordflow">return</span> pointer.Set(root, value, a);</div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;}</div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> GenericPointer&lt;typename T::ValueType&gt;&amp; pointer, <span class="keyword">const</span> std::basic_string&lt;typename T::Ch&gt;&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <span class="keywordflow">return</span> pointer.Set(root, value, a);</div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;}</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;</div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> T2&gt;</div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> T::ValueType&amp;))</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;SetValueByPointer(T&amp; root, const GenericPointer&lt;typename T::ValueType&gt;&amp; pointer, T2 value, typename T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <span class="keywordflow">return</span> pointer.Set(root, value, a);</div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;}</div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;</div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">typename</span> T::ValueType&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename T::ValueType&gt;(source, N - 1).Set(root, value, a);</div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;}</div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;</div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> T::ValueType&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename T::ValueType&gt;(source, N - 1).Set(root, value, a);</div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;}</div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;</div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> T::Ch* value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename T::ValueType&gt;(source, N - 1).Set(root, value, a);</div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;}</div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;</div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> std::basic_string&lt;typename T::Ch&gt;&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename T::ValueType&gt;(source, N - 1).Set(root, value, a);</div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;}</div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;</div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N, <span class="keyword">typename</span> T2&gt;</div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> T::ValueType&amp;))</div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;SetValueByPointer(T&amp; root, const CharType(&amp;source)[N], T2 value, typename T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename T::ValueType&gt;(source, N - 1).Set(root, value, a);</div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;}</div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;</div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;<span class="comment">// No allocator parameter</span></div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;</div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> GenericPointer&lt;typename DocumentType::ValueType&gt;&amp; pointer, <span class="keyword">typename</span> DocumentType::ValueType&amp; value) {</div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; <span class="keywordflow">return</span> pointer.Set(document, value);</div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;}</div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;</div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> GenericPointer&lt;typename DocumentType::ValueType&gt;&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::ValueType&amp; value) {</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; <span class="keywordflow">return</span> pointer.Set(document, value);</div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;}</div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;</div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> GenericPointer&lt;typename DocumentType::ValueType&gt;&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::Ch* value) {</div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; <span class="keywordflow">return</span> pointer.Set(document, value);</div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;}</div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;</div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> GenericPointer&lt;typename DocumentType::ValueType&gt;&amp; pointer, <span class="keyword">const</span> std::basic_string&lt;typename DocumentType::Ch&gt;&amp; value) {</div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keywordflow">return</span> pointer.Set(document, value);</div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;}</div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;</div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> T2&gt;</div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> DocumentType::ValueType&amp;))</div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;SetValueByPointer(DocumentType&amp; document, const GenericPointer&lt;typename DocumentType::ValueType&gt;&amp; pointer, T2 value) {</div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <span class="keywordflow">return</span> pointer.Set(document, value);</div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;}</div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;</div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">typename</span> DocumentType::ValueType&amp; value) {</div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename DocumentType::ValueType&gt;(source, N - 1).Set(document, value);</div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;}</div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;</div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::ValueType&amp; value) {</div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename DocumentType::ValueType&gt;(source, N - 1).Set(document, value);</div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;}</div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;</div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::Ch* value) {</div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename DocumentType::ValueType&gt;(source, N - 1).Set(document, value);</div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;}</div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;</div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> std::basic_string&lt;typename DocumentType::Ch&gt;&amp; value) {</div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename DocumentType::ValueType&gt;(source, N - 1).Set(document, value);</div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;}</div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;</div>
-<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N, <span class="keyword">typename</span> T2&gt;</div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> DocumentType::ValueType&amp;))</div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;SetValueByPointer(DocumentType&amp; document, const CharType(&amp;source)[N], T2 value) {</div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename DocumentType::ValueType&gt;(source, N - 1).Set(document, value);</div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;}</div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SwapValueByPointer(T&amp; root, <span class="keyword">const</span> GenericPointer&lt;typename T::ValueType&gt;&amp; pointer, <span class="keyword">typename</span> T::ValueType&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; <span class="keywordflow">return</span> pointer.Swap(root, value, a);</div>
-<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;}</div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;</div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SwapValueByPointer(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">typename</span> T::ValueType&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div>
-<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename T::ValueType&gt;(source, N - 1).Swap(root, value, a);</div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;}</div>
-<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;</div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div>
-<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SwapValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> GenericPointer&lt;typename DocumentType::ValueType&gt;&amp; pointer, <span class="keyword">typename</span> DocumentType::ValueType&amp; value) {</div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <span class="keywordflow">return</span> pointer.Swap(document, value);</div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;}</div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;</div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SwapValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">typename</span> DocumentType::ValueType&amp; value) {</div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename DocumentType::ValueType&gt;(source, N - 1).Swap(document, value);</div>
-<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;}</div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;<span class="keywordtype">bool</span> EraseValueByPointer(T&amp; root, <span class="keyword">const</span> GenericPointer&lt;typename T::ValueType&gt;&amp; pointer) {</div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">return</span> pointer.Erase(root);</div>
-<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;}</div>
-<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;</div>
-<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;<span class="keywordtype">bool</span> EraseValueByPointer(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N]) {</div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; <span class="keywordflow">return</span> GenericPointer&lt;typename T::ValueType&gt;(source, N - 1).Erase(root);</div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;}</div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;<span class="comment">//@}</span></div>
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;</div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;</div>
-<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;</div>
-<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_POINTER_H_</span></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ggade540ee4cc2a416c23b8ee2c12393c7ba907c9fe4e541b257513e3a18635379f7"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba907c9fe4e541b257513e3a18635379f7">rapidjson::kPointerParseErrorInvalidEscape</a></div><div class="ttdoc">Invalid escape. </div><div class="ttdef"><b>Definition:</b> pointer.h:43</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a309d819cc14e9d2183df4807bc99fea5"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a309d819cc14e9d2183df4807bc99fea5">rapidjson::GenericPointer::Get</a></div><div class="ttdeci">ValueType * Get(ValueType &amp;root, size_t *unresolvedTokenIndex=0) const </div><div class="ttdoc">Query a value in a subtree. </div><div class="ttdef"><b>Definition:</b> pointer.h:479</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_aecea7b5c4786f509e35c3917efa57fce"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#aecea7b5c4786f509e35c3917efa57fce">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const </div><div class="ttdoc">Set a value in a subtree, with move semantics. </div><div class="ttdef"><b>Definition:</b> pointer.h:610</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_POINTER_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_POINTER_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">document.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;internal/itoa.h&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(<span class="keywordflow">switch</span>-<span class="keyword">enum</span>)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;RAPIDJSON_DIAG_OFF(4512) <span class="comment">// assignment operator could not be generated</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> kPointerInvalidIndex = ~<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(0); <span class="comment">//!&lt; Represents an invalid index in GenericPointer::Token</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">//! Error code of parsing.</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"></span><span class="comment">/*! \ingroup RAPIDJSON_ERRORS</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> \see GenericPointer::GenericPointer, GenericPointer::GetParseErrorCode</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b"> 39</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b">PointerParseErrorCode</a> {</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b"> 40</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a> = 0, <span class="comment">//!&lt; The parse is successful</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba2f2f8b238e201b7d540e8914bbfd2bed"> 42</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba2f2f8b238e201b7d540e8914bbfd2bed">kPointerParseErrorTokenMustBeginWithSolidus</a>, <span class="comment">//!&lt; A token must begin with a &#39;/&#39;</span></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba907c9fe4e541b257513e3a18635379f7"> 43</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba907c9fe4e541b257513e3a18635379f7">kPointerParseErrorInvalidEscape</a>, <span class="comment">//!&lt; Invalid escape</span></div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba29831a02b8ee23a05d552b47f4d64d28"> 44</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba29831a02b8ee23a05d552b47f4d64d28">kPointerParseErrorInvalidPercentEncoding</a>, <span class="comment">//!&lt; Invalid percent encoding in URI fragment</span></div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7bae244a98f53279fda5a750f847b81c54f"> 45</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7bae244a98f53279fda5a750f847b81c54f">kPointerParseErrorCharacterMustPercentEncode</a> <span class="comment">//!&lt; A character must percent encoded in URI fragment</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"></span>};</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"></span><span class="comment">// GenericPointer</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">//! Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator.</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> This class implements RFC 6901 &quot;JavaScript Object Notation (JSON) Pointer&quot; </span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"> (https://tools.ietf.org/html/rfc6901).</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> A JSON pointer is for identifying a specific value in a JSON document</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> (GenericDocument). It can simplify coding of DOM tree manipulation, because it</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> can access multiple-level depth of DOM tree with single API call.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> After it parses a string representation (e.g. &quot;/foo/0&quot; or URI fragment </span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> representation (e.g. &quot;#/foo/0&quot;) into its internal representation (tokens),</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment"> it can be used to resolve a specific value in multiple documents, or sub-tree </span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> of documents.</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> Contrary to GenericValue, Pointer can be copy constructed and copy assigned.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment"> Apart from assignment, a Pointer cannot be modified after construction.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> Although Pointer is very convenient, please aware that constructing Pointer</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> involves parsing and dynamic memory allocation. A special constructor with user-</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> supplied tokens eliminates these.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> GenericPointer depends on GenericDocument and GenericValue.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> \tparam ValueType The value type of the DOM tree. E.g. GenericValue&lt;UTF8&lt;&gt; &gt;</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> \tparam Allocator The allocator type for allocating memory for internal representation.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> \note GenericPointer uses same encoding of ValueType.</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> However, Allocator of GenericPointer is independent of Allocator of Value.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueType, <span class="keyword">typename</span> Allocator = CrtAllocator&gt;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e"> 83</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::EncodingType <a class="code" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>; <span class="comment">//!&lt; Encoding type from Value</span></div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7"> 84</a></span>&#160;<span class="comment"></span> <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::Ch <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>; <span class="comment">//!&lt; Character type from Value</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> //! A token is the basic units of internal representation.</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> A JSON pointer string representation &quot;/foo/123&quot; is parsed to two tokens: </span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> &quot;foo&quot; and 123. 123 will be represented in both numeric form and string form.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> They are resolved according to the actual value type (object or array).</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> For token that are not numbers, or the numeric value is out of bound</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> (greater than limits of SizeType), they are only treated as string form</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> (i.e. the token&#39;s index will be equal to kPointerInvalidIndex).</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> This struct is public so that user can create a Pointer without parsing and </span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> allocation, using a special constructor.</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_pointer_1_1_token.html"> 99</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> {</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8"> 100</a></span>&#160; <span class="keyword">const</span> Ch* <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8">name</a>; <span class="comment">//!&lt; Name of the token. It has null character at the end but it can contain null character.</span></div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600"> 101</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a>; <span class="comment">//!&lt; Length of the name.</span></div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d"> 102</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">index</a>; <span class="comment">//!&lt; A valid array index, if it is not equal to kPointerInvalidIndex.</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"></span> };</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> //!@name Constructors and destructor.</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> //! Default constructor.</span></div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#aa077ce171ea25cf501c12f2d5df7f248"> 109</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#aa077ce171ea25cf501c12f2d5df7f248">GenericPointer</a>(<a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>) {}</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> //! Constructor that parses a string or URI fragment representation.</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"> \param source A null-terminated, string or URI fragment representation of JSON pointer.</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> \param allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one.</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a8f831aae14afc493a82b5fb6aa9c3c43"> 116</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a8f831aae14afc493a82b5fb6aa9c3c43">GenericPointer</a>(<span class="keyword">const</span> Ch* source, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; Parse(source, internal::StrLen(source));</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"> //! Constructor that parses a string or URI fragment representation.</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> \param source A string or URI fragment representation of JSON pointer.</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> \param allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one.</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#aeefcd60e5ad37d80ec43f5315ae84809"> 127</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#aeefcd60e5ad37d80ec43f5315ae84809">GenericPointer</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; source, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>) {</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; Parse(source.c_str(), source.size());</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> //! Constructor that parses a string or URI fragment representation, with length of the source string.</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"> \param source A string or URI fragment representation of JSON pointer.</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> \param length Length of source.</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> \param allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one.</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"> \note Slightly faster than the overload without length.</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a00ad17ea227d2556404df7cc64c6aeb5"> 139</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a00ad17ea227d2556404df7cc64c6aeb5">GenericPointer</a>(<span class="keyword">const</span> Ch* source, <span class="keywordtype">size_t</span> length, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>) {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; Parse(source, length);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> //! Constructor with user-supplied tokens.</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"> This constructor let user supplies const array of tokens.</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> This prevents the parsing process and eliminates allocation.</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment"> This is preferred for memory constrained environments.</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment"> \param tokens An constant array of tokens representing the JSON pointer.</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment"> \param tokenCount Number of tokens.</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment"> \b Example</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment"> \code</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"> #define NAME(s) { s, sizeof(s) / sizeof(s[0]) - 1, kPointerInvalidIndex }</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"> #define INDEX(i) { #i, sizeof(#i) - 1, i }</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"> static const Pointer::Token kTokens[] = { NAME(&quot;foo&quot;), INDEX(123) };</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"> static const Pointer p(kTokens, sizeof(kTokens) / sizeof(kTokens[0]));</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"> // Equivalent to static const Pointer p(&quot;/foo/123&quot;);</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"> #undef NAME</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"> #undef INDEX</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> \endcode</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a6df9f6a01d1b5945811055e1cf8aead6"> 165</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a6df9f6a01d1b5945811055e1cf8aead6">GenericPointer</a>(<span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a>* tokens, <span class="keywordtype">size_t</span> tokenCount) : allocator_(), ownAllocator_(), nameBuffer_(), tokens_(const_cast&lt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a>*&gt;(tokens)), tokenCount_(tokenCount), parseErrorOffset_(), parseErrorCode_(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>) {}</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> //! Copy constructor.</span></div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a9f8119f2c714f78794854828789b832e"> 168</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a9f8119f2c714f78794854828789b832e">GenericPointer</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&amp; rhs, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>) {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; *<span class="keyword">this</span> = rhs;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> //! Destructor.</span></div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a0e144b9956a5272c13ceff3b9306e748"> 173</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a0e144b9956a5272c13ceff3b9306e748">~GenericPointer</a>() {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> (nameBuffer_) <span class="comment">// If user-supplied tokens constructor is used, nameBuffer_ is nullptr and tokens_ are not deallocated.</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; Allocator::Free(tokens_);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a>(ownAllocator_);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"> //! Assignment operator.</span></div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a23194bb6ce6c07c78981344fe80ac3a6"> 180</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a23194bb6ce6c07c78981344fe80ac3a6">operator=</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&amp; rhs) {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">this</span> != &amp;rhs) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">// Do not delete ownAllcator</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span> (nameBuffer_)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; Allocator::Free(tokens_);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; tokenCount_ = rhs.tokenCount_;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; parseErrorOffset_ = rhs.parseErrorOffset_;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; parseErrorCode_ = rhs.parseErrorCode_;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">if</span> (rhs.nameBuffer_)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; CopyFromRaw(rhs); <span class="comment">// Normally parsed tokens.</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; tokens_ = rhs.tokens_; <span class="comment">// User supplied const tokens.</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; nameBuffer_ = 0;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"> //!@name Append token</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment"> //! Append a token and return a new Pointer</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment"> \param token Token to be appended.</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment"> \param allocator Allocator for the newly return Pointer.</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment"> \return A new Pointer with appended token.</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a7cb5eda2af1722e52efa591c4103ebec"> 211</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a7cb5eda2af1722e52efa591c4103ebec">Append</a>(<span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a>&amp; token, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0)<span class="keyword"> const </span>{</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> r;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; r.allocator_ = allocator;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; Ch *p = r.CopyFromRaw(*<span class="keyword">this</span>, 1, token.<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a> + 1);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; std::memcpy(p, token.<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8">name</a>, (token.<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a> + 1) * <span class="keyword">sizeof</span>(Ch));</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; r.tokens_[tokenCount_].<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8">name</a> = p;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; r.tokens_[tokenCount_].<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a> = token.<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; r.tokens_[tokenCount_].<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">index</a> = token.<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">index</a>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment"> //! Append a name token with length, and return a new Pointer</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment"> \param name Name to be appended.</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment"> \param length Length of name.</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment"> \param allocator Allocator for the newly return Pointer.</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment"> \return A new Pointer with appended token.</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a30f4eac82e9fded60dead3f7d1cb3941"> 229</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a30f4eac82e9fded60dead3f7d1cb3941">Append</a>(<span class="keyword">const</span> Ch* name, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0)<span class="keyword"> const </span>{</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> token = { name, length, kPointerInvalidIndex };</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</span> Append(token, allocator);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment"> //! Append a name token without length, and return a new Pointer</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment"> \param name Name (const Ch*) to be appended.</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment"> \param allocator Allocator for the newly return Pointer.</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment"> \return A new Pointer with appended token.</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr&lt;internal::IsSame&lt;<span class="keyword">typename</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">internal::RemoveConst&lt;T&gt;::Type</a>, Ch&gt; &gt;), (<a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>))</div><div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a033a099aaa6b36df2d5171bdc593e98e"> 242</a></span>&#160; Append(T* name, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0)<span class="keyword"> const </span>{</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">return</span> Append(name, internal::StrLen(name), allocator);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment"> //! Append a name token, and return a new Pointer</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="comment"> \param name Name to be appended.</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment"> \param allocator Allocator for the newly return Pointer.</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="comment"> \return A new Pointer with appended token.</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a18494d59f0317c037fa3bd037e436cec"> 253</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a18494d59f0317c037fa3bd037e436cec">Append</a>(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; name, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0)<span class="keyword"> const </span>{</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> Append(name.c_str(), <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(name.size()), allocator);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"> //! Append a index token, and return a new Pointer</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment"> \param index Index to be appended.</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment"> \param allocator Allocator for the newly return Pointer.</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment"> \return A new Pointer with appended token.</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a4aadec8f0efe9a7ac42ac4906a5f676d"> 264</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a4aadec8f0efe9a7ac42ac4906a5f676d">Append</a>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0)<span class="keyword"> const </span>{</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordtype">char</span> buffer[21];</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordtype">char</span>* end = <span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) == 4 ? internal::u32toa(index, buffer) : internal::u64toa(index, buffer);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(end - buffer);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; buffer[length] = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>) == 1) {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> token = { <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>*<span class="keyword">&gt;</span>(buffer), length, index };</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> Append(token, allocator);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; }</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> name[21];</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt;= length; i++)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; name[i] = static_cast&lt;Ch&gt;(buffer[i]);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> token = { name, length, index };</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">return</span> Append(token, allocator);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment"> //! Append a token by value, and return a new Pointer</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="comment"> \param token token to be appended.</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="comment"> \param allocator Allocator for the newly return Pointer.</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="comment"> \return A new Pointer with appended token.</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a618808f066fb1104d36f012cced3b27a"> 289</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a618808f066fb1104d36f012cced3b27a">Append</a>(<span class="keyword">const</span> ValueType&amp; token, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0)<span class="keyword"> const </span>{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> (token.IsString())</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> Append(token.GetString(), token.GetStringLength(), allocator);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(token.IsUint64());</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(token.GetUint64() &lt;= <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(~0));</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">return</span> Append(static_cast&lt;SizeType&gt;(token.GetUint64()), allocator);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"> //!@name Handling Parse Error</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="comment"> //! Check whether this is a valid pointer.</span></div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c"> 303</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c">IsValid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseErrorCode_ == <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>; }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment"> //! Get the parsing error offset in code unit.</span></div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a75caef2a047c56466f0b599bdda882c9"> 306</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a75caef2a047c56466f0b599bdda882c9">GetParseErrorOffset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseErrorOffset_; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="comment"> //! Get the parsing error code.</span></div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#af649a48d77aa856cddaa748ad6b0d6ac"> 309</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b">PointerParseErrorCode</a> <a class="code" href="classrapidjson_1_1_generic_pointer.html#af649a48d77aa856cddaa748ad6b0d6ac">GetParseErrorCode</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseErrorCode_; }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="comment"> //! Get the allocator of this pointer.</span></div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#acdac4ea8e57920194827be4afb942d97"> 314</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#acdac4ea8e57920194827be4afb942d97">GetAllocator</a>() { <span class="keywordflow">return</span> *allocator_; }</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="comment"> //!@name Tokens</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="comment"> //! Get the token array (const version only).</span></div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#ac07c300d43f04dad9caa0cb209cb2853"> 320</a></span>&#160;<span class="comment"></span> <span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a>* <a class="code" href="classrapidjson_1_1_generic_pointer.html#ac07c300d43f04dad9caa0cb209cb2853">GetTokens</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> tokens_; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="comment"> //! Get the number of tokens.</span></div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a791e40c10682b9db0adf2b6e0b8b3d78"> 323</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a791e40c10682b9db0adf2b6e0b8b3d78">GetTokenCount</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> tokenCount_; }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment"> //!@name Equality/inequality operators</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="comment"> //! Equality operator.</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment"> \note When any pointers are invalid, always returns false.</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a3bb15fa5592f2bfad6f2c9af7940b952"> 334</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a3bb15fa5592f2bfad6f2c9af7940b952">operator==</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&amp; rhs)<span class="keyword"> const </span>{</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">if</span> (!IsValid() || !rhs.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c">IsValid</a>() || tokenCount_ != rhs.tokenCount_)</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; tokenCount_; i++) {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">if</span> (tokens_[i].index != rhs.tokens_[i].<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">index</a> ||</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; tokens_[i].length != rhs.tokens_[i].<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a> || </div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; (tokens_[i].length != 0 &amp;&amp; std::memcmp(tokens_[i].name, rhs.tokens_[i].<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8">name</a>, <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>)* tokens_[i].length) != 0))</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="comment"> //! Inequality operator.</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="comment"> \note When any pointers are invalid, always returns true.</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a8ca73989b4f3ffa5154a229f95f1e0c9"> 354</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a8ca73989b4f3ffa5154a229f95f1e0c9">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&amp; rhs)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == rhs); }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="comment"> //!@name Stringify</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment"> //! Stringify the pointer into string representation.</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="comment"> \tparam OutputStream Type of output stream.</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="comment"> \param os The output stream.</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a73073ca3c9e47eba7c27c16151b269ac"> 367</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a73073ca3c9e47eba7c27c16151b269ac">Stringify</a>(OutputStream&amp; os)<span class="keyword"> const </span>{</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> Stringify&lt;false, OutputStream&gt;(os);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="comment"> //! Stringify the pointer into URI fragment representation.</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="comment"> \tparam OutputStream Type of output stream.</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="comment"> \param os The output stream.</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#ae985c27c1d061b93ba4f8875cfa5f7b5"> 377</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#ae985c27c1d061b93ba4f8875cfa5f7b5">StringifyUriFragment</a>(OutputStream&amp; os)<span class="keyword"> const </span>{</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">return</span> Stringify&lt;true, OutputStream&gt;(os);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="comment"> //!@name Create value</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="comment"> //! Create a value in a subtree.</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="comment"> If the value is not exist, it creates all parent values and a JSON Null value.</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="comment"> So it always succeed and return the newly created or existing value.</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="comment"> Remind that it may change types of parents according to tokens, so it </span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="comment"> potentially removes previously stored values. For example, if a document </span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="comment"> was an array, and &quot;/foo&quot; is used to create a value, then the document </span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment"> will be changed to an object, and all existing array elements are lost.</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="comment"> \param root Root value of a DOM subtree to be resolved. It can be any value other than document root.</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="comment"> \param allocator Allocator for creating the values if the specified value or its parents are not exist.</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="comment"> \param alreadyExist If non-null, it stores whether the resolved value is already exist.</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="comment"> \return The resolved newly created (a JSON Null value), or already exists value.</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00401"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856"> 401</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856">Create</a>(ValueType&amp; root, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator, <span class="keywordtype">bool</span>* alreadyExist = 0)<span class="keyword"> const </span>{</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsValid());</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; ValueType* v = &amp;root;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordtype">bool</span> exist = <span class="keyword">true</span>;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> *t = tokens_; t != tokens_ + tokenCount_; ++t) {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsArray() &amp;&amp; t-&gt;name[0] == <span class="charliteral">&#39;-&#39;</span> &amp;&amp; t-&gt;length == 1) {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; v-&gt;PushBack(ValueType().Move(), allocator);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; v = &amp;((*v)[v-&gt;Size() - 1]);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; exist = <span class="keyword">false</span>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">if</span> (t-&gt;index == kPointerInvalidIndex) { <span class="comment">// must be object name</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span> (!v-&gt;IsObject())</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; v-&gt;SetObject(); <span class="comment">// Change to Object</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; }</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">else</span> { <span class="comment">// object name or array index</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (!v-&gt;IsArray() &amp;&amp; !v-&gt;IsObject())</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; v-&gt;SetArray(); <span class="comment">// Change to Array</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsArray()) {</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <span class="keywordflow">if</span> (t-&gt;index &gt;= v-&gt;Size()) {</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; v-&gt;Reserve(t-&gt;index + 1, allocator);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">while</span> (t-&gt;index &gt;= v-&gt;Size())</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; v-&gt;PushBack(ValueType().Move(), allocator);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; exist = <span class="keyword">false</span>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; v = &amp;((*v)[t-&gt;index]);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; }</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keyword">typename</span> ValueType::MemberIterator m = v-&gt;FindMember(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;Ch&gt;</a>(t-&gt;name, t-&gt;length));</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span> (m == v-&gt;MemberEnd()) {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; v-&gt;AddMember(ValueType(t-&gt;name, t-&gt;length, allocator).Move(), ValueType().Move(), allocator);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; v = &amp;(--v-&gt;MemberEnd())-&gt;value; <span class="comment">// Assumes AddMember() appends at the end</span></div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; exist = <span class="keyword">false</span>;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; }</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; v = &amp;m-&gt;value;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">if</span> (alreadyExist)</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; *alreadyExist = exist;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">return</span> *v;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;<span class="comment"> //! Creates a value in a document.</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="comment"> \param document A document to be resolved.</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="comment"> \param alreadyExist If non-null, it stores whether the resolved value is already exist.</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="comment"> \return The resolved newly created, or already exists value.</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div><div class="line"><a name="l00456"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#adc4bf5a3892f5626a8517f90c88e4b7f"> 456</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#adc4bf5a3892f5626a8517f90c88e4b7f">Create</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, <span class="keywordtype">bool</span>* alreadyExist = 0)<span class="keyword"> const </span>{</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">return</span> Create(document, document.<a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>(), alreadyExist);</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="comment"> //!@name Query value</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="comment"> //! Query a value in a subtree.</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="comment"> \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="comment"> \param unresolvedTokenIndex If the pointer cannot resolve a token in the pointer, this parameter can obtain the index of unresolved token.</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="comment"> \return Pointer to the value if it can be resolved. Otherwise null.</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="comment"> \note</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="comment"> There are only 3 situations when a value cannot be resolved:</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="comment"> 1. A value in the path is not an array nor object.</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;<span class="comment"> 2. An object value does not contain the token.</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="comment"> 3. A token is out of range of an array value.</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="comment"> Use unresolvedTokenIndex to retrieve the token index.</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd"> 479</a></span>&#160; ValueType* <a class="code" href="classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd">Get</a>(ValueType&amp; root, <span class="keywordtype">size_t</span>* unresolvedTokenIndex = 0)<span class="keyword"> const </span>{</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsValid());</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; ValueType* v = &amp;root;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> *t = tokens_; t != tokens_ + tokenCount_; ++t) {</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">switch</span> (v-&gt;GetType()) {</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>:</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; {</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keyword">typename</span> ValueType::MemberIterator m = v-&gt;FindMember(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;Ch&gt;</a>(t-&gt;name, t-&gt;length));</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span> (m == v-&gt;MemberEnd())</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; v = &amp;m-&gt;value;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>:</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">if</span> (t-&gt;index == kPointerInvalidIndex || t-&gt;index &gt;= v-&gt;Size())</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; v = &amp;((*v)[t-&gt;index]);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="comment">// Error: unresolved token</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">if</span> (unresolvedTokenIndex)</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; *unresolvedTokenIndex = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(t - tokens_);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; }</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">return</span> v;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="comment"> //! Query a const value in a const subtree.</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="comment"> \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;<span class="comment"> \return Pointer to the value if it can be resolved. Otherwise null.</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#aac2171a0ac38298b2d0ae063351ec176"> 514</a></span>&#160; <span class="keyword">const</span> ValueType* <a class="code" href="classrapidjson_1_1_generic_pointer.html#aac2171a0ac38298b2d0ae063351ec176">Get</a>(<span class="keyword">const</span> ValueType&amp; root, <span class="keywordtype">size_t</span>* unresolvedTokenIndex = 0)<span class="keyword"> const </span>{ </div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> Get(const_cast&lt;ValueType&amp;&gt;(root), unresolvedTokenIndex);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="comment"> //!@name Query a value with default</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;<span class="comment"> //! Query a value in a subtree with default value.</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="comment"> Similar to Get(), but if the specified value do not exists, it creates all parents and clone the default value.</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="comment"> So that this function always succeed.</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="comment"> \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="comment"> \param defaultValue Default value to be cloned if the value was not exists.</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;<span class="comment"> \param allocator Allocator for creating the values if the specified value or its parents are not exist.</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;<span class="comment"> \see Create()</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00533"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2"> 533</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2">GetWithDefault</a>(ValueType&amp; root, <span class="keyword">const</span> ValueType&amp; defaultValue, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordtype">bool</span> alreadyExist;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">Value</a>&amp; v = Create(root, allocator, &amp;alreadyExist);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">return</span> alreadyExist ? v : v.<a class="code" href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae">CopyFrom</a>(defaultValue, allocator);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="comment"> //! Query a value in a subtree with default null-terminated string.</span></div><div class="line"><a name="l00540"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#abdc025b8391b271f1134a7ba7039c27f"> 540</a></span>&#160;<span class="comment"></span> ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#abdc025b8391b271f1134a7ba7039c27f">GetWithDefault</a>(ValueType&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* defaultValue, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordtype">bool</span> alreadyExist;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">Value</a>&amp; v = Create(root, allocator, &amp;alreadyExist);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">return</span> alreadyExist ? v : v.<a class="code" href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f">SetString</a>(defaultValue, allocator);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="comment"> //! Query a value in a subtree with default std::basic_string.</span></div><div class="line"><a name="l00548"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a2ac51ee7af5b9d7628140ae8501edcf4"> 548</a></span>&#160;<span class="comment"></span> ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a2ac51ee7af5b9d7628140ae8501edcf4">GetWithDefault</a>(ValueType&amp; root, <span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; defaultValue, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <span class="keywordtype">bool</span> alreadyExist;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="classrapidjson_1_1_generic_value.html">Value</a>&amp; v = Create(root, allocator, &amp;alreadyExist);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> alreadyExist ? v : v.<a class="code" href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f">SetString</a>(defaultValue, allocator);</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; }</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;<span class="comment"> //! Query a value in a subtree with default primitive value.</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;<span class="comment"> \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (ValueType&amp;))</div><div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a16833ef8a38386e6c310d602426b45f0"> 561</a></span>&#160; GetWithDefault(ValueType&amp; root, T defaultValue, typename ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">return</span> GetWithDefault(root, ValueType(defaultValue).Move(), allocator);</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; }</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;<span class="comment"> //! Query a value in a document with default value.</span></div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div><div class="line"><a name="l00567"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a07fa31c03c96e260f234087882dce408"> 567</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a07fa31c03c96e260f234087882dce408">GetWithDefault</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, <span class="keyword">const</span> ValueType&amp; defaultValue)<span class="keyword"> const </span>{</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span> GetWithDefault(document, defaultValue, document.<a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>());</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="comment"> //! Query a value in a document with default null-terminated string.</span></div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div><div class="line"><a name="l00573"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#aaa4e92344cc07e98adb5b9f5b93927b8"> 573</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#aaa4e92344cc07e98adb5b9f5b93927b8">GetWithDefault</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* defaultValue)<span class="keyword"> const </span>{</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">return</span> GetWithDefault(document, defaultValue, document.<a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>());</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; }</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; </div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;<span class="comment"> //! Query a value in a document with default std::basic_string.</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div><div class="line"><a name="l00580"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#af19e2313004885cfa9c45f50b30b32e2"> 580</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#af19e2313004885cfa9c45f50b30b32e2">GetWithDefault</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, <span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; defaultValue)<span class="keyword"> const </span>{</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">return</span> GetWithDefault(document, defaultValue, document.<a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>());</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;<span class="comment"> //! Query a value in a document with default primitive value.</span></div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="comment"> \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> stackAllocator&gt;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (ValueType&amp;))</div><div class="line"><a name="l00591"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a1f428c25a3a905683e616d76c2d9efcf"> 591</a></span>&#160; GetWithDefault(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt;<a class="code" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator&gt;&amp; document, T defaultValue)<span class="keyword"> const </span>{</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">return</span> GetWithDefault(document, defaultValue, document.GetAllocator());</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; }</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;<span class="comment"> //!@name Set a value</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="comment"> //! Set a value in a subtree, with move semantics.</span></div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="comment"> It creates all parents if they are not exist or types are different to the tokens.</span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="comment"> So this function always succeeds but potentially remove existing values.</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<span class="comment"> \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;<span class="comment"> \param value Value to be set.</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;<span class="comment"> \param allocator Allocator for creating the values if the specified value or its parents are not exist.</span></div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;<span class="comment"> \see Create()</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00610"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663"> 610</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663">Set</a>(ValueType&amp; root, ValueType&amp; value, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">return</span> Create(root, allocator) = value;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; }</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="comment"> //! Set a value in a subtree, with copy semantics.</span></div><div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#af2f51d68c82136086bed9593719abd1a"> 615</a></span>&#160;<span class="comment"></span> ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#af2f51d68c82136086bed9593719abd1a">Set</a>(ValueType&amp; root, <span class="keyword">const</span> ValueType&amp; value, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">return</span> Create(root, allocator).CopyFrom(value, allocator);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; }</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="comment"> //! Set a null-terminated string in a subtree.</span></div><div class="line"><a name="l00620"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a4f0ef2b49a9561d570217249343d9335"> 620</a></span>&#160;<span class="comment"></span> ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a4f0ef2b49a9561d570217249343d9335">Set</a>(ValueType&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* value, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">return</span> Create(root, allocator) = ValueType(value, allocator).Move();</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;<span class="comment"> //! Set a std::basic_string in a subtree.</span></div><div class="line"><a name="l00626"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a0ae84f686e1af593b9445c2c502101b2"> 626</a></span>&#160;<span class="comment"></span> ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a0ae84f686e1af593b9445c2c502101b2">Set</a>(ValueType&amp; root, <span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; value, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">return</span> Create(root, allocator) = ValueType(value, allocator).Move();</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; }</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;<span class="comment"> //! Set a primitive value in a subtree.</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;<span class="comment"> \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool</span></div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (ValueType&amp;))</div><div class="line"><a name="l00637"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#aa6df2ca27eecabbbad825a64a3d2bfe9"> 637</a></span>&#160; Set(ValueType&amp; root, T value, typename ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">return</span> Create(root, allocator) = ValueType(value).Move();</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; }</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;<span class="comment"> //! Set a value in a document, with move semantics.</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div><div class="line"><a name="l00643"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a9371832d9089cca9b7f549172fd75cc8"> 643</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a9371832d9089cca9b7f549172fd75cc8">Set</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, ValueType&amp; value)<span class="keyword"> const </span>{</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">return</span> Create(document) = value;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; }</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;<span class="comment"> //! Set a value in a document, with copy semantics.</span></div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div><div class="line"><a name="l00649"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#ad7a692d4e08d578f7e24afb7c4004276"> 649</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#ad7a692d4e08d578f7e24afb7c4004276">Set</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, <span class="keyword">const</span> ValueType&amp; value)<span class="keyword"> const </span>{</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">return</span> Create(document).CopyFrom(value, document.<a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>());</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; }</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="comment"> //! Set a null-terminated string in a document.</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div><div class="line"><a name="l00655"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#afb649edbdbe09a6840b12d67c9f2501e"> 655</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#afb649edbdbe09a6840b12d67c9f2501e">Set</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* value)<span class="keyword"> const </span>{</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">return</span> Create(document) = ValueType(value, document.<a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>()).Move();</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;<span class="comment"> //! Sets a std::basic_string in a document.</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div><div class="line"><a name="l00662"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a3a7ff4e0b700c2975cf455fef23226b4"> 662</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a3a7ff4e0b700c2975cf455fef23226b4">Set</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, <span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; value)<span class="keyword"> const </span>{</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">return</span> Create(document) = ValueType(value, document.<a class="code" href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">GetAllocator</a>()).Move();</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;<span class="comment"> //! Set a primitive value in a document.</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="comment"> \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> stackAllocator&gt;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T&gt;, internal::IsGenericValue&lt;T&gt; &gt;), (ValueType&amp;))</div><div class="line"><a name="l00673"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a8e5ed62ba30bb3f7a09a826746f70574"> 673</a></span>&#160; Set(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument</a>&lt;<a class="code" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, typename ValueType::AllocatorType, stackAllocator&gt;&amp; document, T value)<span class="keyword"> const </span>{</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">return</span> Create(document) = value;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; }</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="comment"> //!@name Swap a value</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;<span class="comment"></span><span class="comment"> //@{</span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;<span class="comment"> //! Swap a value with a value in a subtree.</span></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;<span class="comment"> It creates all parents if they are not exist or types are different to the tokens.</span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;<span class="comment"> So this function always succeeds but potentially remove existing values.</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="comment"> \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="comment"> \param value Value to be swapped.</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="comment"> \param allocator Allocator for creating the values if the specified value or its parents are not exist.</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<span class="comment"> \see Create()</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00692"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a4690cd1d6c85168ebd2ce0afe186a4fa"> 692</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a4690cd1d6c85168ebd2ce0afe186a4fa">Swap</a>(ValueType&amp; root, ValueType&amp; value, <span class="keyword">typename</span> ValueType::AllocatorType&amp; allocator)<span class="keyword"> const </span>{</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">return</span> Create(root, allocator).Swap(value);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; }</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;<span class="comment"> //! Swap a value with a value in a document.</span></div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> stackAllocator&gt;</div><div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a29d7ee42eb5646f829aeca6c6989555a"> 698</a></span>&#160; ValueType&amp; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a29d7ee42eb5646f829aeca6c6989555a">Swap</a>(<a class="code" href="classrapidjson_1_1_generic_document.html">GenericDocument&lt;EncodingType, typename ValueType::AllocatorType, stackAllocator&gt;</a>&amp; document, ValueType&amp; value)<span class="keyword"> const </span>{</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordflow">return</span> Create(document).Swap(value);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; }</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;<span class="comment"> //! Erase a value in a subtree.</span></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;<span class="comment"> \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.</span></div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;<span class="comment"> \return Whether the resolved value is found and erased.</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;<span class="comment"> \note Erasing with an empty pointer \c Pointer(&quot;&quot;), i.e. the root, always fail and return false.</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00711"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_pointer.html#a923a1100c029a28e25894708bdce784c"> 711</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a923a1100c029a28e25894708bdce784c">Erase</a>(ValueType&amp; root)<span class="keyword"> const </span>{</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsValid());</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">if</span> (tokenCount_ == 0) <span class="comment">// Cannot erase the root</span></div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; ValueType* v = &amp;root;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a>* last = tokens_ + (tokenCount_ - 1);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> *t = tokens_; t != last; ++t) {</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">switch</span> (v-&gt;GetType()) {</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>:</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; {</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keyword">typename</span> ValueType::MemberIterator m = v-&gt;FindMember(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;Ch&gt;</a>(t-&gt;name, t-&gt;length));</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">if</span> (m == v-&gt;MemberEnd())</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; v = &amp;m-&gt;value;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; }</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>:</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">if</span> (t-&gt;index == kPointerInvalidIndex || t-&gt;index &gt;= v-&gt;Size())</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; v = &amp;((*v)[t-&gt;index]);</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; }</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">switch</span> (v-&gt;GetType()) {</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>:</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">return</span> v-&gt;EraseMember(<a class="code" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef&lt;Ch&gt;</a>(last-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8">name</a>, last-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a>));</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; <span class="keywordflow">case</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>:</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">if</span> (last-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">index</a> == kPointerInvalidIndex || last-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">index</a> &gt;= v-&gt;Size())</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; v-&gt;Erase(v-&gt;Begin() + last-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">index</a>);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; }</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; }</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;<span class="keyword">private</span>:<span class="comment"></span></div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;<span class="comment"> //! Clone the content from rhs to this.</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;<span class="comment"> \param rhs Source pointer.</span></div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;<span class="comment"> \param extraToken Extra tokens to be allocated.</span></div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;<span class="comment"> \param extraNameBufferSize Extra name buffer size (in number of Ch) to be allocated.</span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;<span class="comment"> \return Start of non-occupied name buffer, for storing extra names.</span></div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* CopyFromRaw(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer</a>&amp; rhs, <span class="keywordtype">size_t</span> extraToken = 0, <span class="keywordtype">size_t</span> extraNameBufferSize = 0) {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">if</span> (!allocator_) <span class="comment">// allocator is independently owned.</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; ownAllocator_ = allocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(<a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>)();</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordtype">size_t</span> nameBufferSize = rhs.tokenCount_; <span class="comment">// null terminators for tokens</span></div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> *t = rhs.tokens_; t != rhs.tokens_ + rhs.tokenCount_; ++t)</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; nameBufferSize += t-&gt;length;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; tokenCount_ = rhs.tokenCount_ + extraToken;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; tokens_ = <span class="keyword">static_cast&lt;</span><a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> *<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(tokenCount_ * <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a>) + (nameBufferSize + extraNameBufferSize) * <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>)));</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; nameBuffer_ = <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> *<span class="keyword">&gt;</span>(tokens_ + tokenCount_);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="keywordflow">if</span> (rhs.tokenCount_ &gt; 0) {</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; std::memcpy(tokens_, rhs.tokens_, rhs.tokenCount_ * <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a>));</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; }</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">if</span> (nameBufferSize &gt; 0) {</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; std::memcpy(nameBuffer_, rhs.nameBuffer_, nameBufferSize * <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>));</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; }</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="comment">// Adjust pointers to name buffer</span></div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; std::ptrdiff_t diff = nameBuffer_ - rhs.nameBuffer_;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> *t = tokens_; t != tokens_ + rhs.tokenCount_; ++t)</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; t-&gt;name += diff;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160;</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">return</span> nameBuffer_ + nameBufferSize;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; }</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;<span class="comment"> //! Check whether a character should be percent-encoded.</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;<span class="comment"> According to RFC 3986 2.3 Unreserved Characters.</span></div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;<span class="comment"> \param c The character (code unit) to be tested.</span></div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordtype">bool</span> NeedPercentEncode(<a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> c)<span class="keyword"> const </span>{</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keywordflow">return</span> !((c &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; c &lt;= &#39;9&#39;) || (c &gt;= <span class="charliteral">&#39;A&#39;</span> &amp;&amp; c &lt;=&#39;Z&#39;) || (c &gt;= <span class="charliteral">&#39;a&#39;</span> &amp;&amp; c &lt;= <span class="charliteral">&#39;z&#39;</span>) || c == <span class="charliteral">&#39;-&#39;</span> || c == <span class="charliteral">&#39;.&#39;</span> || c == <span class="charliteral">&#39;_&#39;</span> || c ==<span class="charliteral">&#39;~&#39;</span>);</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; }</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;<span class="comment"> //! Parse a JSON String or its URI fragment representation into tokens.</span></div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;<span class="comment"></span><span class="preprocessor">#ifndef __clang__ // -Wdocumentation</span></div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;<span class="comment"> /*!</span></div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;<span class="comment"> \param source Either a JSON Pointer string, or its URI fragment representation. Not need to be null terminated.</span></div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;<span class="comment"> \param length Length of the source string.</span></div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;<span class="comment"> \note Source cannot be JSON String Representation of JSON Pointer, e.g. In &quot;/\u0000&quot;, \u0000 will not be unescaped.</span></div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordtype">void</span> Parse(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* source, <span class="keywordtype">size_t</span> length) {</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(source != NULL);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(nameBuffer_ == 0);</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(tokens_ == 0);</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="comment">// Create own allocator if user did not supply.</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">if</span> (!allocator_)</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; ownAllocator_ = allocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(<a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>)();</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="comment">// Count number of &#39;/&#39; as tokenCount</span></div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; tokenCount_ = 0;</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* s = source; s != source + length; s++) </div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordflow">if</span> (*s == <span class="charliteral">&#39;/&#39;</span>)</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; tokenCount_++;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a>* token = tokens_ = <span class="keyword">static_cast&lt;</span><a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> *<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(tokenCount_ * <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a>) + length * <span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>)));</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* name = nameBuffer_ = <span class="keyword">reinterpret_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> *<span class="keyword">&gt;</span>(tokens_ + tokenCount_);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordtype">size_t</span> i = 0;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="comment">// Detect if it is a URI fragment</span></div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordtype">bool</span> uriFragment = <span class="keyword">false</span>;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">if</span> (source[i] == <span class="charliteral">&#39;#&#39;</span>) {</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; uriFragment = <span class="keyword">true</span>;</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; i++;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; }</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">if</span> (i != length &amp;&amp; source[i] != <span class="charliteral">&#39;/&#39;</span>) {</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; parseErrorCode_ = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba2f2f8b238e201b7d540e8914bbfd2bed">kPointerParseErrorTokenMustBeginWithSolidus</a>;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">goto</span> error;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; }</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160;</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">while</span> (i &lt; length) {</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(source[i] == <span class="charliteral">&#39;/&#39;</span>);</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; i++; <span class="comment">// consumes &#39;/&#39;</span></div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160;</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; token-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8">name</a> = name;</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordtype">bool</span> isNumber = <span class="keyword">true</span>;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">while</span> (i &lt; length &amp;&amp; source[i] != <span class="charliteral">&#39;/&#39;</span>) {</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> c = source[i];</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">if</span> (uriFragment) {</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="comment">// Decoding percent-encoding for URI fragment</span></div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;%&#39;</span>) {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; PercentDecodeStream is(&amp;source[i], source + length);</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream&lt;EncodingType&gt;</a> os(name);</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* begin = os.PutBegin();</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structrapidjson_1_1_transcoder.html">Transcoder</a>&lt;<a class="code" href="structrapidjson_1_1_u_t_f8.html">UTF8&lt;&gt;</a>, <a class="code" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>&gt;().Validate(is, os) || !is.IsValid()) {</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; parseErrorCode_ = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba29831a02b8ee23a05d552b47f4d64d28">kPointerParseErrorInvalidPercentEncoding</a>;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">goto</span> error;</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; }</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordtype">size_t</span> len = os.PutEnd(begin);</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; i += is.Tell() - 1;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">if</span> (len == 1)</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; c = *name;</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; name += len;</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; isNumber = <span class="keyword">false</span>;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; i++;</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; }</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; }</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (NeedPercentEncode(c)) {</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; parseErrorCode_ = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7bae244a98f53279fda5a750f847b81c54f">kPointerParseErrorCharacterMustPercentEncode</a>;</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">goto</span> error;</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; }</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; }</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; i++;</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; </div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="comment">// Escaping &quot;~0&quot; -&gt; &#39;~&#39;, &quot;~1&quot; -&gt; &#39;/&#39;</span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;~&#39;</span>) {</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">if</span> (i &lt; length) {</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; c = source[i];</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;0&#39;</span>) c = <span class="charliteral">&#39;~&#39;</span>;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;1&#39;</span>) c = <span class="charliteral">&#39;/&#39;</span>;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; parseErrorCode_ = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba907c9fe4e541b257513e3a18635379f7">kPointerParseErrorInvalidEscape</a>;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; <span class="keywordflow">goto</span> error;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; }</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; i++;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; }</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; parseErrorCode_ = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba907c9fe4e541b257513e3a18635379f7">kPointerParseErrorInvalidEscape</a>;</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">goto</span> error;</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; }</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; }</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="comment">// First check for index: all of characters are digit</span></div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">if</span> (c &lt; &#39;0&#39; || c &gt; <span class="charliteral">&#39;9&#39;</span>)</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; isNumber = <span class="keyword">false</span>;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; *name++ = c;</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; }</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; token-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a> = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(name - token-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8">name</a>);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="keywordflow">if</span> (token-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a> == 0)</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; isNumber = <span class="keyword">false</span>;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; *name++ = <span class="charliteral">&#39;\0&#39;</span>; <span class="comment">// Null terminator</span></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="comment">// Second check for index: more than one digit cannot have leading zero</span></div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">if</span> (isNumber &amp;&amp; token-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a> &gt; 1 &amp;&amp; token-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8">name</a>[0] == <span class="charliteral">&#39;0&#39;</span>)</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; isNumber = <span class="keyword">false</span>;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="comment">// String to SizeType conversion</span></div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> n = 0;</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordflow">if</span> (isNumber) {</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; token-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a>; j++) {</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> m = n * 10 + <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(token-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8">name</a>[j] - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">if</span> (m &lt; n) { <span class="comment">// overflow detection</span></div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; isNumber = <span class="keyword">false</span>;</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; }</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; n = m;</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; }</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; }</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; token-&gt;<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">index</a> = isNumber ? n : kPointerInvalidIndex;</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; token++;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; }</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160;</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(name &lt;= nameBuffer_ + length); <span class="comment">// Should not overflow buffer</span></div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; parseErrorCode_ = <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">kPointerParseErrorNone</a>;</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; error:</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; Allocator::Free(tokens_);</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; nameBuffer_ = 0;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; tokens_ = 0;</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; tokenCount_ = 0;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; parseErrorOffset_ = i;</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; }</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160;<span class="comment"> //! Stringify to string or URI fragment representation.</span></div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;<span class="comment"> \tparam uriFragment True for stringifying to URI fragment representation. False for string representation.</span></div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;<span class="comment"> \tparam OutputStream type of output stream.</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;<span class="comment"> \param os The output stream.</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">bool</span> uriFragment, <span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="keywordtype">bool</span> Stringify(OutputStream&amp; os)<span class="keyword"> const </span>{</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsValid());</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keywordflow">if</span> (uriFragment)</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; os.Put(<span class="charliteral">&#39;#&#39;</span>);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a> *t = tokens_; t != tokens_ + tokenCount_; ++t) {</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; os.Put(<span class="charliteral">&#39;/&#39;</span>);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; t-&gt;length; j++) {</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> c = t-&gt;name[j];</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;~&#39;</span>) {</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; os.Put(<span class="charliteral">&#39;~&#39;</span>);</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; os.Put(<span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; }</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;/&#39;</span>) {</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; os.Put(<span class="charliteral">&#39;~&#39;</span>);</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; os.Put(<span class="charliteral">&#39;1&#39;</span>);</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; }</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (uriFragment &amp;&amp; NeedPercentEncode(c)) { </div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="comment">// Transcode to UTF8 sequence</span></div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <a class="code" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream&lt;typename ValueType::EncodingType&gt;</a> source(&amp;t-&gt;name[j]);</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; PercentEncodeStream&lt;OutputStream&gt; target(os);</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="structrapidjson_1_1_transcoder.html">Transcoder</a>&lt;<a class="code" href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">EncodingType</a>, <a class="code" href="structrapidjson_1_1_u_t_f8.html">UTF8&lt;&gt;</a> &gt;().Validate(source, target))</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; j += source.Tell() - 1;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; }</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; os.Put(c);</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; }</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; }</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; }</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;<span class="comment"> //! A helper stream for decoding a percent-encoded sequence into code unit.</span></div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160;<span class="comment"> This stream decodes %XY triplet into code unit (0-255).</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;<span class="comment"> If it encounters invalid characters, it sets output code unit as 0 and </span></div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;<span class="comment"> mark invalid, and to be checked by IsValid().</span></div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keyword">class </span>PercentDecodeStream {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::Ch <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;<span class="comment"> //! Constructor</span></div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;<span class="comment"> \param source Start of the stream</span></div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;<span class="comment"> \param end Past-the-end of the stream.</span></div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; PercentDecodeStream(<span class="keyword">const</span> Ch* source, <span class="keyword">const</span> Ch* end) : src_(source), head_(source), end_(end), valid_(<span class="keyword">true</span>) {}</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160;</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; Ch Take() {</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordflow">if</span> (*src_ != <span class="charliteral">&#39;%&#39;</span> || src_ + 3 &gt; end_) { <span class="comment">// %XY triplet</span></div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; valid_ = <span class="keyword">false</span>;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; }</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; src_++;</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; Ch c = 0;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; 2; j++) {</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; c = <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c &lt;&lt; 4);</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; Ch h = *src_;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="keywordflow">if</span> (h &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; h &lt;= <span class="charliteral">&#39;9&#39;</span>) c = <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c + h - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (h &gt;= <span class="charliteral">&#39;A&#39;</span> &amp;&amp; h &lt;= <span class="charliteral">&#39;F&#39;</span>) c = <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c + h - <span class="charliteral">&#39;A&#39;</span> + 10);</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (h &gt;= <span class="charliteral">&#39;a&#39;</span> &amp;&amp; h &lt;= <span class="charliteral">&#39;f&#39;</span>) c = <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(c + h - <span class="charliteral">&#39;a&#39;</span> + 10);</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; valid_ = <span class="keyword">false</span>;</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; }</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; src_++;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; }</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">return</span> c;</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; }</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160;</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(src_ - head_); }</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keywordtype">bool</span> IsValid()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> valid_; }</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keyword">const</span> Ch* src_; <span class="comment">//!&lt; Current read position.</span></div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;<span class="comment"></span> <span class="keyword">const</span> Ch* head_; <span class="comment">//!&lt; Original head of the string.</span></div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;<span class="comment"></span> <span class="keyword">const</span> Ch* end_; <span class="comment">//!&lt; Past-the-end position.</span></div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> valid_; <span class="comment">//!&lt; Whether the parsing is valid.</span></div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;<span class="comment"></span> };</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;<span class="comment"> //! A helper stream to encode character (UTF-8 code unit) into percent-encoded sequence.</span></div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;<span class="comment"></span> <span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keyword">class </span>PercentEncodeStream {</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; PercentEncodeStream(OutputStream&amp; os) : os_(os) {}</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <span class="keywordtype">void</span> Put(<span class="keywordtype">char</span> c) { <span class="comment">// UTF-8 must be byte</span></div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> u = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(c);</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> hexDigits[16] = { <span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;3&#39;</span>, <span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;6&#39;</span>, <span class="charliteral">&#39;7&#39;</span>, <span class="charliteral">&#39;8&#39;</span>, <span class="charliteral">&#39;9&#39;</span>, <span class="charliteral">&#39;A&#39;</span>, <span class="charliteral">&#39;B&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39;D&#39;</span>, <span class="charliteral">&#39;E&#39;</span>, <span class="charliteral">&#39;F&#39;</span> };</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; os_.Put(<span class="charliteral">&#39;%&#39;</span>);</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; os_.Put(static_cast&lt;typename OutputStream::Ch&gt;(hexDigits[u &gt;&gt; 4]));</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; os_.Put(static_cast&lt;typename OutputStream::Ch&gt;(hexDigits[u &amp; 15]));</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; }</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; OutputStream&amp; os_;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; };</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator_; <span class="comment">//!&lt; The current allocator. It is either user-supplied or equal to ownAllocator_.</span></div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* ownAllocator_; <span class="comment">//!&lt; Allocator owned by this Pointer.</span></div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a>* nameBuffer_; <span class="comment">//!&lt; A buffer containing all names in tokens.</span></div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160;<span class="comment"></span> <a class="code" href="structrapidjson_1_1_generic_pointer_1_1_token.html">Token</a>* tokens_; <span class="comment">//!&lt; A list of tokens.</span></div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> tokenCount_; <span class="comment">//!&lt; Number of tokens in tokens_.</span></div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> parseErrorOffset_; <span class="comment">//!&lt; Offset in code unit when parsing fail.</span></div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b">PointerParseErrorCode</a> parseErrorCode_; <span class="comment">//!&lt; Parsing error code.</span></div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160;<span class="comment"></span>};</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160;<span class="comment">//! GenericPointer for Value (UTF-8, default allocator).</span></div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;Value&gt;</a> <a class="code" href="classrapidjson_1_1_generic_pointer.html">Pointer</a>;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;<span class="comment">//!@name Helper functions for GenericPointer</span></div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;<span class="comment"></span><span class="comment">//@{</span></div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; CreateValueByPointer(T&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>&amp; pointer, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856">Create</a>(root, a);</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;}</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; CreateValueByPointer(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>(source, N - 1).Create(root, a);</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;}</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;<span class="comment">// No allocator parameter</span></div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; CreateValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>&amp; pointer) {</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856">Create</a>(document);</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;}</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; CreateValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N]) {</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>(source, N - 1).Create(document);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;}</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;<span class="keyword">typename</span> T::ValueType* GetValueByPointer(T&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>&amp; pointer, <span class="keywordtype">size_t</span>* unresolvedTokenIndex = 0) {</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd">Get</a>(root, unresolvedTokenIndex);</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;}</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;<span class="keyword">const</span> <span class="keyword">typename</span> T::ValueType* GetValueByPointer(<span class="keyword">const</span> T&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>&amp; pointer, <span class="keywordtype">size_t</span>* unresolvedTokenIndex = 0) {</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd">Get</a>(root, unresolvedTokenIndex);</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;}</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160;</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160;<span class="keyword">typename</span> T::ValueType* GetValueByPointer(T&amp; root, <span class="keyword">const</span> CharType (&amp;source)[N], <span class="keywordtype">size_t</span>* unresolvedTokenIndex = 0) {</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>(source, N - 1).Get(root, unresolvedTokenIndex);</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;}</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;<span class="keyword">const</span> <span class="keyword">typename</span> T::ValueType* GetValueByPointer(<span class="keyword">const</span> T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keywordtype">size_t</span>* unresolvedTokenIndex = 0) {</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>(source, N - 1).Get(root, unresolvedTokenIndex);</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;}</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; GetValueByPointerWithDefault(T&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> T::ValueType&amp; defaultValue, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2">GetWithDefault</a>(root, defaultValue, a);</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;}</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; GetValueByPointerWithDefault(T&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> T::Ch* defaultValue, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2">GetWithDefault</a>(root, defaultValue, a);</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160;}</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; GetValueByPointerWithDefault(T&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>&amp; pointer, <span class="keyword">const</span> std::basic_string&lt;typename T::Ch&gt;&amp; defaultValue, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2">GetWithDefault</a>(root, defaultValue, a);</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160;}</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> T2&gt;</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> T::ValueType&amp;))</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;GetValueByPointerWithDefault(T&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>&amp; pointer, T2 defaultValue, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2">GetWithDefault</a>(root, defaultValue, a);</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;}</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; GetValueByPointerWithDefault(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> T::ValueType&amp; defaultValue, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>(source, N - 1).GetWithDefault(root, defaultValue, a);</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;}</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160;</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; GetValueByPointerWithDefault(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> T::Ch* defaultValue, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>(source, N - 1).GetWithDefault(root, defaultValue, a);</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;}</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; GetValueByPointerWithDefault(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> std::basic_string&lt;typename T::Ch&gt;&amp; defaultValue, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>(source, N - 1).GetWithDefault(root, defaultValue, a);</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;}</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160;</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N, <span class="keyword">typename</span> T2&gt;</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> T::ValueType&amp;))</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;GetValueByPointerWithDefault(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], T2 defaultValue, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>(source, N - 1).GetWithDefault(root, defaultValue, a);</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160;}</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;<span class="comment">// No allocator parameter</span></div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; GetValueByPointerWithDefault(DocumentType&amp; document, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::ValueType&amp; defaultValue) {</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2">GetWithDefault</a>(document, defaultValue);</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;}</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; GetValueByPointerWithDefault(DocumentType&amp; document, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::Ch* defaultValue) {</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2">GetWithDefault</a>(document, defaultValue);</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160;}</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160;</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; GetValueByPointerWithDefault(DocumentType&amp; document, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>&amp; pointer, <span class="keyword">const</span> std::basic_string&lt;typename DocumentType::Ch&gt;&amp; defaultValue) {</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2">GetWithDefault</a>(document, defaultValue);</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160;}</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> T2&gt;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> DocumentType::ValueType&amp;))</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;GetValueByPointerWithDefault(DocumentType&amp; document, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>&amp; pointer, T2 defaultValue) {</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2">GetWithDefault</a>(document, defaultValue);</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160;}</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; GetValueByPointerWithDefault(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::ValueType&amp; defaultValue) {</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>(source, N - 1).GetWithDefault(document, defaultValue);</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160;}</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; GetValueByPointerWithDefault(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::Ch* defaultValue) {</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>(source, N - 1).GetWithDefault(document, defaultValue);</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160;}</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; GetValueByPointerWithDefault(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> std::basic_string&lt;typename DocumentType::Ch&gt;&amp; defaultValue) {</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>(source, N - 1).GetWithDefault(document, defaultValue);</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;}</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160;</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N, <span class="keyword">typename</span> T2&gt;</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> DocumentType::ValueType&amp;))</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;GetValueByPointerWithDefault(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], T2 defaultValue) {</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>(source, N - 1).GetWithDefault(document, defaultValue);</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160;}</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>&amp; pointer, <span class="keyword">typename</span> T::ValueType&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663">Set</a>(root, value, a);</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160;}</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160;</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> T::ValueType&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663">Set</a>(root, value, a);</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160;}</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> T::Ch* value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663">Set</a>(root, value, a);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;}</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160;</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>&amp; pointer, <span class="keyword">const</span> std::basic_string&lt;typename T::Ch&gt;&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663">Set</a>(root, value, a);</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160;}</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> T2&gt;</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> T::ValueType&amp;))</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160;SetValueByPointer(T&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>&amp; pointer, T2 value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663">Set</a>(root, value, a);</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;}</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">typename</span> T::ValueType&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>(source, N - 1).Set(root, value, a);</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160;}</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> T::ValueType&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>(source, N - 1).Set(root, value, a);</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160;}</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160;</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> T::Ch* value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>(source, N - 1).Set(root, value, a);</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;}</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SetValueByPointer(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> std::basic_string&lt;typename T::Ch&gt;&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>(source, N - 1).Set(root, value, a);</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;}</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N, <span class="keyword">typename</span> T2&gt;</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> T::ValueType&amp;))</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;SetValueByPointer(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], T2 value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>(source, N - 1).Set(root, value, a);</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160;}</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160;<span class="comment">// No allocator parameter</span></div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160;</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>&amp; pointer, <span class="keyword">typename</span> DocumentType::ValueType&amp; value) {</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663">Set</a>(document, value);</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;}</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::ValueType&amp; value) {</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663">Set</a>(document, value);</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;}</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160;</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>&amp; pointer, <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::Ch* value) {</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663">Set</a>(document, value);</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;}</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>&amp; pointer, <span class="keyword">const</span> std::basic_string&lt;typename DocumentType::Ch&gt;&amp; value) {</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663">Set</a>(document, value);</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160;}</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> T2&gt;</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> DocumentType::ValueType&amp;))</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160;SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>&amp; pointer, T2 value) {</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663">Set</a>(document, value);</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160;}</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">typename</span> DocumentType::ValueType&amp; value) {</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>(source, N - 1).Set(document, value);</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160;}</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160;</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::ValueType&amp; value) {</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>(source, N - 1).Set(document, value);</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;}</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> <span class="keyword">typename</span> DocumentType::Ch* value) {</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>(source, N - 1).Set(document, value);</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;}</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">const</span> std::basic_string&lt;typename DocumentType::Ch&gt;&amp; value) {</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>(source, N - 1).Set(document, value);</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;}</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N, <span class="keyword">typename</span> T2&gt;</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr&lt;internal::IsPointer&lt;T2&gt;, internal::IsGenericValue&lt;T2&gt; &gt;), (<span class="keyword">typename</span> DocumentType::ValueType&amp;))</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;SetValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], T2 value) {</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>(source, N - 1).Set(document, value);</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;}</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SwapValueByPointer(T&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>&amp; pointer, <span class="keyword">typename</span> T::ValueType&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a4690cd1d6c85168ebd2ce0afe186a4fa">Swap</a>(root, value, a);</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;}</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;<span class="keyword">typename</span> T::ValueType&amp; SwapValueByPointer(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">typename</span> T::ValueType&amp; value, <span class="keyword">typename</span> T::AllocatorType&amp; a) {</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>(source, N - 1).Swap(root, value, a);</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;}</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160;</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType&gt;</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SwapValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>&amp; pointer, <span class="keyword">typename</span> DocumentType::ValueType&amp; value) {</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a4690cd1d6c85168ebd2ce0afe186a4fa">Swap</a>(document, value);</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;}</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160;</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> DocumentType, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;<span class="keyword">typename</span> DocumentType::ValueType&amp; SwapValueByPointer(DocumentType&amp; document, <span class="keyword">const</span> CharType(&amp;source)[N], <span class="keyword">typename</span> DocumentType::ValueType&amp; value) {</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename DocumentType::ValueType&gt;</a>(source, N - 1).Swap(document, value);</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;}</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;<span class="comment">//////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;<span class="keywordtype">bool</span> EraseValueByPointer(T&amp; root, <span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>&amp; pointer) {</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">return</span> pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a923a1100c029a28e25894708bdce784c">Erase</a>(root);</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;}</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160;</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> CharType, <span class="keywordtype">size_t</span> N&gt;</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;<span class="keywordtype">bool</span> EraseValueByPointer(T&amp; root, <span class="keyword">const</span> CharType(&amp;source)[N]) {</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_generic_pointer.html">GenericPointer&lt;typename T::ValueType&gt;</a>(source, N - 1).Erase(root);</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;}</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;<span class="comment">//@}</span></div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_POINTER_H_</span></div><div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ggade540ee4cc2a416c23b8ee2c12393c7ba907c9fe4e541b257513e3a18635379f7"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba907c9fe4e541b257513e3a18635379f7">rapidjson::kPointerParseErrorInvalidEscape</a></div><div class="ttdoc">Invalid escape </div><div class="ttdef"><b>Definition:</b> pointer.h:43</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_af09e26073a7263fc9e8f0c14160f45bd"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd">rapidjson::GenericPointer::Get</a></div><div class="ttdeci">ValueType * Get(ValueType &amp;root, size_t *unresolvedTokenIndex=0) const</div><div class="ttdoc">Query a value in a subtree. </div><div class="ttdef"><b>Definition:</b> pointer.h:479</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gade540ee4cc2a416c23b8ee2c12393c7b"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b">rapidjson::PointerParseErrorCode</a></div><div class="ttdeci">PointerParseErrorCode</div><div class="ttdoc">Error code of parsing. </div><div class="ttdef"><b>Definition:</b> pointer.h:39</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a6df9f6a01d1b5945811055e1cf8aead6"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a6df9f6a01d1b5945811055e1cf8aead6">rapidjson::GenericPointer::GenericPointer</a></div><div class="ttdeci">GenericPointer(const Token *tokens, size_t tokenCount)</div><div class="ttdoc">Constructor with user-supplied tokens. </div><div class="ttdef"><b>Definition:</b> pointer.h:165</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_ac19f479c656ddd6a8bd9888a9fb27f96"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#ac19f479c656ddd6a8bd9888a9fb27f96">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(ValueType &amp;root, const ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const </div><div class="ttdoc">Set a value in a subtree, with copy semantics. </div><div class="ttdef"><b>Definition:</b> pointer.h:615</div></div>
+<div class="ttc" id="structrapidjson_1_1_generic_string_stream_html"><div class="ttname"><a href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream</a></div><div class="ttdoc">Read-only string stream. </div><div class="ttdef"><b>Definition:</b> fwd.h:47</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_pointer_1_1_token_html_aceb59c9796418c20da27b03bf1948fe8"><div class="ttname"><a href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8">rapidjson::GenericPointer::Token::name</a></div><div class="ttdeci">const Ch * name</div><div class="ttdoc">Name of the token. It has null character at the end but it can contain null character. </div><div class="ttdef"><b>Definition:</b> pointer.h:100</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a00ad17ea227d2556404df7cc64c6aeb5"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a00ad17ea227d2556404df7cc64c6aeb5">rapidjson::GenericPointer::GenericPointer</a></div><div class="ttdeci">GenericPointer(const Ch *source, size_t length, Allocator *allocator=0)</div><div class="ttdoc">Constructor that parses a string or URI fragment representation, with length of the source string...</div><div class="ttdef"><b>Definition:</b> pointer.h:139</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_adc01f1be5f05127f849a2bf10a97e89b"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#adc01f1be5f05127f849a2bf10a97e89b">rapidjson::GenericPointer::GetParseErrorOffset</a></div><div class="ttdeci">size_t GetParseErrorOffset() const </div><div class="ttdoc">Get the parsing error offset in code unit. </div><div class="ttdef"><b>Definition:</b> pointer.h:306</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a2949cb104effdf323781ae70ce469ed9"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a2949cb104effdf323781ae70ce469ed9">rapidjson::GenericPointer::GetTokenCount</a></div><div class="ttdeci">size_t GetTokenCount() const </div><div class="ttdoc">Get the number of tokens. </div><div class="ttdef"><b>Definition:</b> pointer.h:323</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_ad96e263ba29209259fd4abe63d7f4458"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#ad96e263ba29209259fd4abe63d7f4458">rapidjson::GenericPointer::GetWithDefault</a></div><div class="ttdeci">ValueType &amp; GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *defaultValue) const </div><div class="ttdoc">Query a value in a document with default null-terminated string. </div><div class="ttdef"><b>Definition:</b> pointer.h:573</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_ad0bd4948e56dce4b75b39f744050322c"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#ad0bd4948e56dce4b75b39f744050322c">rapidjson::GenericPointer::Append</a></div><div class="ttdeci">GenericPointer Append(SizeType index, Allocator *allocator=0) const </div><div class="ttdoc">Append a index token, and return a new Pointer. </div><div class="ttdef"><b>Definition:</b> pointer.h:264</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a96e6f4c01632be39df82917f833710bc"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a96e6f4c01632be39df82917f833710bc">rapidjson::GenericPointer::Append</a></div><div class="ttdeci">GenericPointer Append(const Ch *name, SizeType length, Allocator *allocator=0) const </div><div class="ttdoc">Append a name token with length, and return a new Pointer. </div><div class="ttdef"><b>Definition:</b> pointer.h:229</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_ab914090864d0ded21a376867c33ad865"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#ab914090864d0ded21a376867c33ad865">rapidjson::GenericPointer::GetWithDefault</a></div><div class="ttdeci">ValueType &amp; GetWithDefault(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const </div><div class="ttdoc">Query a value in a subtree with default std::basic_string. </div><div class="ttdef"><b>Definition:</b> pointer.h:548</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a64f7bb98da73976b59597cdde96a40b8"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a64f7bb98da73976b59597cdde96a40b8">rapidjson::GenericPointer::Append</a></div><div class="ttdeci">GenericPointer Append(const Token &amp;token, Allocator *allocator=0) const </div><div class="ttdoc">Append a token and return a new Pointer. </div><div class="ttdef"><b>Definition:</b> pointer.h:211</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a07fa31c03c96e260f234087882dce408"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a07fa31c03c96e260f234087882dce408">rapidjson::GenericPointer::GetWithDefault</a></div><div class="ttdeci">ValueType &amp; GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;defaultValue) const</div><div class="ttdoc">Query a value in a document with default value. </div><div class="ttdef"><b>Definition:</b> pointer.h:567</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a3bb15fa5592f2bfad6f2c9af7940b952"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a3bb15fa5592f2bfad6f2c9af7940b952">rapidjson::GenericPointer::operator==</a></div><div class="ttdeci">bool operator==(const GenericPointer &amp;rhs) const</div><div class="ttdoc">Equality operator. </div><div class="ttdef"><b>Definition:</b> pointer.h:334</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a0e144b9956a5272c13ceff3b9306e748"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a0e144b9956a5272c13ceff3b9306e748">rapidjson::GenericPointer::~GenericPointer</a></div><div class="ttdeci">~GenericPointer()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> pointer.h:173</div></div>
-<div class="ttc" id="namespacerapidjson_html_a080910f74d2f5046e6724280159cf374"><div class="ttname"><a href="namespacerapidjson.html#a080910f74d2f5046e6724280159cf374">rapidjson::Pointer</a></div><div class="ttdeci">GenericPointer&lt; Value, CrtAllocator &gt; Pointer</div><div class="ttdoc">GenericPointer for Value (UTF-8, default allocator). </div><div class="ttdef"><b>Definition:</b> fwd.h:126</div></div>
+<div class="ttc" id="structrapidjson_1_1_transcoder_html"><div class="ttname"><a href="structrapidjson_1_1_transcoder.html">rapidjson::Transcoder</a></div><div class="ttdoc">Encoding conversion. </div><div class="ttdef"><b>Definition:</b> encodings.h:658</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a4690cd1d6c85168ebd2ce0afe186a4fa"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a4690cd1d6c85168ebd2ce0afe186a4fa">rapidjson::GenericPointer::Swap</a></div><div class="ttdeci">ValueType &amp; Swap(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const</div><div class="ttdoc">Swap a value with a value in a subtree. </div><div class="ttdef"><b>Definition:</b> pointer.h:692</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_acdac4ea8e57920194827be4afb942d97"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#acdac4ea8e57920194827be4afb942d97">rapidjson::GenericPointer::GetAllocator</a></div><div class="ttdeci">Allocator &amp; GetAllocator()</div><div class="ttdoc">Get the allocator of this pointer. </div><div class="ttdef"><b>Definition:</b> pointer.h:314</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a0759b70ec70a6eb7a7545a34764ac663"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const</div><div class="ttdoc">Set a value in a subtree, with move semantics. </div><div class="ttdef"><b>Definition:</b> pointer.h:610</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a73073ca3c9e47eba7c27c16151b269ac"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a73073ca3c9e47eba7c27c16151b269ac">rapidjson::GenericPointer::Stringify</a></div><div class="ttdeci">bool Stringify(OutputStream &amp;os) const</div><div class="ttdoc">Stringify the pointer into string representation. </div><div class="ttdef"><b>Definition:</b> pointer.h:367</div></div>
<div class="ttc" id="namespacerapidjson_html_a44eb33eaa523e36d466b1ced64b85c84"><div class="ttname"><a href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">rapidjson::SizeType</a></div><div class="ttdeci">unsigned SizeType</div><div class="ttdoc">Size type (for string lengths, array sizes, etc.) </div><div class="ttdef"><b>Definition:</b> rapidjson.h:389</div></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">rapidjson::kPointerParseErrorNone</a></div><div class="ttdoc">The parse is successful. </div><div class="ttdef"><b>Definition:</b> pointer.h:40</div></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ggade540ee4cc2a416c23b8ee2c12393c7bae244a98f53279fda5a750f847b81c54f"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7bae244a98f53279fda5a750f847b81c54f">rapidjson::kPointerParseErrorCharacterMustPercentEncode</a></div><div class="ttdoc">A character must percent encoded in URI fragment. </div><div class="ttdef"><b>Definition:</b> pointer.h:45</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_ac4b35d8051c17a8c9408f71ae8541d19"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#ac4b35d8051c17a8c9408f71ae8541d19">rapidjson::GenericPointer::Append</a></div><div class="ttdeci">GenericPointer Append(const std::basic_string&lt; Ch &gt; &amp;name, Allocator *allocator=0) const </div><div class="ttdoc">Append a name token, and return a new Pointer. </div><div class="ttdef"><b>Definition:</b> pointer.h:253</div></div>
+<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba9094f236b2ec70c42f1ea91dffc1e39b">rapidjson::kPointerParseErrorNone</a></div><div class="ttdoc">The parse is successful </div><div class="ttdef"><b>Definition:</b> pointer.h:40</div></div>
+<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ggade540ee4cc2a416c23b8ee2c12393c7bae244a98f53279fda5a750f847b81c54f"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7bae244a98f53279fda5a750f847b81c54f">rapidjson::kPointerParseErrorCharacterMustPercentEncode</a></div><div class="ttdoc">A character must percent encoded in URI fragment </div><div class="ttdef"><b>Definition:</b> pointer.h:45</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_pointer_1_1_token_html_ad866d674dbddf9690ad571b65e968600"><div class="ttname"><a href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">rapidjson::GenericPointer::Token::length</a></div><div class="ttdeci">SizeType length</div><div class="ttdoc">Length of the name. </div><div class="ttdef"><b>Definition:</b> pointer.h:101</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_ac817b123619422f03c44a46978d9fbd0"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#ac817b123619422f03c44a46978d9fbd0">rapidjson::GenericPointer::GetParseErrorCode</a></div><div class="ttdeci">PointerParseErrorCode GetParseErrorCode() const </div><div class="ttdoc">Get the parsing error code. </div><div class="ttdef"><b>Definition:</b> pointer.h:309</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a850f78846c5548565f8395be5f3427b7"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">rapidjson::GenericPointer::Ch</a></div><div class="ttdeci">ValueType::Ch Ch</div><div class="ttdoc">Character type from Value. </div><div class="ttdef"><b>Definition:</b> pointer.h:84</div></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ggade540ee4cc2a416c23b8ee2c12393c7ba2f2f8b238e201b7d540e8914bbfd2bed"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba2f2f8b238e201b7d540e8914bbfd2bed">rapidjson::kPointerParseErrorTokenMustBeginWithSolidus</a></div><div class="ttdoc">A token must begin with a &#39;/&#39;. </div><div class="ttdef"><b>Definition:</b> pointer.h:42</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a2b5a8fb688e6b6a1b077ce103df455c3"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a2b5a8fb688e6b6a1b077ce103df455c3">rapidjson::GenericPointer::Create</a></div><div class="ttdeci">ValueType &amp; Create(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, bool *alreadyExist=0) const </div><div class="ttdoc">Creates a value in a document. </div><div class="ttdef"><b>Definition:</b> pointer.h:456</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a2ee50bcbfa76119094eef0284eeddfbe"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a2ee50bcbfa76119094eef0284eeddfbe">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *value) const </div><div class="ttdoc">Set a null-terminated string in a document. </div><div class="ttdef"><b>Definition:</b> pointer.h:655</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_ad9f28da15453d91c3669618a6f48bfcc"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#ad9f28da15453d91c3669618a6f48bfcc">rapidjson::GenericPointer::Swap</a></div><div class="ttdeci">ValueType &amp; Swap(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const </div><div class="ttdoc">Swap a value with a value in a document. </div><div class="ttdef"><b>Definition:</b> pointer.h:698</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a3733a6d6cf2a3a13f2a59b109b56d800"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a3733a6d6cf2a3a13f2a59b109b56d800">rapidjson::GenericPointer::Create</a></div><div class="ttdeci">ValueType &amp; Create(ValueType &amp;root, typename ValueType::AllocatorType &amp;allocator, bool *alreadyExist=0) const </div><div class="ttdoc">Create a value in a subtree. </div><div class="ttdef"><b>Definition:</b> pointer.h:401</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a40413907ac94e218f93625d3a5c8c454"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a40413907ac94e218f93625d3a5c8c454">rapidjson::GenericPointer::StringifyUriFragment</a></div><div class="ttdeci">bool StringifyUriFragment(OutputStream &amp;os) const </div><div class="ttdoc">Stringify the pointer into URI fragment representation. </div><div class="ttdef"><b>Definition:</b> pointer.h:377</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_af649a48d77aa856cddaa748ad6b0d6ac"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#af649a48d77aa856cddaa748ad6b0d6ac">rapidjson::GenericPointer::GetParseErrorCode</a></div><div class="ttdeci">PointerParseErrorCode GetParseErrorCode() const</div><div class="ttdoc">Get the parsing error code. </div><div class="ttdef"><b>Definition:</b> pointer.h:309</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a4f0ef2b49a9561d570217249343d9335"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a4f0ef2b49a9561d570217249343d9335">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(ValueType &amp;root, const Ch *value, typename ValueType::AllocatorType &amp;allocator) const</div><div class="ttdoc">Set a null-terminated string in a subtree. </div><div class="ttdef"><b>Definition:</b> pointer.h:620</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a850f78846c5548565f8395be5f3427b7"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">rapidjson::GenericPointer::Ch</a></div><div class="ttdeci">ValueType::Ch Ch</div><div class="ttdoc">Character type from Value </div><div class="ttdef"><b>Definition:</b> pointer.h:84</div></div>
+<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ggade540ee4cc2a416c23b8ee2c12393c7ba2f2f8b238e201b7d540e8914bbfd2bed"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba2f2f8b238e201b7d540e8914bbfd2bed">rapidjson::kPointerParseErrorTokenMustBeginWithSolidus</a></div><div class="ttdoc">A token must begin with a &amp;#39;/&amp;#39; </div><div class="ttdef"><b>Definition:</b> pointer.h:42</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_afb649edbdbe09a6840b12d67c9f2501e"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#afb649edbdbe09a6840b12d67c9f2501e">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *value) const</div><div class="ttdoc">Set a null-terminated string in a document. </div><div class="ttdef"><b>Definition:</b> pointer.h:655</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a791e40c10682b9db0adf2b6e0b8b3d78"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a791e40c10682b9db0adf2b6e0b8b3d78">rapidjson::GenericPointer::GetTokenCount</a></div><div class="ttdeci">size_t GetTokenCount() const</div><div class="ttdoc">Get the number of tokens. </div><div class="ttdef"><b>Definition:</b> pointer.h:323</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_af19e2313004885cfa9c45f50b30b32e2"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#af19e2313004885cfa9c45f50b30b32e2">rapidjson::GenericPointer::GetWithDefault</a></div><div class="ttdeci">ValueType &amp; GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;defaultValue) const</div><div class="ttdoc">Query a value in a document with default std::basic_string. </div><div class="ttdef"><b>Definition:</b> pointer.h:580</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a2ac51ee7af5b9d7628140ae8501edcf4"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a2ac51ee7af5b9d7628140ae8501edcf4">rapidjson::GenericPointer::GetWithDefault</a></div><div class="ttdeci">ValueType &amp; GetWithDefault(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const</div><div class="ttdoc">Query a value in a subtree with default std::basic_string. </div><div class="ttdef"><b>Definition:</b> pointer.h:548</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a0ae84f686e1af593b9445c2c502101b2"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a0ae84f686e1af593b9445c2c502101b2">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;value, typename ValueType::AllocatorType &amp;allocator) const</div><div class="ttdoc">Set a std::basic_string in a subtree. </div><div class="ttdef"><b>Definition:</b> pointer.h:626</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html_afb91480cc6242ca96ffc603e649c319f"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f">rapidjson::GenericValue::SetString</a></div><div class="ttdeci">GenericValue &amp; SetString(const Ch *s, SizeType length)</div><div class="ttdoc">Set this value as a string without copying source string. </div><div class="ttdef"><b>Definition:</b> document.h:1754</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a399790c5fe8076d91a58c621c0c2a79e"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">rapidjson::GenericPointer::EncodingType</a></div><div class="ttdeci">ValueType::EncodingType EncodingType</div><div class="ttdoc">Encoding type from Value. </div><div class="ttdef"><b>Definition:</b> pointer.h:83</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a399790c5fe8076d91a58c621c0c2a79e"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e">rapidjson::GenericPointer::EncodingType</a></div><div class="ttdeci">ValueType::EncodingType EncodingType</div><div class="ttdoc">Encoding type from Value </div><div class="ttdef"><b>Definition:</b> pointer.h:83</div></div>
<div class="ttc" id="rapidjson_8h_html_abdc7cd7902748ffe6626d71c59a73c3b"><div class="ttname"><a href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a></div><div class="ttdeci">#define RAPIDJSON_NEW(TypeName)</div><div class="ttdoc">! customization point for global new </div><div class="ttdef"><b>Definition:</b> rapidjson.h:599</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a5e9e740bec7f5a1703088171e0b2557b"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a5e9e740bec7f5a1703088171e0b2557b">rapidjson::GenericPointer::GetWithDefault</a></div><div class="ttdeci">ValueType &amp; GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;defaultValue) const </div><div class="ttdoc">Query a value in a document with default std::basic_string. </div><div class="ttdef"><b>Definition:</b> pointer.h:580</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a3e74f5b9c9fd3307f6ebac61a7131524"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a3e74f5b9c9fd3307f6ebac61a7131524">rapidjson::GenericPointer::operator!=</a></div><div class="ttdeci">bool operator!=(const GenericPointer &amp;rhs) const </div><div class="ttdoc">Inequality operator. </div><div class="ttdef"><b>Definition:</b> pointer.h:354</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_aaa4e92344cc07e98adb5b9f5b93927b8"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#aaa4e92344cc07e98adb5b9f5b93927b8">rapidjson::GenericPointer::GetWithDefault</a></div><div class="ttdeci">ValueType &amp; GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *defaultValue) const</div><div class="ttdoc">Query a value in a document with default null-terminated string. </div><div class="ttdef"><b>Definition:</b> pointer.h:573</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_ae985c27c1d061b93ba4f8875cfa5f7b5"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#ae985c27c1d061b93ba4f8875cfa5f7b5">rapidjson::GenericPointer::StringifyUriFragment</a></div><div class="ttdeci">bool StringifyUriFragment(OutputStream &amp;os) const</div><div class="ttdoc">Stringify the pointer into URI fragment representation. </div><div class="ttdef"><b>Definition:</b> pointer.h:377</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_adc4bf5a3892f5626a8517f90c88e4b7f"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#adc4bf5a3892f5626a8517f90c88e4b7f">rapidjson::GenericPointer::Create</a></div><div class="ttdeci">ValueType &amp; Create(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, bool *alreadyExist=0) const</div><div class="ttdoc">Creates a value in a document. </div><div class="ttdef"><b>Definition:</b> pointer.h:456</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a8f831aae14afc493a82b5fb6aa9c3c43"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a8f831aae14afc493a82b5fb6aa9c3c43">rapidjson::GenericPointer::GenericPointer</a></div><div class="ttdeci">GenericPointer(const Ch *source, Allocator *allocator=0)</div><div class="ttdoc">Constructor that parses a string or URI fragment representation. </div><div class="ttdef"><b>Definition:</b> pointer.h:116</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a618808f066fb1104d36f012cced3b27a"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a618808f066fb1104d36f012cced3b27a">rapidjson::GenericPointer::Append</a></div><div class="ttdeci">GenericPointer Append(const ValueType &amp;token, Allocator *allocator=0) const</div><div class="ttdoc">Append a token by value, and return a new Pointer </div><div class="ttdef"><b>Definition:</b> pointer.h:289</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_pointer_html"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer</a></div><div class="ttdoc">Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator. </div><div class="ttdef"><b>Definition:</b> fwd.h:126</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a112f364fe9aeabba2a72e83bcbeb8fda"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a112f364fe9aeabba2a72e83bcbeb8fda">rapidjson::GenericPointer::IsValid</a></div><div class="ttdeci">bool IsValid() const </div><div class="ttdoc">Check whether this is a valid pointer. </div><div class="ttdef"><b>Definition:</b> pointer.h:303</div></div>
-<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
+<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a23194bb6ce6c07c78981344fe80ac3a6"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a23194bb6ce6c07c78981344fe80ac3a6">rapidjson::GenericPointer::operator=</a></div><div class="ttdeci">GenericPointer &amp; operator=(const GenericPointer &amp;rhs)</div><div class="ttdoc">Assignment operator. </div><div class="ttdef"><b>Definition:</b> pointer.h:180</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a151f17dc1c655b9dc0a9a3cf06e6bdcb"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a151f17dc1c655b9dc0a9a3cf06e6bdcb">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;value, typename ValueType::AllocatorType &amp;allocator) const </div><div class="ttdoc">Set a std::basic_string in a subtree. </div><div class="ttdef"><b>Definition:</b> pointer.h:626</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_af89e3e8f87bb833d4eb4bb2fd4074431"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#af89e3e8f87bb833d4eb4bb2fd4074431">rapidjson::GenericPointer::GetWithDefault</a></div><div class="ttdeci">ValueType &amp; GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;defaultValue) const </div><div class="ttdoc">Query a value in a document with default value. </div><div class="ttdef"><b>Definition:</b> pointer.h:567</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a3a7ff4e0b700c2975cf455fef23226b4"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a3a7ff4e0b700c2975cf455fef23226b4">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;value) const</div><div class="ttdoc">Sets a std::basic_string in a document. </div><div class="ttdef"><b>Definition:</b> pointer.h:662</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">rapidjson::kObjectType</a></div><div class="ttdoc">object </div><div class="ttdef"><b>Definition:</b> rapidjson.h:620</div></div>
<div class="ttc" id="document_8h_html"><div class="ttname"><a href="document_8h.html">document.h</a></div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a0ee51e6c996d4665b398dae5dbf00bc4"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a0ee51e6c996d4665b398dae5dbf00bc4">rapidjson::GenericPointer::GetTokens</a></div><div class="ttdeci">const Token * GetTokens() const </div><div class="ttdoc">Get the token array (const version only). </div><div class="ttdef"><b>Definition:</b> pointer.h:320</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a83ff802b8fcacd96e60ba1c2627a19f0"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a83ff802b8fcacd96e60ba1c2627a19f0">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;value) const </div><div class="ttdoc">Set a value in a document, with copy semantics. </div><div class="ttdef"><b>Definition:</b> pointer.h:649</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a3baa23b919dc9ba9421b8e6fbf3e0605"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a3baa23b919dc9ba9421b8e6fbf3e0605">rapidjson::GenericPointer::Append</a></div><div class="ttdeci">GenericPointer Append(const ValueType &amp;token, Allocator *allocator=0) const </div><div class="ttdoc">Append a token by value, and return a new Pointer. </div><div class="ttdef"><b>Definition:</b> pointer.h:289</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_aa077ce171ea25cf501c12f2d5df7f248"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#aa077ce171ea25cf501c12f2d5df7f248">rapidjson::GenericPointer::GenericPointer</a></div><div class="ttdeci">GenericPointer(Allocator *allocator=0)</div><div class="ttdoc">Default constructor. </div><div class="ttdef"><b>Definition:</b> pointer.h:109</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a98454081fb9557b3d2285c4e89bd34f6"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a98454081fb9557b3d2285c4e89bd34f6">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(ValueType &amp;root, const Ch *value, typename ValueType::AllocatorType &amp;allocator) const </div><div class="ttdoc">Set a null-terminated string in a subtree. </div><div class="ttdef"><b>Definition:</b> pointer.h:620</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a30f4eac82e9fded60dead3f7d1cb3941"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a30f4eac82e9fded60dead3f7d1cb3941">rapidjson::GenericPointer::Append</a></div><div class="ttdeci">GenericPointer Append(const Ch *name, SizeType length, Allocator *allocator=0) const</div><div class="ttdoc">Append a name token with length, and return a new Pointer </div><div class="ttdef"><b>Definition:</b> pointer.h:229</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_abdc025b8391b271f1134a7ba7039c27f"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#abdc025b8391b271f1134a7ba7039c27f">rapidjson::GenericPointer::GetWithDefault</a></div><div class="ttdeci">ValueType &amp; GetWithDefault(ValueType &amp;root, const Ch *defaultValue, typename ValueType::AllocatorType &amp;allocator) const</div><div class="ttdoc">Query a value in a subtree with default null-terminated string. </div><div class="ttdef"><b>Definition:</b> pointer.h:540</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a75caef2a047c56466f0b599bdda882c9"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a75caef2a047c56466f0b599bdda882c9">rapidjson::GenericPointer::GetParseErrorOffset</a></div><div class="ttdeci">size_t GetParseErrorOffset() const</div><div class="ttdoc">Get the parsing error offset in code unit. </div><div class="ttdef"><b>Definition:</b> pointer.h:306</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html">rapidjson::GenericDocument</a></div><div class="ttdoc">A document for parsing JSON text as DOM. </div><div class="ttdef"><b>Definition:</b> document.h:70</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">rapidjson::kArrayType</a></div><div class="ttdoc">array </div><div class="ttdef"><b>Definition:</b> rapidjson.h:621</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a18494d59f0317c037fa3bd037e436cec"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a18494d59f0317c037fa3bd037e436cec">rapidjson::GenericPointer::Append</a></div><div class="ttdeci">GenericPointer Append(const std::basic_string&lt; Ch &gt; &amp;name, Allocator *allocator=0) const</div><div class="ttdoc">Append a name token, and return a new Pointer </div><div class="ttdef"><b>Definition:</b> pointer.h:253</div></div>
<div class="ttc" id="rapidjson_8h_html_a52c941c3fdd646527cdcd42aa846a28a"><div class="ttname"><a href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a></div><div class="ttdeci">#define RAPIDJSON_DELETE(x)</div><div class="ttdoc">! customization point for global delete </div><div class="ttdef"><b>Definition:</b> rapidjson.h:603</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_af0d009a8322a7b61f63a9539ca8bddaf"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#af0d009a8322a7b61f63a9539ca8bddaf">rapidjson::GenericPointer::operator==</a></div><div class="ttdeci">bool operator==(const GenericPointer &amp;rhs) const </div><div class="ttdoc">Equality operator. </div><div class="ttdef"><b>Definition:</b> pointer.h:334</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_ab9166f175517b1bff8c2219ea769e506"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#ab9166f175517b1bff8c2219ea769e506">rapidjson::GenericPointer::Stringify</a></div><div class="ttdeci">bool Stringify(OutputStream &amp;os) const </div><div class="ttdoc">Stringify the pointer into string representation. </div><div class="ttdef"><b>Definition:</b> pointer.h:367</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a29d7ee42eb5646f829aeca6c6989555a"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a29d7ee42eb5646f829aeca6c6989555a">rapidjson::GenericPointer::Swap</a></div><div class="ttdeci">ValueType &amp; Swap(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const</div><div class="ttdoc">Swap a value with a value in a document. </div><div class="ttdef"><b>Definition:</b> pointer.h:698</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a9f8119f2c714f78794854828789b832e"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a9f8119f2c714f78794854828789b832e">rapidjson::GenericPointer::GenericPointer</a></div><div class="ttdeci">GenericPointer(const GenericPointer &amp;rhs, Allocator *allocator=0)</div><div class="ttdoc">Copy constructor. </div><div class="ttdef"><b>Definition:</b> pointer.h:168</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_document_html_ad92c6cd025d411258d1f2ad890e2ee3f"><div class="ttname"><a href="classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f">rapidjson::GenericDocument::GetAllocator</a></div><div class="ttdeci">Allocator &amp; GetAllocator()</div><div class="ttdoc">Get the allocator of this document. </div><div class="ttdef"><b>Definition:</b> document.h:2374</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_add58edd4f813645f8ffead6956967f96"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#add58edd4f813645f8ffead6956967f96">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const </div><div class="ttdoc">Set a value in a document, with move semantics. </div><div class="ttdef"><b>Definition:</b> pointer.h:643</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_af2f51d68c82136086bed9593719abd1a"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#af2f51d68c82136086bed9593719abd1a">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(ValueType &amp;root, const ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const</div><div class="ttdoc">Set a value in a subtree, with copy semantics. </div><div class="ttdef"><b>Definition:</b> pointer.h:615</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a7cb5eda2af1722e52efa591c4103ebec"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a7cb5eda2af1722e52efa591c4103ebec">rapidjson::GenericPointer::Append</a></div><div class="ttdeci">GenericPointer Append(const Token &amp;token, Allocator *allocator=0) const</div><div class="ttdoc">Append a token and return a new Pointer </div><div class="ttdef"><b>Definition:</b> pointer.h:211</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_aeefcd60e5ad37d80ec43f5315ae84809"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#aeefcd60e5ad37d80ec43f5315ae84809">rapidjson::GenericPointer::GenericPointer</a></div><div class="ttdeci">GenericPointer(const std::basic_string&lt; Ch &gt; &amp;source, Allocator *allocator=0)</div><div class="ttdoc">Constructor that parses a string or URI fragment representation. </div><div class="ttdef"><b>Definition:</b> pointer.h:127</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_pointer_1_1_token_html"><div class="ttname"><a href="structrapidjson_1_1_generic_pointer_1_1_token.html">rapidjson::GenericPointer::Token</a></div><div class="ttdoc">A token is the basic units of internal representation. </div><div class="ttdef"><b>Definition:</b> pointer.h:99</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_ae9f3e27a210a0974892c1260c2e4a39f"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#ae9f3e27a210a0974892c1260c2e4a39f">rapidjson::GenericPointer::GetWithDefault</a></div><div class="ttdeci">ValueType &amp; GetWithDefault(ValueType &amp;root, const Ch *defaultValue, typename ValueType::AllocatorType &amp;allocator) const </div><div class="ttdoc">Query a value in a subtree with default null-terminated string. </div><div class="ttdef"><b>Definition:</b> pointer.h:540</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_ab6982b814e41d8f64bea7d5faab93b1f"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#ab6982b814e41d8f64bea7d5faab93b1f">rapidjson::GenericPointer::Get</a></div><div class="ttdeci">const ValueType * Get(const ValueType &amp;root, size_t *unresolvedTokenIndex=0) const </div><div class="ttdoc">Query a const value in a const subtree. </div><div class="ttdef"><b>Definition:</b> pointer.h:514</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_aac2171a0ac38298b2d0ae063351ec176"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#aac2171a0ac38298b2d0ae063351ec176">rapidjson::GenericPointer::Get</a></div><div class="ttdeci">const ValueType * Get(const ValueType &amp;root, size_t *unresolvedTokenIndex=0) const</div><div class="ttdoc">Query a const value in a const subtree. </div><div class="ttdef"><b>Definition:</b> pointer.h:514</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a923a1100c029a28e25894708bdce784c"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a923a1100c029a28e25894708bdce784c">rapidjson::GenericPointer::Erase</a></div><div class="ttdeci">bool Erase(ValueType &amp;root) const</div><div class="ttdoc">Erase a value in a subtree. </div><div class="ttdef"><b>Definition:</b> pointer.h:711</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a8ca73989b4f3ffa5154a229f95f1e0c9"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a8ca73989b4f3ffa5154a229f95f1e0c9">rapidjson::GenericPointer::operator!=</a></div><div class="ttdeci">bool operator!=(const GenericPointer &amp;rhs) const</div><div class="ttdoc">Inequality operator. </div><div class="ttdef"><b>Definition:</b> pointer.h:354</div></div>
+<div class="ttc" id="structrapidjson_1_1_u_t_f8_html"><div class="ttname"><a href="structrapidjson_1_1_u_t_f8.html">rapidjson::UTF8</a></div><div class="ttdoc">UTF-8 encoding. </div><div class="ttdef"><b>Definition:</b> encodings.h:96</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_pointer_1_1_token_html_a50331c9e3dedc34d2c79745b2e58fb2d"><div class="ttname"><a href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">rapidjson::GenericPointer::Token::index</a></div><div class="ttdeci">SizeType index</div><div class="ttdoc">A valid array index, if it is not equal to kPointerInvalidIndex. </div><div class="ttdef"><b>Definition:</b> pointer.h:102</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_aec10492caf6e853935d9a360bbe73713"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#aec10492caf6e853935d9a360bbe73713">rapidjson::GenericPointer::Erase</a></div><div class="ttdeci">bool Erase(ValueType &amp;root) const </div><div class="ttdoc">Erase a value in a subtree. </div><div class="ttdef"><b>Definition:</b> pointer.h:711</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_ac07c300d43f04dad9caa0cb209cb2853"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#ac07c300d43f04dad9caa0cb209cb2853">rapidjson::GenericPointer::GetTokens</a></div><div class="ttdeci">const Token * GetTokens() const</div><div class="ttdoc">Get the token array (const version only). </div><div class="ttdef"><b>Definition:</b> pointer.h:320</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_string_ref_html"><div class="ttname"><a href="structrapidjson_1_1_generic_string_ref.html">rapidjson::GenericStringRef</a></div><div class="ttdoc">Reference to a constant string (not taking a copy) </div><div class="ttdef"><b>Definition:</b> document.h:257</div></div>
<div class="ttc" id="classrapidjson_1_1_allocator_html"><div class="ttname"><a href="classrapidjson_1_1_allocator.html">rapidjson::Allocator</a></div><div class="ttdoc">Concept for allocating, resizing and freeing memory block. </div></div>
<div class="ttc" id="classrapidjson_1_1_generic_value_html"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue</a></div><div class="ttdoc">Represents a JSON value. Use Value for UTF8 encoding and default allocator. </div><div class="ttdef"><b>Definition:</b> document.h:67</div></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ggade540ee4cc2a416c23b8ee2c12393c7ba29831a02b8ee23a05d552b47f4d64d28"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba29831a02b8ee23a05d552b47f4d64d28">rapidjson::kPointerParseErrorInvalidPercentEncoding</a></div><div class="ttdoc">Invalid percent encoding in URI fragment. </div><div class="ttdef"><b>Definition:</b> pointer.h:44</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_value_html_ad9399a2a69444c44a9db2f63c3aa3eae"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae">rapidjson::GenericValue::CopyFrom</a></div><div class="ttdeci">GenericValue &amp; CopyFrom(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs, Allocator &amp;allocator, bool copyConstStrings=false)</div><div class="ttdoc">Deep-copy assignment from Value. </div><div class="ttdef"><b>Definition:</b> document.h:863</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_aaaa5b0ecdfa6af45e7dabc1987c87cac"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#aaaa5b0ecdfa6af45e7dabc1987c87cac">rapidjson::GenericPointer::Swap</a></div><div class="ttdeci">ValueType &amp; Swap(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const </div><div class="ttdoc">Swap a value with a value in a subtree. </div><div class="ttdef"><b>Definition:</b> pointer.h:692</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a6c615761374ddce265d542f4b4b476b1"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a6c615761374ddce265d542f4b4b476b1">rapidjson::GenericPointer::GetWithDefault</a></div><div class="ttdeci">ValueType &amp; GetWithDefault(ValueType &amp;root, const ValueType &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const </div><div class="ttdoc">Query a value in a subtree with default value. </div><div class="ttdef"><b>Definition:</b> pointer.h:533</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a9bd1c4076e732ffc1b4527ac5659264e"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a9bd1c4076e732ffc1b4527ac5659264e">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;value) const </div><div class="ttdoc">Sets a std::basic_string in a document. </div><div class="ttdef"><b>Definition:</b> pointer.h:662</div></div>
+<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ggade540ee4cc2a416c23b8ee2c12393c7ba29831a02b8ee23a05d552b47f4d64d28"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ggade540ee4cc2a416c23b8ee2c12393c7ba29831a02b8ee23a05d552b47f4d64d28">rapidjson::kPointerParseErrorInvalidPercentEncoding</a></div><div class="ttdoc">Invalid percent encoding in URI fragment </div><div class="ttdef"><b>Definition:</b> pointer.h:44</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_ad9399a2a69444c44a9db2f63c3aa3eae"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae">rapidjson::GenericValue::CopyFrom</a></div><div class="ttdeci">GenericValue &amp; CopyFrom(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs, Allocator &amp;allocator, bool copyConstStrings=false)</div><div class="ttdoc">Deep-copy assignment from Value </div><div class="ttdef"><b>Definition:</b> document.h:863</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_ad0b5b67c57572e81689762094ac8c856"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856">rapidjson::GenericPointer::Create</a></div><div class="ttdeci">ValueType &amp; Create(ValueType &amp;root, typename ValueType::AllocatorType &amp;allocator, bool *alreadyExist=0) const</div><div class="ttdoc">Create a value in a subtree. </div><div class="ttdef"><b>Definition:</b> pointer.h:401</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a98b96d54c2c3378f1892ffffc501069c"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c">rapidjson::GenericPointer::IsValid</a></div><div class="ttdeci">bool IsValid() const</div><div class="ttdoc">Check whether this is a valid pointer. </div><div class="ttdef"><b>Definition:</b> pointer.h:303</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_acd36d0bbfcca43feaeeba5488d8384c2"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2">rapidjson::GenericPointer::GetWithDefault</a></div><div class="ttdeci">ValueType &amp; GetWithDefault(ValueType &amp;root, const ValueType &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const</div><div class="ttdoc">Query a value in a subtree with default value. </div><div class="ttdef"><b>Definition:</b> pointer.h:533</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a9371832d9089cca9b7f549172fd75cc8"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a9371832d9089cca9b7f549172fd75cc8">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const</div><div class="ttdoc">Set a value in a document, with move semantics. </div><div class="ttdef"><b>Definition:</b> pointer.h:643</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a4aadec8f0efe9a7ac42ac4906a5f676d"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a4aadec8f0efe9a7ac42ac4906a5f676d">rapidjson::GenericPointer::Append</a></div><div class="ttdeci">GenericPointer Append(SizeType index, Allocator *allocator=0) const</div><div class="ttdoc">Append a index token, and return a new Pointer </div><div class="ttdef"><b>Definition:</b> pointer.h:264</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_ad7a692d4e08d578f7e24afb7c4004276"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#ad7a692d4e08d578f7e24afb7c4004276">rapidjson::GenericPointer::Set</a></div><div class="ttdeci">ValueType &amp; Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;value) const</div><div class="ttdoc">Set a value in a document, with copy semantics. </div><div class="ttdef"><b>Definition:</b> pointer.h:649</div></div>
+<div class="ttc" id="structrapidjson_1_1_generic_insitu_string_stream_html"><div class="ttname"><a href="structrapidjson_1_1_generic_insitu_string_stream.html">rapidjson::GenericInsituStringStream</a></div><div class="ttdoc">A read-write string stream. </div><div class="ttdef"><b>Definition:</b> fwd.h:52</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>pointer.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>pointer.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/pow10_8h_source.html b/zh-cn/pow10_8h_source.html
index fa955587..90a7769d 100644
--- a/zh-cn/pow10_8h_source.html
+++ b/zh-cn/pow10_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/internal/pow10.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('pow10_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,69 +81,14 @@ $(document).ready(function(){initNavTree('pow10_8h_source.html','');});
<div class="title">pow10.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_POW10_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_POW10_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">//! Computes integer powers of 10 in double (10.0^n).</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"></span><span class="comment">/*! This function uses lookup table for fast and accurate results.</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> \param n non-negative exponent. Must &lt;= 308.</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> \return 10.0^n</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> Pow10(<span class="keywordtype">int</span> n) {</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> e[] = { <span class="comment">// 1e-0...1e308: 309 * 8 bytes = 2472 bytes</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; 1e+0, </div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; 1e+1, 1e+2, 1e+3, 1e+4, 1e+5, 1e+6, 1e+7, 1e+8, 1e+9, 1e+10, 1e+11, 1e+12, 1e+13, 1e+14, 1e+15, 1e+16, 1e+17, 1e+18, 1e+19, 1e+20, </div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; 1e+21, 1e+22, 1e+23, 1e+24, 1e+25, 1e+26, 1e+27, 1e+28, 1e+29, 1e+30, 1e+31, 1e+32, 1e+33, 1e+34, 1e+35, 1e+36, 1e+37, 1e+38, 1e+39, 1e+40,</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; 1e+41, 1e+42, 1e+43, 1e+44, 1e+45, 1e+46, 1e+47, 1e+48, 1e+49, 1e+50, 1e+51, 1e+52, 1e+53, 1e+54, 1e+55, 1e+56, 1e+57, 1e+58, 1e+59, 1e+60,</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; 1e+61, 1e+62, 1e+63, 1e+64, 1e+65, 1e+66, 1e+67, 1e+68, 1e+69, 1e+70, 1e+71, 1e+72, 1e+73, 1e+74, 1e+75, 1e+76, 1e+77, 1e+78, 1e+79, 1e+80,</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; 1e+81, 1e+82, 1e+83, 1e+84, 1e+85, 1e+86, 1e+87, 1e+88, 1e+89, 1e+90, 1e+91, 1e+92, 1e+93, 1e+94, 1e+95, 1e+96, 1e+97, 1e+98, 1e+99, 1e+100,</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; 1e+101,1e+102,1e+103,1e+104,1e+105,1e+106,1e+107,1e+108,1e+109,1e+110,1e+111,1e+112,1e+113,1e+114,1e+115,1e+116,1e+117,1e+118,1e+119,1e+120,</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; 1e+121,1e+122,1e+123,1e+124,1e+125,1e+126,1e+127,1e+128,1e+129,1e+130,1e+131,1e+132,1e+133,1e+134,1e+135,1e+136,1e+137,1e+138,1e+139,1e+140,</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; 1e+141,1e+142,1e+143,1e+144,1e+145,1e+146,1e+147,1e+148,1e+149,1e+150,1e+151,1e+152,1e+153,1e+154,1e+155,1e+156,1e+157,1e+158,1e+159,1e+160,</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; 1e+161,1e+162,1e+163,1e+164,1e+165,1e+166,1e+167,1e+168,1e+169,1e+170,1e+171,1e+172,1e+173,1e+174,1e+175,1e+176,1e+177,1e+178,1e+179,1e+180,</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; 1e+181,1e+182,1e+183,1e+184,1e+185,1e+186,1e+187,1e+188,1e+189,1e+190,1e+191,1e+192,1e+193,1e+194,1e+195,1e+196,1e+197,1e+198,1e+199,1e+200,</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; 1e+201,1e+202,1e+203,1e+204,1e+205,1e+206,1e+207,1e+208,1e+209,1e+210,1e+211,1e+212,1e+213,1e+214,1e+215,1e+216,1e+217,1e+218,1e+219,1e+220,</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; 1e+221,1e+222,1e+223,1e+224,1e+225,1e+226,1e+227,1e+228,1e+229,1e+230,1e+231,1e+232,1e+233,1e+234,1e+235,1e+236,1e+237,1e+238,1e+239,1e+240,</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; 1e+241,1e+242,1e+243,1e+244,1e+245,1e+246,1e+247,1e+248,1e+249,1e+250,1e+251,1e+252,1e+253,1e+254,1e+255,1e+256,1e+257,1e+258,1e+259,1e+260,</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; 1e+261,1e+262,1e+263,1e+264,1e+265,1e+266,1e+267,1e+268,1e+269,1e+270,1e+271,1e+272,1e+273,1e+274,1e+275,1e+276,1e+277,1e+278,1e+279,1e+280,</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; 1e+281,1e+282,1e+283,1e+284,1e+285,1e+286,1e+287,1e+288,1e+289,1e+290,1e+291,1e+292,1e+293,1e+294,1e+295,1e+296,1e+297,1e+298,1e+299,1e+300,</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; 1e+301,1e+302,1e+303,1e+304,1e+305,1e+306,1e+307,1e+308</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; };</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(n &gt;= 0 &amp;&amp; n &lt;= 308);</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> e[n];</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_POW10_</span></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_POW10_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_POW10_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">//! Computes integer powers of 10 in double (10.0^n).</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"></span><span class="comment">/*! This function uses lookup table for fast and accurate results.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> \param n non-negative exponent. Must &lt;= 308.</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> \return 10.0^n</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> Pow10(<span class="keywordtype">int</span> n) {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> e[] = { <span class="comment">// 1e-0...1e308: 309 * 8 bytes = 2472 bytes</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; 1e+0, </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; 1e+1, 1e+2, 1e+3, 1e+4, 1e+5, 1e+6, 1e+7, 1e+8, 1e+9, 1e+10, 1e+11, 1e+12, 1e+13, 1e+14, 1e+15, 1e+16, 1e+17, 1e+18, 1e+19, 1e+20, </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; 1e+21, 1e+22, 1e+23, 1e+24, 1e+25, 1e+26, 1e+27, 1e+28, 1e+29, 1e+30, 1e+31, 1e+32, 1e+33, 1e+34, 1e+35, 1e+36, 1e+37, 1e+38, 1e+39, 1e+40,</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; 1e+41, 1e+42, 1e+43, 1e+44, 1e+45, 1e+46, 1e+47, 1e+48, 1e+49, 1e+50, 1e+51, 1e+52, 1e+53, 1e+54, 1e+55, 1e+56, 1e+57, 1e+58, 1e+59, 1e+60,</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; 1e+61, 1e+62, 1e+63, 1e+64, 1e+65, 1e+66, 1e+67, 1e+68, 1e+69, 1e+70, 1e+71, 1e+72, 1e+73, 1e+74, 1e+75, 1e+76, 1e+77, 1e+78, 1e+79, 1e+80,</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; 1e+81, 1e+82, 1e+83, 1e+84, 1e+85, 1e+86, 1e+87, 1e+88, 1e+89, 1e+90, 1e+91, 1e+92, 1e+93, 1e+94, 1e+95, 1e+96, 1e+97, 1e+98, 1e+99, 1e+100,</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; 1e+101,1e+102,1e+103,1e+104,1e+105,1e+106,1e+107,1e+108,1e+109,1e+110,1e+111,1e+112,1e+113,1e+114,1e+115,1e+116,1e+117,1e+118,1e+119,1e+120,</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; 1e+121,1e+122,1e+123,1e+124,1e+125,1e+126,1e+127,1e+128,1e+129,1e+130,1e+131,1e+132,1e+133,1e+134,1e+135,1e+136,1e+137,1e+138,1e+139,1e+140,</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; 1e+141,1e+142,1e+143,1e+144,1e+145,1e+146,1e+147,1e+148,1e+149,1e+150,1e+151,1e+152,1e+153,1e+154,1e+155,1e+156,1e+157,1e+158,1e+159,1e+160,</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; 1e+161,1e+162,1e+163,1e+164,1e+165,1e+166,1e+167,1e+168,1e+169,1e+170,1e+171,1e+172,1e+173,1e+174,1e+175,1e+176,1e+177,1e+178,1e+179,1e+180,</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; 1e+181,1e+182,1e+183,1e+184,1e+185,1e+186,1e+187,1e+188,1e+189,1e+190,1e+191,1e+192,1e+193,1e+194,1e+195,1e+196,1e+197,1e+198,1e+199,1e+200,</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; 1e+201,1e+202,1e+203,1e+204,1e+205,1e+206,1e+207,1e+208,1e+209,1e+210,1e+211,1e+212,1e+213,1e+214,1e+215,1e+216,1e+217,1e+218,1e+219,1e+220,</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; 1e+221,1e+222,1e+223,1e+224,1e+225,1e+226,1e+227,1e+228,1e+229,1e+230,1e+231,1e+232,1e+233,1e+234,1e+235,1e+236,1e+237,1e+238,1e+239,1e+240,</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; 1e+241,1e+242,1e+243,1e+244,1e+245,1e+246,1e+247,1e+248,1e+249,1e+250,1e+251,1e+252,1e+253,1e+254,1e+255,1e+256,1e+257,1e+258,1e+259,1e+260,</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; 1e+261,1e+262,1e+263,1e+264,1e+265,1e+266,1e+267,1e+268,1e+269,1e+270,1e+271,1e+272,1e+273,1e+274,1e+275,1e+276,1e+277,1e+278,1e+279,1e+280,</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; 1e+281,1e+282,1e+283,1e+284,1e+285,1e+286,1e+287,1e+288,1e+289,1e+290,1e+291,1e+292,1e+293,1e+294,1e+295,1e+296,1e+297,1e+298,1e+299,1e+300,</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; 1e+301,1e+302,1e+303,1e+304,1e+305,1e+306,1e+307,1e+308</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; };</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(n &gt;= 0 &amp;&amp; n &lt;= 308);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> e[n];</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;}</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_POW10_</span></div><div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5167ae66a3a40cb9e5e46c75b7477e81.html">internal</a></li><li class="navelem"><b>pow10.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_8d7584a8244d286291cd37b99676a43b.html">internal</a></li><li class="navelem"><b>pow10.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/prettywriter_8h_source.html b/zh-cn/prettywriter_8h_source.html
index 6568bb06..34d67a4a 100644
--- a/zh-cn/prettywriter_8h_source.html
+++ b/zh-cn/prettywriter_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/prettywriter.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('prettywriter_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,301 +81,27 @@ $(document).ready(function(){initNavTree('prettywriter_8h_source.html','');});
<div class="title">prettywriter.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_PRETTYWRITER_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_PRETTYWRITER_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;writer.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;RAPIDJSON_DIAG_OFF(c++98-compat)</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">//! Combination of PrettyWriter format flags.</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span><span class="comment">/*! \see PrettyWriter::SetFormatOptions</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4b"> 35</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4b">PrettyFormatOptions</a> {</div>
-<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba8164b0d4993439856171585b9cf3adc0"> 36</a></span>&#160; <a class="code" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba8164b0d4993439856171585b9cf3adc0">kFormatDefault</a> = 0, <span class="comment">//!&lt; Default pretty formatting.</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba64b0f8a37ab3125118682046ff06500f"> 37</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba64b0f8a37ab3125118682046ff06500f">kFormatSingleLineArray</a> = 1 <span class="comment">//!&lt; Format arrays on a single line.</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"></span>};</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">//! Writer with indentation and spacing.</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> \tparam OutputStream Type of ouptut os.</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> \tparam SourceEncoding Encoding of source string.</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> \tparam TargetEncoding Encoding of output stream.</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> \tparam StackAllocator Type of allocator for allocating memory of stack.</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream, <span class="keyword">typename</span> SourceEncoding = UTF8&lt;&gt;, <span class="keyword">typename</span> TargetEncoding = UTF8&lt;&gt;, <span class="keyword">typename</span> StackAllocator = CrtAllocator, <span class="keywordtype">unsigned</span> writeFlags = kWriteDefaultFlags&gt;</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">class </span>PrettyWriter : <span class="keyword">public</span> Writer&lt;OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags&gt; {</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">typedef</span> Writer&lt;OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags&gt; Base;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Base::Ch Ch;</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> //! Constructor</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"></span><span class="comment"> /*! \param os Output stream.</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> \param allocator User supplied allocator. If it is null, it will create a private one.</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> \param levelDepth Initial capacity of stack.</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_pretty_writer.html#a688d7ebf5c8015e423b7a970afc8e0a0"> 58</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_pretty_writer.html#a688d7ebf5c8015e423b7a970afc8e0a0">PrettyWriter</a>(OutputStream&amp; os, StackAllocator* allocator = 0, <span class="keywordtype">size_t</span> levelDepth = Base::kDefaultLevelDepth) : </div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classrapidjson_1_1_writer.html">Base</a>(os, allocator, levelDepth), indentChar_(<span class="stringliteral">&#39; &#39;</span>), indentCharCount_(4), formatOptions_(<a class="code" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba8164b0d4993439856171585b9cf3adc0">kFormatDefault</a>) {}</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a>(StackAllocator* allocator = 0, <span class="keywordtype">size_t</span> levelDepth = Base::kDefaultLevelDepth) : </div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; Base(allocator, levelDepth), indentChar_(<span class="stringliteral">&#39; &#39;</span>), indentCharCount_(4) {}</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; PrettyWriter(PrettyWriter&amp;&amp; rhs) :</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; Base(std::forward&lt;PrettyWriter&gt;(rhs)), indentChar_(rhs.indentChar_), indentCharCount_(rhs.indentCharCount_), formatOptions_(rhs.formatOptions_) {}</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> //! Set custom indentation.</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"></span><span class="comment"> /*! \param indentChar Character for indentation. Must be whitespace character (&#39; &#39;, &#39;\\t&#39;, &#39;\\n&#39;, &#39;\\r&#39;).</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> \param indentCharCount Number of indent characters for each indentation level.</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> \note The default indentation is 4 spaces.</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_pretty_writer.html#a121686c29ca7fe071fa4108c46955ff0"> 75</a></span>&#160; <a class="code" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a>&amp; <a class="code" href="classrapidjson_1_1_pretty_writer.html#a121686c29ca7fe071fa4108c46955ff0">SetIndent</a>(Ch indentChar, <span class="keywordtype">unsigned</span> indentCharCount) {</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(indentChar == <span class="charliteral">&#39; &#39;</span> || indentChar == <span class="charliteral">&#39;\t&#39;</span> || indentChar == <span class="charliteral">&#39;\n&#39;</span> || indentChar == <span class="charliteral">&#39;\r&#39;</span>);</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; indentChar_ = indentChar;</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; indentCharCount_ = indentCharCount;</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> //! Set pretty writer formatting options.</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span><span class="comment"> /*! \param options Formatting options.</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_pretty_writer.html#acde6176577f29869e28a4f3c4a251090"> 85</a></span>&#160; <a class="code" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a>&amp; <a class="code" href="classrapidjson_1_1_pretty_writer.html#acde6176577f29869e28a4f3c4a251090">SetFormatOptions</a>(<a class="code" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4b">PrettyFormatOptions</a> options) {</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; formatOptions_ = options;</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> /*! @name Implementation of Handler</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> \see Handler</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> */</span><span class="comment"></span></div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> //@{</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordtype">bool</span> Null() { PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">kNullType</a>); <span class="keywordflow">return</span> Base::WriteNull(); }</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b) { PrettyPrefix(b ? <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">kTrueType</a> : <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">kFalseType</a>); <span class="keywordflow">return</span> Base::WriteBool(b); }</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i) { PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> Base::WriteInt(i); }</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> u) { PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> Base::WriteUint(u); }</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordtype">bool</span> Int64(int64_t i64) { PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> Base::WriteInt64(i64); }</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">bool</span> Uint64(uint64_t u64) { PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> Base::WriteUint64(u64); }</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span> d) { PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> Base::WriteDouble(d); }</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">bool</span> RawNumber(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy = <span class="keyword">false</span>) {</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(str != 0);</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; (void)copy;</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>);</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> Base::WriteString(str, length);</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy = <span class="keyword">false</span>) {</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(str != 0);</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; (void)copy;</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>);</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> Base::WriteString(str, length);</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; str) {</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> String(str.data(), <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(str.size()));</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordtype">bool</span> StartObject() {</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>);</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">new</span> (Base::level_stack_.template Push&lt;typename Base::Level&gt;()) <span class="keyword">typename</span> Base::Level(<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> Base::WriteStartObject();</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy = <span class="keyword">false</span>) { <span class="keywordflow">return</span> String(str, length, copy); }</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; str) {</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> Key(str.data(), <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(str.size()));</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; </div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount = 0) {</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; (void)memberCount;</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(Base::level_stack_.GetSize() &gt;= <span class="keyword">sizeof</span>(<span class="keyword">typename</span> Base::Level)); <span class="comment">// not inside an Object</span></div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!Base::level_stack_.<span class="keyword">template</span> Top&lt;typename Base::Level&gt;()-&gt;inArray); <span class="comment">// currently inside an Array, not Object</span></div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(0 == Base::level_stack_.<span class="keyword">template</span> Top&lt;typename Base::Level&gt;()-&gt;valueCount % 2); <span class="comment">// Object has a Key without a Value</span></div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; </div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordtype">bool</span> empty = Base::level_stack_.template Pop&lt;typename Base::Level&gt;(1)-&gt;valueCount == 0;</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span> (!empty) {</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;\n&#39;</span>);</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; WriteIndent();</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordtype">bool</span> ret = Base::WriteEndObject();</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; (void)ret;</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(ret == <span class="keyword">true</span>);</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span> (Base::level_stack_.Empty()) <span class="comment">// end of json text</span></div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; Base::Flush();</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">bool</span> StartArray() {</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">new</span> (Base::level_stack_.template Push&lt;typename Base::Level&gt;()) <span class="keyword">typename</span> Base::Level(<span class="keyword">true</span>);</div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> Base::WriteStartArray();</div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount = 0) {</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; (void)memberCount;</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(Base::level_stack_.GetSize() &gt;= <span class="keyword">sizeof</span>(<span class="keyword">typename</span> Base::Level));</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(Base::level_stack_.<span class="keyword">template</span> Top&lt;typename Base::Level&gt;()-&gt;inArray);</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordtype">bool</span> empty = Base::level_stack_.template Pop&lt;typename Base::Level&gt;(1)-&gt;valueCount == 0;</div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span> (!empty &amp;&amp; !(formatOptions_ &amp; kFormatSingleLineArray)) {</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;\n&#39;</span>);</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; WriteIndent();</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordtype">bool</span> ret = Base::WriteEndArray();</div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; (void)ret;</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(ret == <span class="keyword">true</span>);</div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span> (Base::level_stack_.Empty()) <span class="comment">// end of json text</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; Base::Flush();</div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment"> /*! @name Convenience extensions */</span><span class="comment"></span></div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment"> //@{</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"> //! Simpler but slower overload.</span></div>
-<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_pretty_writer.html#a363c2280393e27e19bceb8d015c2832c"> 187</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_pretty_writer.html#a363c2280393e27e19bceb8d015c2832c">String</a>(<span class="keyword">const</span> Ch* str) { <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_pretty_writer.html#a363c2280393e27e19bceb8d015c2832c">String</a>(str, internal::StrLen(str)); }</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str) { <span class="keywordflow">return</span> Key(str, internal::StrLen(str)); }</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"> //! Write a raw JSON value.</span></div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> For user to write a stringified JSON as a value.</span></div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment"> \param json A well-formed JSON value. It should not contain null character within [0, length - 1] range.</span></div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"> \param length Length of the json.</span></div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment"> \param type Type of the root of json.</span></div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"> \note When using PrettyWriter::RawValue(), the result json may not be indented correctly.</span></div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_pretty_writer.html#a3136e3426a5d06e5da50f6e6aab8a5be"> 201</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_pretty_writer.html#a3136e3426a5d06e5da50f6e6aab8a5be">RawValue</a>(<span class="keyword">const</span> Ch* json, <span class="keywordtype">size_t</span> length, <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type) {</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(json != 0);</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; PrettyPrefix(type);</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> Base::WriteRawValue(json, length);</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordtype">void</span> PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type) {</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; (void)type;</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (Base::level_stack_.GetSize() != 0) { <span class="comment">// this value is not at root</span></div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">typename</span> Base::Level* level = Base::level_stack_.template Top&lt;typename Base::Level&gt;();</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">if</span> (level-&gt;inArray) {</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">if</span> (level-&gt;valueCount &gt; 0) {</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;,&#39;</span>); <span class="comment">// add comma if it is not the first element in array</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span> (formatOptions_ &amp; kFormatSingleLineArray)</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39; &#39;</span>);</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span> (!(formatOptions_ &amp; kFormatSingleLineArray)) {</div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;\n&#39;</span>);</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; WriteIndent();</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; }</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">else</span> { <span class="comment">// in object</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (level-&gt;valueCount &gt; 0) {</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span> (level-&gt;valueCount % 2 == 0) {</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;,&#39;</span>);</div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;\n&#39;</span>);</div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;:&#39;</span>);</div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39; &#39;</span>);</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;\n&#39;</span>);</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span> (level-&gt;valueCount % 2 == 0)</div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; WriteIndent();</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">if</span> (!level-&gt;inArray &amp;&amp; level-&gt;valueCount % 2 == 0)</div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(type == <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>); <span class="comment">// if it&#39;s in object, then even number should be a name</span></div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; level-&gt;valueCount++;</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!Base::hasRoot_); <span class="comment">// Should only has one and only one root.</span></div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; Base::hasRoot_ = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordtype">void</span> WriteIndent() {</div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordtype">size_t</span> count = (Base::level_stack_.GetSize() / <span class="keyword">sizeof</span>(<span class="keyword">typename</span> Base::Level)) * indentCharCount_;</div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">PutN</a>(*Base::os_, static_cast&lt;typename OutputStream::Ch&gt;(indentChar_), count);</div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; Ch indentChar_;</div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordtype">unsigned</span> indentCharCount_;</div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4b">PrettyFormatOptions</a> formatOptions_;</div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="comment">// Prohibit copy constructor &amp; assignment operator.</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; PrettyWriter(<span class="keyword">const</span> PrettyWriter&amp;);</div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; PrettyWriter&amp; operator=(<span class="keyword">const</span> PrettyWriter&amp;);</div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;};</div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_RAPIDJSON_H_</span></div>
-<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">rapidjson::kTrueType</a></div><div class="ttdoc">true </div><div class="ttdef"><b>Definition:</b> rapidjson.h:619</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_PRETTYWRITER_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_PRETTYWRITER_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;writer.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;RAPIDJSON_DIAG_OFF(c++98-compat)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">//! Combination of PrettyWriter format flags.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span><span class="comment">/*! \see PrettyWriter::SetFormatOptions</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4b"> 35</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4b">PrettyFormatOptions</a> {</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba8164b0d4993439856171585b9cf3adc0"> 36</a></span>&#160; <a class="code" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba8164b0d4993439856171585b9cf3adc0">kFormatDefault</a> = 0, <span class="comment">//!&lt; Default pretty formatting.</span></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba64b0f8a37ab3125118682046ff06500f"> 37</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba64b0f8a37ab3125118682046ff06500f">kFormatSingleLineArray</a> = 1 <span class="comment">//!&lt; Format arrays on a single line.</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"></span>};</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">//! Writer with indentation and spacing.</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> \tparam OutputStream Type of ouptut os.</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> \tparam SourceEncoding Encoding of source string.</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> \tparam TargetEncoding Encoding of output stream.</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> \tparam StackAllocator Type of allocator for allocating memory of stack.</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream, <span class="keyword">typename</span> SourceEncoding = UTF8&lt;&gt;, <span class="keyword">typename</span> TargetEncoding = UTF8&lt;&gt;, <span class="keyword">typename</span> StackAllocator = CrtAllocator, <span class="keywordtype">unsigned</span> writeFlags = kWriteDefaultFlags&gt;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a> : <span class="keyword">public</span> <a class="code" href="classrapidjson_1_1_writer.html">Writer</a>&lt;OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags&gt; {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags&gt;</a> Base;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Base::Ch Ch;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> //! Constructor</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"></span><span class="comment"> /*! \param os Output stream.</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> \param allocator User supplied allocator. If it is null, it will create a private one.</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> \param levelDepth Initial capacity of stack.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_pretty_writer.html#a688d7ebf5c8015e423b7a970afc8e0a0"> 58</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_pretty_writer.html#a688d7ebf5c8015e423b7a970afc8e0a0">PrettyWriter</a>(OutputStream&amp; os, StackAllocator* allocator = 0, <span class="keywordtype">size_t</span> levelDepth = Base::kDefaultLevelDepth) : </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; Base(os, allocator, levelDepth), indentChar_(<span class="stringliteral">&#39; &#39;</span>), indentCharCount_(4), formatOptions_(<a class="code" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba8164b0d4993439856171585b9cf3adc0">kFormatDefault</a>) {}</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a>(StackAllocator* allocator = 0, <span class="keywordtype">size_t</span> levelDepth = Base::kDefaultLevelDepth) : </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; Base(allocator, levelDepth), indentChar_(<span class="charliteral">&#39; &#39;</span>), indentCharCount_(4) {}</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a>(<a class="code" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a>&amp;&amp; rhs) :</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; Base(std::forward&lt;PrettyWriter&gt;(rhs)), indentChar_(rhs.indentChar_), indentCharCount_(rhs.indentCharCount_), formatOptions_(rhs.formatOptions_) {}</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> //! Set custom indentation.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"></span><span class="comment"> /*! \param indentChar Character for indentation. Must be whitespace character (&#39; &#39;, &#39;\\t&#39;, &#39;\\n&#39;, &#39;\\r&#39;).</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> \param indentCharCount Number of indent characters for each indentation level.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> \note The default indentation is 4 spaces.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_pretty_writer.html#a121686c29ca7fe071fa4108c46955ff0"> 75</a></span>&#160; <a class="code" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a>&amp; <a class="code" href="classrapidjson_1_1_pretty_writer.html#a121686c29ca7fe071fa4108c46955ff0">SetIndent</a>(Ch indentChar, <span class="keywordtype">unsigned</span> indentCharCount) {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(indentChar == <span class="charliteral">&#39; &#39;</span> || indentChar == <span class="charliteral">&#39;\t&#39;</span> || indentChar == <span class="charliteral">&#39;\n&#39;</span> || indentChar == <span class="charliteral">&#39;\r&#39;</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; indentChar_ = indentChar;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; indentCharCount_ = indentCharCount;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> //! Set pretty writer formatting options.</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span><span class="comment"> /*! \param options Formatting options.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_pretty_writer.html#acde6176577f29869e28a4f3c4a251090"> 85</a></span>&#160; <a class="code" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a>&amp; <a class="code" href="classrapidjson_1_1_pretty_writer.html#acde6176577f29869e28a4f3c4a251090">SetFormatOptions</a>(<a class="code" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4b">PrettyFormatOptions</a> options) {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; formatOptions_ = options;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> /*! @name Implementation of Handler</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> \see Handler</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> */</span><span class="comment"></span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> //@{</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordtype">bool</span> Null() { PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">kNullType</a>); <span class="keywordflow">return</span> Base::WriteNull(); }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b) { PrettyPrefix(b ? <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">kTrueType</a> : <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">kFalseType</a>); <span class="keywordflow">return</span> Base::WriteBool(b); }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i) { PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> Base::WriteInt(i); }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> u) { PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> Base::WriteUint(u); }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordtype">bool</span> Int64(int64_t i64) { PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> Base::WriteInt64(i64); }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">bool</span> Uint64(uint64_t u64) { PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> Base::WriteUint64(u64); }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span> d) { PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> Base::WriteDouble(d); }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">bool</span> RawNumber(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy = <span class="keyword">false</span>) {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(str != 0);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; (void)copy;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">return</span> Base::WriteString(str, length);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy = <span class="keyword">false</span>) {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(str != 0);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; (void)copy;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">return</span> Base::WriteString(str, length);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; str) {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> String(str.data(), <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(str.size()));</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordtype">bool</span> StartObject() {</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keyword">new</span> (Base::level_stack_.template Push&lt;typename Base::Level&gt;()) <span class="keyword">typename</span> <a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Base::Level</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> Base::WriteStartObject();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; }</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy = <span class="keyword">false</span>) { <span class="keywordflow">return</span> String(str, length, copy); }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; str) {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> Key(str.data(), <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(str.size()));</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; </div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount = 0) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; (void)memberCount;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(Base::level_stack_.GetSize() &gt;= <span class="keyword">sizeof</span>(<span class="keyword">typename</span> <a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Base::Level</a>)); <span class="comment">// not inside an Object</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!Base::level_stack_.<span class="keyword">template</span> Top&lt;typename Base::Level&gt;()-&gt;inArray); <span class="comment">// currently inside an Array, not Object</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(0 == Base::level_stack_.<span class="keyword">template</span> Top&lt;typename Base::Level&gt;()-&gt;valueCount % 2); <span class="comment">// Object has a Key without a Value</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordtype">bool</span> empty = Base::level_stack_.template Pop&lt;typename Base::Level&gt;(1)-&gt;valueCount == 0;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span> (!empty) {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;\n&#39;</span>);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; WriteIndent();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordtype">bool</span> ret = Base::WriteEndObject();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; (void)ret;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(ret == <span class="keyword">true</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span> (Base::level_stack_.Empty()) <span class="comment">// end of json text</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; Base::Flush();</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordtype">bool</span> StartArray() {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">new</span> (Base::level_stack_.template Push&lt;typename Base::Level&gt;()) <span class="keyword">typename</span> <a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Base::Level</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> Base::WriteStartArray();</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount = 0) {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; (void)memberCount;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(Base::level_stack_.GetSize() &gt;= <span class="keyword">sizeof</span>(<span class="keyword">typename</span> <a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Base::Level</a>));</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(Base::level_stack_.<span class="keyword">template</span> Top&lt;typename Base::Level&gt;()-&gt;inArray);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordtype">bool</span> empty = Base::level_stack_.template Pop&lt;typename Base::Level&gt;(1)-&gt;valueCount == 0;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span> (!empty &amp;&amp; !(formatOptions_ &amp; <a class="code" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba64b0f8a37ab3125118682046ff06500f">kFormatSingleLineArray</a>)) {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;\n&#39;</span>);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; WriteIndent();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordtype">bool</span> ret = Base::WriteEndArray();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; (void)ret;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(ret == <span class="keyword">true</span>);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">if</span> (Base::level_stack_.Empty()) <span class="comment">// end of json text</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; Base::Flush();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment"> /*! @name Convenience extensions */</span><span class="comment"></span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment"> //@{</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"> //! Simpler but slower overload.</span></div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_pretty_writer.html#a363c2280393e27e19bceb8d015c2832c"> 187</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_pretty_writer.html#a363c2280393e27e19bceb8d015c2832c">String</a>(<span class="keyword">const</span> Ch* str) { <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_pretty_writer.html#a363c2280393e27e19bceb8d015c2832c">String</a>(str, internal::StrLen(str)); }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str) { <span class="keywordflow">return</span> Key(str, internal::StrLen(str)); }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"> //! Write a raw JSON value.</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> For user to write a stringified JSON as a value.</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment"> \param json A well-formed JSON value. It should not contain null character within [0, length - 1] range.</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"> \param length Length of the json.</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment"> \param type Type of the root of json.</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"> \note When using PrettyWriter::RawValue(), the result json may not be indented correctly.</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_pretty_writer.html#a3136e3426a5d06e5da50f6e6aab8a5be"> 201</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_pretty_writer.html#a3136e3426a5d06e5da50f6e6aab8a5be">RawValue</a>(<span class="keyword">const</span> Ch* json, <span class="keywordtype">size_t</span> length, <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(json != 0);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; PrettyPrefix(type);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> Base::WriteRawValue(json, length);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordtype">void</span> PrettyPrefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type) {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; (void)type;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (Base::level_stack_.GetSize() != 0) { <span class="comment">// this value is not at root</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keyword">typename</span> <a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Base::Level</a>* level = Base::level_stack_.template Top&lt;typename Base::Level&gt;();</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">if</span> (level-&gt;<a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a59255e3b1d371161f7c894503cfd6bec">inArray</a>) {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">if</span> (level-&gt;<a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b">valueCount</a> &gt; 0) {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;,&#39;</span>); <span class="comment">// add comma if it is not the first element in array</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span> (formatOptions_ &amp; <a class="code" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba64b0f8a37ab3125118682046ff06500f">kFormatSingleLineArray</a>)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39; &#39;</span>);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span> (!(formatOptions_ &amp; <a class="code" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba64b0f8a37ab3125118682046ff06500f">kFormatSingleLineArray</a>)) {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;\n&#39;</span>);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; WriteIndent();</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">else</span> { <span class="comment">// in object</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (level-&gt;<a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b">valueCount</a> &gt; 0) {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span> (level-&gt;<a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b">valueCount</a> % 2 == 0) {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;,&#39;</span>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;\n&#39;</span>);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;:&#39;</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39; &#39;</span>);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; Base::os_-&gt;Put(<span class="charliteral">&#39;\n&#39;</span>);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span> (level-&gt;<a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b">valueCount</a> % 2 == 0)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; WriteIndent();</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">if</span> (!level-&gt;<a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a59255e3b1d371161f7c894503cfd6bec">inArray</a> &amp;&amp; level-&gt;<a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b">valueCount</a> % 2 == 0)</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(type == <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>); <span class="comment">// if it&#39;s in object, then even number should be a name</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; level-&gt;<a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b">valueCount</a>++;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!Base::hasRoot_); <span class="comment">// Should only has one and only one root.</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; Base::hasRoot_ = <span class="keyword">true</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordtype">void</span> WriteIndent() {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordtype">size_t</span> count = (Base::level_stack_.GetSize() / <span class="keyword">sizeof</span>(<span class="keyword">typename</span> <a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Base::Level</a>)) * indentCharCount_;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">PutN</a>(*Base::os_, static_cast&lt;typename OutputStream::Ch&gt;(indentChar_), count);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; Ch indentChar_;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordtype">unsigned</span> indentCharCount_;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4b">PrettyFormatOptions</a> formatOptions_;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="comment">// Prohibit copy constructor &amp; assignment operator.</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <a class="code" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a>&amp;);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_pretty_writer.html">PrettyWriter</a>&amp;);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;};</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_RAPIDJSON_H_</span></div><div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">rapidjson::kTrueType</a></div><div class="ttdoc">true </div><div class="ttdef"><b>Definition:</b> rapidjson.h:619</div></div>
+<div class="ttc" id="structrapidjson_1_1_writer_1_1_level_html_a59255e3b1d371161f7c894503cfd6bec"><div class="ttname"><a href="structrapidjson_1_1_writer_1_1_level.html#a59255e3b1d371161f7c894503cfd6bec">rapidjson::Writer::Level::inArray</a></div><div class="ttdeci">bool inArray</div><div class="ttdoc">true if in array, otherwise in object </div><div class="ttdef"><b>Definition:</b> writer.h:292</div></div>
<div class="ttc" id="classrapidjson_1_1_pretty_writer_html_a363c2280393e27e19bceb8d015c2832c"><div class="ttname"><a href="classrapidjson_1_1_pretty_writer.html#a363c2280393e27e19bceb8d015c2832c">rapidjson::PrettyWriter::String</a></div><div class="ttdeci">bool String(const Ch *str)</div><div class="ttdoc">Simpler but slower overload. </div><div class="ttdef"><b>Definition:</b> prettywriter.h:187</div></div>
<div class="ttc" id="namespacerapidjson_html_a084b31753ef2edefdeca8a5374eccc4b"><div class="ttname"><a href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4b">rapidjson::PrettyFormatOptions</a></div><div class="ttdeci">PrettyFormatOptions</div><div class="ttdoc">Combination of PrettyWriter format flags. </div><div class="ttdef"><b>Definition:</b> prettywriter.h:35</div></div>
<div class="ttc" id="namespacerapidjson_html_a084b31753ef2edefdeca8a5374eccc4ba64b0f8a37ab3125118682046ff06500f"><div class="ttname"><a href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba64b0f8a37ab3125118682046ff06500f">rapidjson::kFormatSingleLineArray</a></div><div class="ttdoc">Format arrays on a single line. </div><div class="ttdef"><b>Definition:</b> prettywriter.h:37</div></div>
<div class="ttc" id="namespacerapidjson_html_a44eb33eaa523e36d466b1ced64b85c84"><div class="ttname"><a href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">rapidjson::SizeType</a></div><div class="ttdeci">unsigned SizeType</div><div class="ttdoc">Size type (for string lengths, array sizes, etc.) </div><div class="ttdef"><b>Definition:</b> rapidjson.h:389</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">rapidjson::kFalseType</a></div><div class="ttdoc">false </div><div class="ttdef"><b>Definition:</b> rapidjson.h:618</div></div>
<div class="ttc" id="classrapidjson_1_1_pretty_writer_html"><div class="ttname"><a href="classrapidjson_1_1_pretty_writer.html">rapidjson::PrettyWriter</a></div><div class="ttdoc">Writer with indentation and spacing. </div><div class="ttdef"><b>Definition:</b> fwd.h:100</div></div>
+<div class="ttc" id="structrapidjson_1_1_writer_1_1_level_html"><div class="ttname"><a href="structrapidjson_1_1_writer_1_1_level.html">rapidjson::Writer::Level</a></div><div class="ttdoc">Information for each nested level </div><div class="ttdef"><b>Definition:</b> writer.h:289</div></div>
+<div class="ttc" id="structrapidjson_1_1_writer_1_1_level_html_a5d17bdfa9ded5de72f5f91175cc3e36b"><div class="ttname"><a href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b">rapidjson::Writer::Level::valueCount</a></div><div class="ttdeci">size_t valueCount</div><div class="ttdoc">number of values in this level </div><div class="ttdef"><b>Definition:</b> writer.h:291</div></div>
<div class="ttc" id="classrapidjson_1_1_pretty_writer_html_a3136e3426a5d06e5da50f6e6aab8a5be"><div class="ttname"><a href="classrapidjson_1_1_pretty_writer.html#a3136e3426a5d06e5da50f6e6aab8a5be">rapidjson::PrettyWriter::RawValue</a></div><div class="ttdeci">bool RawValue(const Ch *json, size_t length, Type type)</div><div class="ttdoc">Write a raw JSON value. </div><div class="ttdef"><b>Definition:</b> prettywriter.h:201</div></div>
-<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
+<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">rapidjson::kObjectType</a></div><div class="ttdoc">object </div><div class="ttdef"><b>Definition:</b> rapidjson.h:620</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">rapidjson::kArrayType</a></div><div class="ttdoc">array </div><div class="ttdef"><b>Definition:</b> rapidjson.h:621</div></div>
<div class="ttc" id="namespacerapidjson_html_a1ac13bac5976fc06587e00fc0bcfb32a"><div class="ttname"><a href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">rapidjson::PutN</a></div><div class="ttdeci">void PutN(FileWriteStream &amp;stream, char c, size_t n)</div><div class="ttdoc">Implement specialized version of PutN() with memset() for better performance. </div><div class="ttdef"><b>Definition:</b> filewritestream.h:94</div></div>
-<div class="ttc" id="classrapidjson_1_1_writer_html"><div class="ttname"><a href="classrapidjson_1_1_writer.html">rapidjson::Writer</a></div><div class="ttdoc">JSON writer. </div><div class="ttdef"><b>Definition:</b> fwd.h:95</div></div>
+<div class="ttc" id="classrapidjson_1_1_writer_html"><div class="ttname"><a href="classrapidjson_1_1_writer.html">rapidjson::Writer</a></div><div class="ttdoc">JSON writer </div><div class="ttdef"><b>Definition:</b> fwd.h:95</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">rapidjson::kNullType</a></div><div class="ttdoc">null </div><div class="ttdef"><b>Definition:</b> rapidjson.h:617</div></div>
<div class="ttc" id="namespacerapidjson_html_a084b31753ef2edefdeca8a5374eccc4ba8164b0d4993439856171585b9cf3adc0"><div class="ttname"><a href="namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4ba8164b0d4993439856171585b9cf3adc0">rapidjson::kFormatDefault</a></div><div class="ttdoc">Default pretty formatting. </div><div class="ttdef"><b>Definition:</b> prettywriter.h:36</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">rapidjson::kStringType</a></div><div class="ttdoc">string </div><div class="ttdef"><b>Definition:</b> rapidjson.h:622</div></div>
<div class="ttc" id="classrapidjson_1_1_pretty_writer_html_a121686c29ca7fe071fa4108c46955ff0"><div class="ttname"><a href="classrapidjson_1_1_pretty_writer.html#a121686c29ca7fe071fa4108c46955ff0">rapidjson::PrettyWriter::SetIndent</a></div><div class="ttdeci">PrettyWriter &amp; SetIndent(Ch indentChar, unsigned indentCharCount)</div><div class="ttdoc">Set custom indentation. </div><div class="ttdef"><b>Definition:</b> prettywriter.h:75</div></div>
-<div class="ttc" id="classrapidjson_1_1_pretty_writer_html_a688d7ebf5c8015e423b7a970afc8e0a0"><div class="ttname"><a href="classrapidjson_1_1_pretty_writer.html#a688d7ebf5c8015e423b7a970afc8e0a0">rapidjson::PrettyWriter::PrettyWriter</a></div><div class="ttdeci">PrettyWriter(OutputStream &amp;os, StackAllocator *allocator=0, size_t levelDepth=Base::kDefaultLevelDepth)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> prettywriter.h:58</div></div>
+<div class="ttc" id="classrapidjson_1_1_pretty_writer_html_a688d7ebf5c8015e423b7a970afc8e0a0"><div class="ttname"><a href="classrapidjson_1_1_pretty_writer.html#a688d7ebf5c8015e423b7a970afc8e0a0">rapidjson::PrettyWriter::PrettyWriter</a></div><div class="ttdeci">PrettyWriter(OutputStream &amp;os, StackAllocator *allocator=0, size_t levelDepth=Base::kDefaultLevelDepth)</div><div class="ttdoc">Constructor </div><div class="ttdef"><b>Definition:</b> prettywriter.h:58</div></div>
<div class="ttc" id="classrapidjson_1_1_pretty_writer_html_acde6176577f29869e28a4f3c4a251090"><div class="ttname"><a href="classrapidjson_1_1_pretty_writer.html#acde6176577f29869e28a4f3c4a251090">rapidjson::PrettyWriter::SetFormatOptions</a></div><div class="ttdeci">PrettyWriter &amp; SetFormatOptions(PrettyFormatOptions options)</div><div class="ttdoc">Set pretty writer formatting options. </div><div class="ttdef"><b>Definition:</b> prettywriter.h:85</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">rapidjson::kNumberType</a></div><div class="ttdoc">number </div><div class="ttdef"><b>Definition:</b> rapidjson.h:623</div></div>
@@ -384,7 +111,7 @@ $(document).ready(function(){initNavTree('prettywriter_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>prettywriter.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>prettywriter.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/rapidjson_8h.html b/zh-cn/rapidjson_8h.html
index 52d35f48..cc8080c0 100644
--- a/zh-cn/rapidjson_8h.html
+++ b/zh-cn/rapidjson_8h.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/rapidjson.h 文件参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('rapidjson_8h.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -103,19 +104,19 @@ $(document).ready(function(){initNavTree('rapidjson_8h.html','');});
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
宏定义</h2></td></tr>
-<tr class="memitem:gaf1ff1685be6cbebb5d4b2ab997776f45"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf1ff1685be6cbebb5d4b2ab997776f45"></a>
+<tr class="memitem:gaf1ff1685be6cbebb5d4b2ab997776f45"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf1ff1685be6cbebb5d4b2ab997776f45">RAPIDJSON_MAJOR_VERSION</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gaf1ff1685be6cbebb5d4b2ab997776f45"><td class="mdescLeft">&#160;</td><td class="mdescRight">Major version of RapidJSON in integer. <br /></td></tr>
<tr class="separator:gaf1ff1685be6cbebb5d4b2ab997776f45"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaf9125105c593a636a79f1c2d96835376"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf9125105c593a636a79f1c2d96835376"></a>
+<tr class="memitem:gaf9125105c593a636a79f1c2d96835376"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf9125105c593a636a79f1c2d96835376">RAPIDJSON_MINOR_VERSION</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:gaf9125105c593a636a79f1c2d96835376"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minor version of RapidJSON in integer. <br /></td></tr>
<tr class="separator:gaf9125105c593a636a79f1c2d96835376"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gaf967d31be43666ce7f53756d73bd1cdf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf967d31be43666ce7f53756d73bd1cdf"></a>
+<tr class="memitem:gaf967d31be43666ce7f53756d73bd1cdf"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf967d31be43666ce7f53756d73bd1cdf">RAPIDJSON_PATCH_VERSION</a>&#160;&#160;&#160;0</td></tr>
<tr class="memdesc:gaf967d31be43666ce7f53756d73bd1cdf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Patch version of RapidJSON in integer. <br /></td></tr>
<tr class="separator:gaf967d31be43666ce7f53756d73bd1cdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gad283cfde97d9a32b7d8e8107b11f70a6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad283cfde97d9a32b7d8e8107b11f70a6"></a>
+<tr class="memitem:gad283cfde97d9a32b7d8e8107b11f70a6"><td class="memItemLeft" align="right" valign="top">
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gad283cfde97d9a32b7d8e8107b11f70a6">RAPIDJSON_VERSION_STRING</a>&#160;&#160;&#160;RAPIDJSON_STRINGIFY(<a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf967d31be43666ce7f53756d73bd1cdf">RAPIDJSON_MAJOR_VERSION.RAPIDJSON_MINOR_VERSION.RAPIDJSON_PATCH_VERSION</a>)</td></tr>
<tr class="memdesc:gad283cfde97d9a32b7d8e8107b11f70a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Version of RapidJSON in "&lt;major&gt;.&lt;minor&gt;.&lt;patch&gt;" string format. <br /></td></tr>
<tr class="separator:gad283cfde97d9a32b7d8e8107b11f70a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -123,40 +124,40 @@ $(document).ready(function(){initNavTree('rapidjson_8h.html','');});
<tr class="memdesc:ga743a79d3af927391fe3eb5c979136899"><td class="mdescLeft">&#160;</td><td class="mdescRight">provide custom rapidjson namespace <a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga743a79d3af927391fe3eb5c979136899">更多...</a><br /></td></tr>
<tr class="separator:ga743a79d3af927391fe3eb5c979136899"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2f2eef0ee4477f3fe5874703a66e997f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga2f2eef0ee4477f3fe5874703a66e997f">RAPIDJSON_HAS_STDSTRING</a></td></tr>
-<tr class="memdesc:ga2f2eef0ee4477f3fe5874703a66e997f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable RapidJSON support for <code>std::string</code>. <a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga2f2eef0ee4477f3fe5874703a66e997f">更多...</a><br /></td></tr>
+<tr class="memdesc:ga2f2eef0ee4477f3fe5874703a66e997f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable RapidJSON support for <code>std::string</code> <a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga2f2eef0ee4477f3fe5874703a66e997f">更多...</a><br /></td></tr>
<tr class="separator:ga2f2eef0ee4477f3fe5874703a66e997f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f4e50c35dae3b015390daa6d48ce23c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga7f4e50c35dae3b015390daa6d48ce23c">RAPIDJSON_NO_INT64DEFINE</a></td></tr>
<tr class="memdesc:ga7f4e50c35dae3b015390daa6d48ce23c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use external 64-bit integer types. <a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga7f4e50c35dae3b015390daa6d48ce23c">更多...</a><br /></td></tr>
<tr class="separator:ga7f4e50c35dae3b015390daa6d48ce23c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:addcc0c3607c5790f35cc4c15885ff97c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="addcc0c3607c5790f35cc4c15885ff97c"></a>
+<tr class="memitem:addcc0c3607c5790f35cc4c15885ff97c"><td class="memItemLeft" align="right" valign="top"><a id="addcc0c3607c5790f35cc4c15885ff97c"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rapidjson_8h.html#addcc0c3607c5790f35cc4c15885ff97c">RAPIDJSON_LITTLEENDIAN</a>&#160;&#160;&#160;0</td></tr>
-<tr class="memdesc:addcc0c3607c5790f35cc4c15885ff97c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Little endian machine. <br /></td></tr>
+<tr class="memdesc:addcc0c3607c5790f35cc4c15885ff97c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Little endian machine <br /></td></tr>
<tr class="separator:addcc0c3607c5790f35cc4c15885ff97c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac7951ebf8a2624ab85d2dcd3ec7af974"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7951ebf8a2624ab85d2dcd3ec7af974"></a>
+<tr class="memitem:ac7951ebf8a2624ab85d2dcd3ec7af974"><td class="memItemLeft" align="right" valign="top"><a id="ac7951ebf8a2624ab85d2dcd3ec7af974"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rapidjson_8h.html#ac7951ebf8a2624ab85d2dcd3ec7af974">RAPIDJSON_BIGENDIAN</a>&#160;&#160;&#160;1</td></tr>
-<tr class="memdesc:ac7951ebf8a2624ab85d2dcd3ec7af974"><td class="mdescLeft">&#160;</td><td class="mdescRight">Big endian machine. <br /></td></tr>
+<tr class="memdesc:ac7951ebf8a2624ab85d2dcd3ec7af974"><td class="mdescLeft">&#160;</td><td class="mdescRight">Big endian machine <br /></td></tr>
<tr class="separator:ac7951ebf8a2624ab85d2dcd3ec7af974"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaba2445f582142cf918e74c2d22d1aa07"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaba2445f582142cf918e74c2d22d1aa07">RAPIDJSON_ENDIAN</a></td></tr>
<tr class="memdesc:gaba2445f582142cf918e74c2d22d1aa07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Endianness of the machine. <a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaba2445f582142cf918e74c2d22d1aa07">更多...</a><br /></td></tr>
<tr class="separator:gaba2445f582142cf918e74c2d22d1aa07"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a93973847cb99354b6b5bb5605aa7fe52"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a93973847cb99354b6b5bb5605aa7fe52"></a>
+<tr class="memitem:a93973847cb99354b6b5bb5605aa7fe52"><td class="memItemLeft" align="right" valign="top"><a id="a93973847cb99354b6b5bb5605aa7fe52"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rapidjson_8h.html#a93973847cb99354b6b5bb5605aa7fe52">RAPIDJSON_64BIT</a>&#160;&#160;&#160;0</td></tr>
-<tr class="memdesc:a93973847cb99354b6b5bb5605aa7fe52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether using 64-bit architecture. <br /></td></tr>
+<tr class="memdesc:a93973847cb99354b6b5bb5605aa7fe52"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether using 64-bit architecture <br /></td></tr>
<tr class="separator:a93973847cb99354b6b5bb5605aa7fe52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga583915242504c7fdb36e826f02f76242"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242">RAPIDJSON_ALIGN</a>(x)&#160;&#160;&#160;(((x) + 3u) &amp; ~3u)</td></tr>
<tr class="memdesc:ga583915242504c7fdb36e826f02f76242"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data alignment of the machine. <a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242">更多...</a><br /></td></tr>
<tr class="separator:ga583915242504c7fdb36e826f02f76242"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aaee1245f375a71be1ac9b8a07ba5fb8f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(high32, low32)&#160;&#160;&#160;((static_cast&lt;uint64_t&gt;(high32) &lt;&lt; 32) | static_cast&lt;uint64_t&gt;(low32))</td></tr>
+<tr class="memitem:aaee1245f375a71be1ac9b8a07ba5fb8f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(high32, low32)&#160;&#160;&#160;((static_cast&lt;uint64_t&gt;(high32) &lt;&lt; 32) | static_cast&lt;uint64_t&gt;(low32))</td></tr>
<tr class="memdesc:aaee1245f375a71be1ac9b8a07ba5fb8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Construct a 64-bit literal by a pair of 32-bit integer. <a href="#aaee1245f375a71be1ac9b8a07ba5fb8f">更多...</a><br /></td></tr>
<tr class="separator:aaee1245f375a71be1ac9b8a07ba5fb8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga93fb983f78208d12c822376e1ea6d185"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga93fb983f78208d12c822376e1ea6d185">RAPIDJSON_48BITPOINTER_OPTIMIZATION</a>&#160;&#160;&#160;0</td></tr>
<tr class="memdesc:ga93fb983f78208d12c822376e1ea6d185"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use only lower 48-bit address for some pointers. <a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga93fb983f78208d12c822376e1ea6d185">更多...</a><br /></td></tr>
<tr class="separator:ga93fb983f78208d12c822376e1ea6d185"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a113598c4750b3aab4de2782ff1865ed4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a113598c4750b3aab4de2782ff1865ed4"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>RAPIDJSON_SETPOINTER</b>(type, p, x)&#160;&#160;&#160;(p = (x))</td></tr>
+<tr class="memitem:a113598c4750b3aab4de2782ff1865ed4"><td class="memItemLeft" align="right" valign="top"><a id="a113598c4750b3aab4de2782ff1865ed4"></a>
+#define&#160;</td><td class="memItemRight" valign="bottom"><b>RAPIDJSON_SETPOINTER</b>(type, p, x)&#160;&#160;&#160;(p = (x))</td></tr>
<tr class="separator:a113598c4750b3aab4de2782ff1865ed4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab67ad54afdd78883907fd1ecd007573a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab67ad54afdd78883907fd1ecd007573a"></a>
-#define&#160;</td><td class="memItemRight" valign="bottom"><b>RAPIDJSON_GETPOINTER</b>(type, p)&#160;&#160;&#160;(p)</td></tr>
+<tr class="memitem:ab67ad54afdd78883907fd1ecd007573a"><td class="memItemLeft" align="right" valign="top"><a id="ab67ad54afdd78883907fd1ecd007573a"></a>
+#define&#160;</td><td class="memItemRight" valign="bottom"><b>RAPIDJSON_GETPOINTER</b>(type, p)&#160;&#160;&#160;(p)</td></tr>
<tr class="separator:ab67ad54afdd78883907fd1ecd007573a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0ccf72f3ebc4b3306ab669f95ca5c64b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga0ccf72f3ebc4b3306ab669f95ca5c64b">RAPIDJSON_SIMD</a></td></tr>
<tr class="memdesc:ga0ccf72f3ebc4b3306ab669f95ca5c64b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable SSE2/SSE4.2/Neon optimization. <a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga0ccf72f3ebc4b3306ab669f95ca5c64b">更多...</a><br /></td></tr>
@@ -176,11 +177,11 @@ $(document).ready(function(){initNavTree('rapidjson_8h.html','');});
<tr class="memitem:ga6a2b1695c13e77ae425e3cbac980ccb5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(x)&#160;&#160;&#160;(x)</td></tr>
<tr class="memdesc:ga6a2b1695c13e77ae425e3cbac980ccb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compiler branching hint for expression with low probability to be true. <a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">更多...</a><br /></td></tr>
<tr class="separator:ga6a2b1695c13e77ae425e3cbac980ccb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abdc7cd7902748ffe6626d71c59a73c3b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abdc7cd7902748ffe6626d71c59a73c3b"></a>
+<tr class="memitem:abdc7cd7902748ffe6626d71c59a73c3b"><td class="memItemLeft" align="right" valign="top"><a id="abdc7cd7902748ffe6626d71c59a73c3b"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(TypeName)&#160;&#160;&#160;new TypeName</td></tr>
<tr class="memdesc:abdc7cd7902748ffe6626d71c59a73c3b"><td class="mdescLeft">&#160;</td><td class="mdescRight">! customization point for global <code>new</code> <br /></td></tr>
<tr class="separator:abdc7cd7902748ffe6626d71c59a73c3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a52c941c3fdd646527cdcd42aa846a28a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a52c941c3fdd646527cdcd42aa846a28a"></a>
+<tr class="memitem:a52c941c3fdd646527cdcd42aa846a28a"><td class="memItemLeft" align="right" valign="top"><a id="a52c941c3fdd646527cdcd42aa846a28a"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a>(x)&#160;&#160;&#160;delete x</td></tr>
<tr class="memdesc:a52c941c3fdd646527cdcd42aa846a28a"><td class="mdescLeft">&#160;</td><td class="mdescRight">! customization point for global <code>delete</code> <br /></td></tr>
<tr class="separator:a52c941c3fdd646527cdcd42aa846a28a"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -188,7 +189,7 @@ $(document).ready(function(){initNavTree('rapidjson_8h.html','');});
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
类型定义</h2></td></tr>
<tr class="memitem:a44eb33eaa523e36d466b1ced64b85c84"><td class="memItemLeft" align="right" valign="top">typedef unsigned&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">rapidjson::SizeType</a></td></tr>
-<tr class="memdesc:a44eb33eaa523e36d466b1ced64b85c84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size type (for string lengths, array sizes, etc.) <a href="#a44eb33eaa523e36d466b1ced64b85c84">更多...</a><br /></td></tr>
+<tr class="memdesc:a44eb33eaa523e36d466b1ced64b85c84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size type (for string lengths, array sizes, etc.) <a href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">更多...</a><br /></td></tr>
<tr class="separator:a44eb33eaa523e36d466b1ced64b85c84"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
@@ -203,15 +204,17 @@ $(document).ready(function(){initNavTree('rapidjson_8h.html','');});
<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">rapidjson::kStringType</a> = 5,
<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">rapidjson::kNumberType</a> = 6
<br />
- }</td></tr>
-<tr class="memdesc:ae79a4751c1c460ff0de5ecc07874f3e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of JSON value. <a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">更多...</a><br /></td></tr>
+ }<tr class="memdesc:ae79a4751c1c460ff0de5ecc07874f3e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Type of JSON value <a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">更多...</a><br /></td></tr>
+</td></tr>
<tr class="separator:ae79a4751c1c460ff0de5ecc07874f3e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p>common definitions and configuration </p>
-<dl class="section see"><dt>参见</dt><dd><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html" title="Configuration macros for library features. ">RapidJSON configuration</a> </dd></dl>
+<dl class="section see"><dt>参见</dt><dd><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html" title="Configuration macros for library features ">RapidJSON configuration</a> </dd></dl>
</div><h2 class="groupheader">宏定义说明</h2>
-<a class="anchor" id="af95188da1d8eb6d4b148fe9ce71cd7c4"></a>
+<a id="af95188da1d8eb6d4b148fe9ce71cd7c4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af95188da1d8eb6d4b148fe9ce71cd7c4">&#9670;&nbsp;</a></span>RAPIDJSON_STATIC_ASSERT</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -235,7 +238,9 @@ $(document).ready(function(){initNavTree('rapidjson_8h.html','');});
</div>
</div>
-<a class="anchor" id="aaee1245f375a71be1ac9b8a07ba5fb8f"></a>
+<a id="aaee1245f375a71be1ac9b8a07ba5fb8f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aaee1245f375a71be1ac9b8a07ba5fb8f">&#9670;&nbsp;</a></span>RAPIDJSON_UINT64_C2</h2>
+
<div class="memitem">
<div class="memproto">
<table class="memname">
@@ -270,7 +275,7 @@ $(document).ready(function(){initNavTree('rapidjson_8h.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="rapidjson_8h.html">rapidjson.h</a></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="rapidjson_8h.html">rapidjson.h</a></li>
</ul>
</div>
</body>
diff --git a/zh-cn/rapidjson_8h_source.html b/zh-cn/rapidjson_8h_source.html
index d6d2cf70..8b72c61b 100644
--- a/zh-cn/rapidjson_8h_source.html
+++ b/zh-cn/rapidjson_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/rapidjson.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('rapidjson_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,638 +81,10 @@ $(document).ready(function(){initNavTree('rapidjson_8h_source.html','');});
<div class="title">rapidjson.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="rapidjson_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_RAPIDJSON_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_RAPIDJSON_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">/*!\file rapidjson.h</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> \brief common definitions and configuration</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> </span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> \see RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">/*! \defgroup RAPIDJSON_CONFIG RapidJSON configuration</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> \brief Configuration macros for library features</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> Some RapidJSON features are configurable to adapt the library to a wide</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> variety of platforms, environments and usage scenarios. Most of the</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> features can be configured in terms of overriden or predefined</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> preprocessor macros at compile-time.</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> Some additional customization is available in the \ref RAPIDJSON_ERRORS APIs.</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> \note These macros should be given on the compiler command-line</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> (where applicable) to avoid inconsistent values when compiling</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> different translation units of a single application.</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span> <span class="comment">// malloc(), realloc(), free(), size_t</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span> <span class="comment">// memset(), memcpy(), memmove(), memcmp()</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_VERSION_STRING</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">// ALWAYS synchronize the following 3 macros with corresponding variables in /CMakeLists.txt.</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"></span><span class="comment">// token stringification</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#define RAPIDJSON_STRINGIFY(x) RAPIDJSON_DO_STRINGIFY(x)</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#define RAPIDJSON_DO_STRINGIFY(x) #x</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">// token concatenation</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#define RAPIDJSON_JOIN(X, Y) RAPIDJSON_DO_JOIN(X, Y)</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#define RAPIDJSON_DO_JOIN(X, Y) RAPIDJSON_DO_JOIN2(X, Y)</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#define RAPIDJSON_DO_JOIN2(X, Y) X##Y</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">//!@endcond</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment">/*! \def RAPIDJSON_MAJOR_VERSION</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> \brief Major version of RapidJSON in integer.</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment">*/</span><span class="comment"></span></div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment">/*! \def RAPIDJSON_MINOR_VERSION</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> \brief Minor version of RapidJSON in integer.</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">*/</span><span class="comment"></span></div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment">/*! \def RAPIDJSON_PATCH_VERSION</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> \brief Patch version of RapidJSON in integer.</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment">*/</span><span class="comment"></span></div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">/*! \def RAPIDJSON_VERSION_STRING</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> \brief Version of RapidJSON in &quot;&lt;major&gt;.&lt;minor&gt;.&lt;patch&gt;&quot; string format.</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf1ff1685be6cbebb5d4b2ab997776f45"> 75</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_MAJOR_VERSION 1</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf9125105c593a636a79f1c2d96835376"> 76</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_MINOR_VERSION 1</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf967d31be43666ce7f53756d73bd1cdf"> 77</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_PATCH_VERSION 0</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gad283cfde97d9a32b7d8e8107b11f70a6"> 78</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_VERSION_STRING \</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor"> RAPIDJSON_STRINGIFY(RAPIDJSON_MAJOR_VERSION.RAPIDJSON_MINOR_VERSION.RAPIDJSON_PATCH_VERSION)</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_NAMESPACE_(BEGIN|END)</span><span class="comment"></span></div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment">/*! \def RAPIDJSON_NAMESPACE</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> \brief provide custom rapidjson namespace</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> In order to avoid symbol clashes and/or &quot;One Definition Rule&quot; errors</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> between multiple inclusions of (different versions of) RapidJSON in</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> a single binary, users can customize the name of the main RapidJSON</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> namespace.</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> In case of a single nesting level, defining \c RAPIDJSON_NAMESPACE</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> to a custom name (e.g. \c MyRapidJSON) is sufficient. If multiple</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> levels are needed, both \ref RAPIDJSON_NAMESPACE_BEGIN and \ref</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> RAPIDJSON_NAMESPACE_END need to be defined as well:</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> \code</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> // in some .cpp file</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> #define RAPIDJSON_NAMESPACE my::rapidjson</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> #define RAPIDJSON_NAMESPACE_BEGIN namespace my { namespace rapidjson {</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> #define RAPIDJSON_NAMESPACE_END } }</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> #include &quot;rapidjson/...&quot;</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> \endcode</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> \see rapidjson</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> */</span><span class="comment"></span></div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment">/*! \def RAPIDJSON_NAMESPACE_BEGIN</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> \brief provide custom rapidjson namespace (opening expression)</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> \see RAPIDJSON_NAMESPACE</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment">*/</span><span class="comment"></span></div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment">/*! \def RAPIDJSON_NAMESPACE_END</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> \brief provide custom rapidjson namespace (closing expression)</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> \see RAPIDJSON_NAMESPACE</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NAMESPACE</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga743a79d3af927391fe3eb5c979136899"> 118</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_NAMESPACE rapidjson</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NAMESPACE_BEGIN</span></div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor">#define RAPIDJSON_NAMESPACE_BEGIN namespace RAPIDJSON_NAMESPACE {</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NAMESPACE_END</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="preprocessor">#define RAPIDJSON_NAMESPACE_END }</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor">#ifdef RAPIDJSON_DOXYGEN_RUNNING</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_STDSTRING 1 // force generation of documentation</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_STDSTRING 0 // no std::string support by default</span></div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment">/*! \def RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> \brief Enable RapidJSON support for \c std::string</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> By defining this preprocessor symbol to \c 1, several convenience functions for using</span></div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> \ref rapidjson::GenericValue with \c std::string are enabled, especially</span></div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"> for construction and comparison.</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"> \hideinitializer</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="preprocessor">#endif // !defined(RAPIDJSON_HAS_STDSTRING)</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_NO_INT64DEFINE</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment">/*! \def RAPIDJSON_NO_INT64DEFINE</span></div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"> \brief Use external 64-bit integer types.</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"> RapidJSON requires the 64-bit integer types \c int64_t and \c uint64_t types</span></div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"> to be available at global scope.</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"> If users have their own definition, define RAPIDJSON_NO_INT64DEFINE to</span></div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> prevent RapidJSON from defining its own types.</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NO_INT64DEFINE</span></div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"></span><span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; (_MSC_VER &lt; 1800) // Visual Studio 2013</span></div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="preprocessor">#include &quot;msinttypes/stdint.h&quot;</span></div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="preprocessor">#include &quot;msinttypes/inttypes.h&quot;</span></div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment">// Other compilers should have this.</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment">//!@endcond</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"></span><span class="preprocessor">#ifdef RAPIDJSON_DOXYGEN_RUNNING</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga7f4e50c35dae3b015390daa6d48ce23c"> 177</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_NO_INT64DEFINE</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_NO_INT64TYPEDEF</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_FORCEINLINE</span></div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_FORCEINLINE</span></div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"></span><span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; defined(NDEBUG)</span></div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="preprocessor">#define RAPIDJSON_FORCEINLINE __forceinline</span></div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="preprocessor">#elif defined(__GNUC__) &amp;&amp; __GNUC__ &gt;= 4 &amp;&amp; defined(NDEBUG)</span></div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="preprocessor">#define RAPIDJSON_FORCEINLINE __attribute__((always_inline))</span></div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="preprocessor">#define RAPIDJSON_FORCEINLINE</span></div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment">//!@endcond</span></div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"></span><span class="preprocessor">#endif // RAPIDJSON_FORCEINLINE</span></div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_ENDIAN</span></div>
-<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="rapidjson_8h.html#addcc0c3607c5790f35cc4c15885ff97c"> 198</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_LITTLEENDIAN 0 </span><span class="comment">//!&lt; Little endian machine</span></div>
-<div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="rapidjson_8h.html#ac7951ebf8a2624ab85d2dcd3ec7af974"> 199</a></span>&#160;<span class="comment"></span>#define RAPIDJSON_BIGENDIAN 1 <span class="comment">//!&lt; Big endian machine</span></div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment">//! Endianness of the machine.</span></div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="comment"> \def RAPIDJSON_ENDIAN</span></div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment"> GCC 4.6 provided macro for detecting endianness of the target machine. But other</span></div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment"> compilers may not have this. User can define RAPIDJSON_ENDIAN to either</span></div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment"> \ref RAPIDJSON_LITTLEENDIAN or \ref RAPIDJSON_BIGENDIAN.</span></div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"> Default detection implemented with reference to</span></div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment"> \li https://gcc.gnu.org/onlinedocs/gcc-4.6.0/cpp/Common-Predefined-Macros.html</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="comment"> \li http://www.boost.org/doc/libs/1_42_0/boost/detail/endian.hpp</span></div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ENDIAN</span></div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment">// Detect with GCC 4.6&#39;s macro</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="preprocessor"># ifdef __BYTE_ORDER__</span></div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="preprocessor"># if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__</span></div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN</span></div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="preprocessor"># elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__</span></div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN</span></div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="preprocessor"># else</span></div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="preprocessor"># error Unknown machine endianess detected. User needs to define RAPIDJSON_ENDIAN.</span></div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="preprocessor"># endif // __BYTE_ORDER__</span></div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment">// Detect with GLIBC&#39;s endian.h</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="preprocessor"># elif defined(__GLIBC__)</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="preprocessor"># include &lt;endian.h&gt;</span></div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="preprocessor"># if (__BYTE_ORDER == __LITTLE_ENDIAN)</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN</span></div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="preprocessor"># elif (__BYTE_ORDER == __BIG_ENDIAN)</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN</span></div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="preprocessor"># else</span></div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="preprocessor"># error Unknown machine endianess detected. User needs to define RAPIDJSON_ENDIAN.</span></div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="preprocessor"># endif // __GLIBC__</span></div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment">// Detect with _LITTLE_ENDIAN and _BIG_ENDIAN macro</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="preprocessor"># elif defined(_LITTLE_ENDIAN) &amp;&amp; !defined(_BIG_ENDIAN)</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="preprocessor"># elif defined(_BIG_ENDIAN) &amp;&amp; !defined(_LITTLE_ENDIAN)</span></div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment">// Detect with architecture macros</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="preprocessor"># elif defined(__sparc) || defined(__sparc__) || defined(_POWER) || defined(__powerpc__) || defined(__ppc__) || defined(__hpux) || defined(__hppa) || defined(_MIPSEB) || defined(_POWER) || defined(__s390__)</span></div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN</span></div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="preprocessor"># elif defined(__i386__) || defined(__alpha__) || defined(__ia64) || defined(__ia64__) || defined(_M_IX86) || defined(_M_IA64) || defined(_M_ALPHA) || defined(__amd64) || defined(__amd64__) || defined(_M_AMD64) || defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || defined(__bfin__)</span></div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN</span></div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="preprocessor"># elif defined(_MSC_VER) &amp;&amp; defined(_M_ARM)</span></div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN</span></div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="preprocessor"># elif defined(RAPIDJSON_DOXYGEN_RUNNING)</span></div>
-<div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaba2445f582142cf918e74c2d22d1aa07"> 247</a></span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN</span></div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="preprocessor"># else</span></div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="preprocessor"># error Unknown machine endianess detected. User needs to define RAPIDJSON_ENDIAN. </span></div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="preprocessor"># endif</span></div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ENDIAN</span></div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_64BIT</span></div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment">//! Whether using 64-bit architecture</span></div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment"></span><span class="preprocessor">#ifndef RAPIDJSON_64BIT</span></div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="preprocessor">#if defined(__LP64__) || (defined(__x86_64__) &amp;&amp; defined(__ILP32__)) || defined(_WIN64) || defined(__EMSCRIPTEN__)</span></div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="preprocessor">#define RAPIDJSON_64BIT 1</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="rapidjson_8h.html#a93973847cb99354b6b5bb5605aa7fe52"> 261</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_64BIT 0</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_64BIT</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_ALIGN</span></div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment">//! Data alignment of the machine.</span></div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment"></span><span class="comment">/*! \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment"> \param x pointer to align</span></div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment"> Some machines require strict data alignment. Currently the default uses 4 bytes</span></div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="comment"> alignment on 32-bit platforms and 8 bytes alignment for 64-bit platforms.</span></div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="comment"> User can customize by defining the RAPIDJSON_ALIGN function macro.</span></div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ALIGN</span></div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="preprocessor">#if RAPIDJSON_64BIT == 1</span></div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="preprocessor">#define RAPIDJSON_ALIGN(x) (((x) + static_cast&lt;uint64_t&gt;(7u)) &amp; ~static_cast&lt;uint64_t&gt;(7u))</span></div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242"> 280</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_ALIGN(x) (((x) + 3u) &amp; ~3u)</span></div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_UINT64_C2</span></div>
-<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="comment">//! Construct a 64-bit literal by a pair of 32-bit integer.</span></div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="comment"> 64-bit literal with or without ULL suffix is prone to compiler warnings.</span></div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="comment"> UINT64_C() is C macro which cause compilation problems.</span></div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="comment"> Use this macro to define 64-bit constants by a pair of 32-bit integer.</span></div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_UINT64_C2</span></div>
-<div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f"> 294</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_UINT64_C2(high32, low32) ((static_cast&lt;uint64_t&gt;(high32) &lt;&lt; 32) | static_cast&lt;uint64_t&gt;(low32))</span></div>
-<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_48BITPOINTER_OPTIMIZATION</span></div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment">//! Use only lower 48-bit address for some pointers.</span></div>
-<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="comment"> This optimization uses the fact that current X86-64 architecture only implement lower 48-bit virtual address.</span></div>
-<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment"> The higher 16-bit can be used for storing other data.</span></div>
-<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="comment"> \c GenericValue uses this optimization to reduce its size form 24 bytes to 16 bytes in 64-bit architecture.</span></div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_48BITPOINTER_OPTIMIZATION</span></div>
-<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="preprocessor">#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64)</span></div>
-<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="preprocessor">#define RAPIDJSON_48BITPOINTER_OPTIMIZATION 1</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga93fb983f78208d12c822376e1ea6d185"> 312</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_48BITPOINTER_OPTIMIZATION 0</span></div>
-<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_48BITPOINTER_OPTIMIZATION</span></div>
-<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;</div>
-<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="preprocessor">#if RAPIDJSON_48BITPOINTER_OPTIMIZATION == 1</span></div>
-<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="preprocessor">#if RAPIDJSON_64BIT != 1</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="preprocessor">#error RAPIDJSON_48BITPOINTER_OPTIMIZATION can only be set to 1 when RAPIDJSON_64BIT=1</span></div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="preprocessor">#define RAPIDJSON_SETPOINTER(type, p, x) (p = reinterpret_cast&lt;type *&gt;((reinterpret_cast&lt;uintptr_t&gt;(p) &amp; static_cast&lt;uintptr_t&gt;(RAPIDJSON_UINT64_C2(0xFFFF0000, 0x00000000))) | reinterpret_cast&lt;uintptr_t&gt;(reinterpret_cast&lt;const void*&gt;(x))))</span></div>
-<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="preprocessor">#define RAPIDJSON_GETPOINTER(type, p) (reinterpret_cast&lt;type *&gt;(reinterpret_cast&lt;uintptr_t&gt;(p) &amp; static_cast&lt;uintptr_t&gt;(RAPIDJSON_UINT64_C2(0x0000FFFF, 0xFFFFFFFF))))</span></div>
-<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="preprocessor">#define RAPIDJSON_SETPOINTER(type, p, x) (p = (x))</span></div>
-<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="preprocessor">#define RAPIDJSON_GETPOINTER(type, p) (p)</span></div>
-<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_SSE2/RAPIDJSON_SSE42/RAPIDJSON_NEON/RAPIDJSON_SIMD</span></div>
-<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="comment">/*! \def RAPIDJSON_SIMD</span></div>
-<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment"> \brief Enable SSE2/SSE4.2/Neon optimization.</span></div>
-<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment"> RapidJSON supports optimized implementations for some parsing operations</span></div>
-<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment"> based on the SSE2, SSE4.2 or NEon SIMD extensions on modern Intel</span></div>
-<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment"> or ARM compatible processors.</span></div>
-<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="comment"> To enable these optimizations, three different symbols can be defined;</span></div>
-<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="comment"> \code</span></div>
-<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment"> // Enable SSE2 optimization.</span></div>
-<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment"> #define RAPIDJSON_SSE2</span></div>
-<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="comment"> // Enable SSE4.2 optimization.</span></div>
-<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="comment"> #define RAPIDJSON_SSE42</span></div>
-<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="comment"> \endcode</span></div>
-<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="comment"> // Enable ARM Neon optimization.</span></div>
-<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="comment"> #define RAPIDJSON_NEON</span></div>
-<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="comment"> \endcode</span></div>
-<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="comment"> \c RAPIDJSON_SSE42 takes precedence over SSE2, if both are defined.</span></div>
-<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="comment"> If any of these symbols is defined, RapidJSON defines the macro</span></div>
-<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="comment"> \c RAPIDJSON_SIMD to indicate the availability of the optimized code.</span></div>
-<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="preprocessor">#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42) \</span></div>
-<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="preprocessor"> || defined(RAPIDJSON_NEON) || defined(RAPIDJSON_DOXYGEN_RUNNING)</span></div>
-<div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga0ccf72f3ebc4b3306ab669f95ca5c64b"> 358</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_SIMD</span></div>
-<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_NO_SIZETYPEDEFINE</span></div>
-<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div>
-<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NO_SIZETYPEDEFINE</span></div>
-<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment">/*! \def RAPIDJSON_NO_SIZETYPEDEFINE</span></div>
-<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="comment"> \brief User-provided \c SizeType definition.</span></div>
-<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="comment"> In order to avoid using 32-bit size types for indexing strings and arrays,</span></div>
-<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="comment"> define this preprocessor symbol and provide the type rapidjson::SizeType</span></div>
-<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="comment"> before including RapidJSON:</span></div>
-<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="comment"> \code</span></div>
-<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="comment"> #define RAPIDJSON_NO_SIZETYPEDEFINE</span></div>
-<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="comment"> namespace rapidjson { typedef ::std::size_t SizeType; }</span></div>
-<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="comment"> #include &quot;rapidjson/...&quot;</span></div>
-<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="comment"> \endcode</span></div>
-<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="comment"> \see rapidjson::SizeType</span></div>
-<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="preprocessor">#ifdef RAPIDJSON_DOXYGEN_RUNNING</span></div>
-<div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga250603aa9e2a12429b25ba0c8108ad4f"> 381</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_NO_SIZETYPEDEFINE</span></div>
-<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="namespacerapidjson.html"> 383</a></span>&#160;RAPIDJSON_NAMESPACE_BEGIN<span class="comment"></span></div>
-<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="comment">//! Size type (for string lengths, array sizes, etc.)</span></div>
-<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="comment"></span><span class="comment">/*! RapidJSON uses 32-bit array/string indices even on 64-bit platforms,</span></div>
-<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="comment"> instead of using \c size_t. Users may override the SizeType by defining</span></div>
-<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="comment"> \ref RAPIDJSON_NO_SIZETYPEDEFINE.</span></div>
-<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84"> 389</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>;</div>
-<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div>
-<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="comment">// always import std::size_t to rapidjson namespace</span></div>
-<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="keyword">using</span> std::size_t;</div>
-<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_ASSERT</span></div>
-<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="comment">//! Assertion.</span></div>
-<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="comment"></span><span class="comment">/*! \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="comment"> By default, rapidjson uses C \c assert() for internal assertions.</span></div>
-<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="comment"> User can override it by defining RAPIDJSON_ASSERT(x) macro.</span></div>
-<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;<span class="comment"> \note Parsing errors are handled and can be customized by the</span></div>
-<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="comment"> \ref RAPIDJSON_ERRORS APIs.</span></div>
-<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ASSERT</span></div>
-<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span></div>
-<div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c"> 411</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_ASSERT(x) assert(x)</span></div>
-<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ASSERT</span></div>
-<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_STATIC_ASSERT</span></div>
-<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div>
-<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="comment">// Prefer C++11 static_assert, if available</span></div>
-<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_STATIC_ASSERT</span></div>
-<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="preprocessor">#if __cplusplus &gt;= 201103L || ( defined(_MSC_VER) &amp;&amp; _MSC_VER &gt;= 1800 )</span></div>
-<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="preprocessor">#define RAPIDJSON_STATIC_ASSERT(x) \</span></div>
-<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="preprocessor"> static_assert(x, RAPIDJSON_STRINGIFY(x))</span></div>
-<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="preprocessor">#endif // C++11</span></div>
-<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_STATIC_ASSERT</span></div>
-<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div>
-<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="comment">// Adopt C++03 implementation from boost</span></div>
-<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_STATIC_ASSERT</span></div>
-<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;<span class="preprocessor">#ifndef __clang__</span></div>
-<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div>
-<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;<span class="comment"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> x&gt; <span class="keyword">struct </span>STATIC_ASSERTION_FAILURE;</div>
-<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;<span class="keyword">template</span> &lt;&gt; <span class="keyword">struct </span>STATIC_ASSERTION_FAILURE&lt;true&gt; { <span class="keyword">enum</span> { value = 1 }; };</div>
-<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> x&gt; <span class="keyword">struct </span>StaticAssertTest {};</div>
-<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div>
-<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;<span class="preprocessor">#if defined(__GNUC__)</span></div>
-<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;<span class="preprocessor">#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))</span></div>
-<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;<span class="preprocessor">#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE </span></div>
-<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;<span class="preprocessor">#ifndef __clang__</span></div>
-<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;<span class="comment">//!@endcond</span></div>
-<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;<span class="comment"></span><span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="comment">/*! \def RAPIDJSON_STATIC_ASSERT</span></div>
-<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;<span class="comment"> \brief (Internal) macro to check for conditions at compile-time</span></div>
-<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;<span class="comment"> \param x compile-time condition</span></div>
-<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="comment"> \hideinitializer</span></div>
-<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4"> 450</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_STATIC_ASSERT(x) \</span></div>
-<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="preprocessor"> typedef ::RAPIDJSON_NAMESPACE::StaticAssertTest&lt; \</span></div>
-<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="preprocessor"> sizeof(::RAPIDJSON_NAMESPACE::STATIC_ASSERTION_FAILURE&lt;bool(x) &gt;)&gt; \</span></div>
-<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="preprocessor"> RAPIDJSON_JOIN(StaticAssertTypedef, __LINE__) RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE</span></div>
-<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_STATIC_ASSERT</span></div>
-<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_LIKELY, RAPIDJSON_UNLIKELY</span></div>
-<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="comment">//! Compiler branching hint for expression with high probability to be true.</span></div>
-<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="comment"> \param x Boolean expression likely to be true.</span></div>
-<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_LIKELY</span></div>
-<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="preprocessor">#if defined(__GNUC__) || defined(__clang__)</span></div>
-<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="preprocessor">#define RAPIDJSON_LIKELY(x) __builtin_expect(!!(x), 1)</span></div>
-<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00468"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1"> 468</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_LIKELY(x) (x)</span></div>
-<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="comment">//! Compiler branching hint for expression with low probability to be true.</span></div>
-<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="comment"> \param x Boolean expression unlikely to be true.</span></div>
-<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_UNLIKELY</span></div>
-<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="preprocessor">#if defined(__GNUC__) || defined(__clang__)</span></div>
-<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="preprocessor">#define RAPIDJSON_UNLIKELY(x) __builtin_expect(!!(x), 0)</span></div>
-<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00481"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5"> 481</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_UNLIKELY(x) (x)</span></div>
-<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="comment"></span><span class="comment">// Helpers</span></div>
-<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div>
-<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="preprocessor">#define RAPIDJSON_MULTILINEMACRO_BEGIN do { </span></div>
-<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="preprocessor">#define RAPIDJSON_MULTILINEMACRO_END \</span></div>
-<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="preprocessor">} while((void)0, 0)</span></div>
-<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;</div>
-<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="comment">// adopted from Boost</span></div>
-<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="preprocessor">#define RAPIDJSON_VERSION_CODE(x,y,z) \</span></div>
-<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="preprocessor"> (((x)*100000) + ((y)*100) + (z))</span></div>
-<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_DIAG_PUSH/POP, RAPIDJSON_DIAG_OFF</span></div>
-<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div>
-<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="preprocessor">#if defined(__GNUC__)</span></div>
-<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="preprocessor">#define RAPIDJSON_GNUC \</span></div>
-<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="preprocessor"> RAPIDJSON_VERSION_CODE(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__)</span></div>
-<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div>
-<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="preprocessor">#if defined(__clang__) || (defined(RAPIDJSON_GNUC) &amp;&amp; RAPIDJSON_GNUC &gt;= RAPIDJSON_VERSION_CODE(4,2,0))</span></div>
-<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div>
-<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="preprocessor">#define RAPIDJSON_PRAGMA(x) _Pragma(RAPIDJSON_STRINGIFY(x))</span></div>
-<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_PRAGMA(x) RAPIDJSON_PRAGMA(GCC diagnostic x)</span></div>
-<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_OFF(x) \</span></div>
-<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="preprocessor"> RAPIDJSON_DIAG_PRAGMA(ignored RAPIDJSON_STRINGIFY(RAPIDJSON_JOIN(-W,x)))</span></div>
-<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;</div>
-<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="comment">// push/pop support in Clang and GCC&gt;=4.6</span></div>
-<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="preprocessor">#if defined(__clang__) || (defined(RAPIDJSON_GNUC) &amp;&amp; RAPIDJSON_GNUC &gt;= RAPIDJSON_VERSION_CODE(4,6,0))</span></div>
-<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_PRAGMA(push)</span></div>
-<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_POP RAPIDJSON_DIAG_PRAGMA(pop)</span></div>
-<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="preprocessor">#else // GCC &gt;= 4.2, &lt; 4.6</span></div>
-<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_PUSH </span><span class="comment">/* ignored */</span><span class="preprocessor"></span></div>
-<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_POP </span><span class="comment">/* ignored */</span><span class="preprocessor"></span></div>
-<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;</div>
-<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="preprocessor">#elif defined(_MSC_VER)</span></div>
-<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;</div>
-<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="comment">// pragma (MSVC specific)</span></div>
-<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="preprocessor">#define RAPIDJSON_PRAGMA(x) __pragma(x)</span></div>
-<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_PRAGMA(x) RAPIDJSON_PRAGMA(warning(x))</span></div>
-<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;</div>
-<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_OFF(x) RAPIDJSON_DIAG_PRAGMA(disable: x)</span></div>
-<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_PRAGMA(push)</span></div>
-<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_POP RAPIDJSON_DIAG_PRAGMA(pop)</span></div>
-<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;</div>
-<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;</div>
-<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_OFF(x) </span><span class="comment">/* ignored */</span><span class="preprocessor"></span></div>
-<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_PUSH </span><span class="comment">/* ignored */</span><span class="preprocessor"></span></div>
-<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_POP </span><span class="comment">/* ignored */</span><span class="preprocessor"></span></div>
-<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;</div>
-<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_DIAG_*</span></div>
-<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="comment"></span><span class="comment">// C++11 features</span></div>
-<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;</div>
-<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
-<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="preprocessor">#if __has_feature(cxx_rvalue_references) &amp;&amp; \</span></div>
-<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="preprocessor"> (defined(_LIBCPP_VERSION) || defined(__GLIBCXX__) &amp;&amp; __GLIBCXX__ &gt;= 20080306)</span></div>
-<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1</span></div>
-<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 0</span></div>
-<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<span class="preprocessor">#elif (defined(RAPIDJSON_GNUC) &amp;&amp; (RAPIDJSON_GNUC &gt;= RAPIDJSON_VERSION_CODE(4,3,0)) &amp;&amp; defined(__GXX_EXPERIMENTAL_CXX0X__)) || \</span></div>
-<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="preprocessor"> (defined(_MSC_VER) &amp;&amp; _MSC_VER &gt;= 1600)</span></div>
-<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div>
-<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1</span></div>
-<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 0</span></div>
-<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;</div>
-<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_HAS_CXX11_NOEXCEPT</span></div>
-<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
-<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_NOEXCEPT __has_feature(cxx_noexcept)</span></div>
-<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;<span class="preprocessor">#elif (defined(RAPIDJSON_GNUC) &amp;&amp; (RAPIDJSON_GNUC &gt;= RAPIDJSON_VERSION_CODE(4,6,0)) &amp;&amp; defined(__GXX_EXPERIMENTAL_CXX0X__))</span></div>
-<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;<span class="comment">// (defined(_MSC_VER) &amp;&amp; _MSC_VER &gt;= ????) // not yet supported</span></div>
-<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_NOEXCEPT 1</span></div>
-<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_NOEXCEPT 0</span></div>
-<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_NOEXCEPT</span></div>
-<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="preprocessor">#define RAPIDJSON_NOEXCEPT noexcept</span></div>
-<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;<span class="preprocessor">#define RAPIDJSON_NOEXCEPT </span><span class="comment">/* noexcept */</span><span class="preprocessor"></span></div>
-<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_NOEXCEPT</span></div>
-<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;</div>
-<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;<span class="comment">// no automatic detection, yet</span></div>
-<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_HAS_CXX11_TYPETRAITS</span></div>
-<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_TYPETRAITS 0</span></div>
-<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div>
-<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_HAS_CXX11_RANGE_FOR</span></div>
-<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
-<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_RANGE_FOR __has_feature(cxx_range_for)</span></div>
-<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="preprocessor">#elif (defined(RAPIDJSON_GNUC) &amp;&amp; (RAPIDJSON_GNUC &gt;= RAPIDJSON_VERSION_CODE(4,6,0)) &amp;&amp; defined(__GXX_EXPERIMENTAL_CXX0X__)) || \</span></div>
-<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;<span class="preprocessor"> (defined(_MSC_VER) &amp;&amp; _MSC_VER &gt;= 1700)</span></div>
-<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_RANGE_FOR 1</span></div>
-<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_RANGE_FOR 0</span></div>
-<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_RANGE_FOR</span></div>
-<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;<span class="comment">//!@endcond</span></div>
-<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="comment"></span><span class="comment">// new/delete</span></div>
-<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;</div>
-<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NEW</span></div>
-<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;<span class="comment">///! customization point for global \c new</span></div>
-<div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b"> 599</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define RAPIDJSON_NEW(TypeName) new TypeName</span></div>
-<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_DELETE</span></div>
-<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="comment">///! customization point for global \c delete</span></div>
-<div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a"> 603</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define RAPIDJSON_DELETE(x) delete x</span></div>
-<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;<span class="comment"></span><span class="comment">// Type</span></div>
-<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;<span class="comment">/*! \namespace rapidjson</span></div>
-<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;<span class="comment"> \brief main RapidJSON namespace</span></div>
-<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="comment"> \see RAPIDJSON_NAMESPACE</span></div>
-<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="comment">//! Type of JSON value</span></div>
-<div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4"> 616</a></span>&#160;<span class="comment"></span><span class="keyword">enum</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> {</div>
-<div class="line"><a name="l00617"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff"> 617</a></span>&#160; <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">kNullType</a> = 0, <span class="comment">//!&lt; null</span></div>
-<div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607"> 618</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">kFalseType</a> = 1, <span class="comment">//!&lt; false</span></div>
-<div class="line"><a name="l00619"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e"> 619</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">kTrueType</a> = 2, <span class="comment">//!&lt; true</span></div>
-<div class="line"><a name="l00620"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9"> 620</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a> = 3, <span class="comment">//!&lt; object</span></div>
-<div class="line"><a name="l00621"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468"> 621</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a> = 4, <span class="comment">//!&lt; array </span></div>
-<div class="line"><a name="l00622"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7"> 622</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a> = 5, <span class="comment">//!&lt; string</span></div>
-<div class="line"><a name="l00623"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a"> 623</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a> = 6 <span class="comment">//!&lt; number</span></div>
-<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="comment"></span>};</div>
-<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div>
-<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div>
-<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_RAPIDJSON_H_</span></div>
-<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">rapidjson::kTrueType</a></div><div class="ttdoc">true </div><div class="ttdef"><b>Definition:</b> rapidjson.h:619</div></div>
+<a href="rapidjson_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_RAPIDJSON_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_RAPIDJSON_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">/*!\file rapidjson.h</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> \brief common definitions and configuration</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment"> \see RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">/*! \defgroup RAPIDJSON_CONFIG RapidJSON configuration</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> \brief Configuration macros for library features</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> Some RapidJSON features are configurable to adapt the library to a wide</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> variety of platforms, environments and usage scenarios. Most of the</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> features can be configured in terms of overriden or predefined</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> preprocessor macros at compile-time.</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> Some additional customization is available in the \ref RAPIDJSON_ERRORS APIs.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> \note These macros should be given on the compiler command-line</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> (where applicable) to avoid inconsistent values when compiling</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> different translation units of a single application.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;cstdlib&gt;</span> <span class="comment">// malloc(), realloc(), free(), size_t</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span> <span class="comment">// memset(), memcpy(), memmove(), memcmp()</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_VERSION_STRING</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">// ALWAYS synchronize the following 3 macros with corresponding variables in /CMakeLists.txt.</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"></span><span class="comment">// token stringification</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#define RAPIDJSON_STRINGIFY(x) RAPIDJSON_DO_STRINGIFY(x)</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#define RAPIDJSON_DO_STRINGIFY(x) #x</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">// token concatenation</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#define RAPIDJSON_JOIN(X, Y) RAPIDJSON_DO_JOIN(X, Y)</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="preprocessor">#define RAPIDJSON_DO_JOIN(X, Y) RAPIDJSON_DO_JOIN2(X, Y)</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#define RAPIDJSON_DO_JOIN2(X, Y) X##Y</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">//!@endcond</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment">/*! \def RAPIDJSON_MAJOR_VERSION</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"> \brief Major version of RapidJSON in integer.</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment">*/</span><span class="comment"></span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment">/*! \def RAPIDJSON_MINOR_VERSION</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> \brief Minor version of RapidJSON in integer.</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">*/</span><span class="comment"></span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment">/*! \def RAPIDJSON_PATCH_VERSION</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> \brief Patch version of RapidJSON in integer.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment">*/</span><span class="comment"></span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">/*! \def RAPIDJSON_VERSION_STRING</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> \brief Version of RapidJSON in &quot;&lt;major&gt;.&lt;minor&gt;.&lt;patch&gt;&quot; string format.</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf1ff1685be6cbebb5d4b2ab997776f45"> 75</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_MAJOR_VERSION 1</span></div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf9125105c593a636a79f1c2d96835376"> 76</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_MINOR_VERSION 1</span></div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaf967d31be43666ce7f53756d73bd1cdf"> 77</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_PATCH_VERSION 0</span></div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gad283cfde97d9a32b7d8e8107b11f70a6"> 78</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_VERSION_STRING \</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor"> RAPIDJSON_STRINGIFY(RAPIDJSON_MAJOR_VERSION.RAPIDJSON_MINOR_VERSION.RAPIDJSON_PATCH_VERSION)</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_NAMESPACE_(BEGIN|END)</span><span class="comment"></span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment">/*! \def RAPIDJSON_NAMESPACE</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> \brief provide custom rapidjson namespace</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> In order to avoid symbol clashes and/or &quot;One Definition Rule&quot; errors</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> between multiple inclusions of (different versions of) RapidJSON in</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> a single binary, users can customize the name of the main RapidJSON</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> namespace.</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> In case of a single nesting level, defining \c RAPIDJSON_NAMESPACE</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> to a custom name (e.g. \c MyRapidJSON) is sufficient. If multiple</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> levels are needed, both \ref RAPIDJSON_NAMESPACE_BEGIN and \ref</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> RAPIDJSON_NAMESPACE_END need to be defined as well:</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> \code</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> // in some .cpp file</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> #define RAPIDJSON_NAMESPACE my::rapidjson</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> #define RAPIDJSON_NAMESPACE_BEGIN namespace my { namespace rapidjson {</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> #define RAPIDJSON_NAMESPACE_END } }</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> #include &quot;rapidjson/...&quot;</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> \endcode</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> \see rapidjson</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> */</span><span class="comment"></span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment">/*! \def RAPIDJSON_NAMESPACE_BEGIN</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> \brief provide custom rapidjson namespace (opening expression)</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> \see RAPIDJSON_NAMESPACE</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment">*/</span><span class="comment"></span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment">/*! \def RAPIDJSON_NAMESPACE_END</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> \brief provide custom rapidjson namespace (closing expression)</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> \see RAPIDJSON_NAMESPACE</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NAMESPACE</span></div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga743a79d3af927391fe3eb5c979136899"> 118</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_NAMESPACE rapidjson</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NAMESPACE_BEGIN</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor">#define RAPIDJSON_NAMESPACE_BEGIN namespace RAPIDJSON_NAMESPACE {</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NAMESPACE_END</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="preprocessor">#define RAPIDJSON_NAMESPACE_END }</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor">#ifdef RAPIDJSON_DOXYGEN_RUNNING</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_STDSTRING 1 // force generation of documentation</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_STDSTRING 0 // no std::string support by default</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment">/*! \def RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> \brief Enable RapidJSON support for \c std::string</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> By defining this preprocessor symbol to \c 1, several convenience functions for using</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> \ref rapidjson::GenericValue with \c std::string are enabled, especially</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"> for construction and comparison.</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"> \hideinitializer</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="preprocessor">#endif // !defined(RAPIDJSON_HAS_STDSTRING)</span></div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_NO_INT64DEFINE</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment">/*! \def RAPIDJSON_NO_INT64DEFINE</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"> \brief Use external 64-bit integer types.</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"> RapidJSON requires the 64-bit integer types \c int64_t and \c uint64_t types</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"> to be available at global scope.</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"> If users have their own definition, define RAPIDJSON_NO_INT64DEFINE to</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> prevent RapidJSON from defining its own types.</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NO_INT64DEFINE</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"></span><span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; (_MSC_VER &lt; 1800) // Visual Studio 2013</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="preprocessor">#include &quot;msinttypes/stdint.h&quot;</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="preprocessor">#include &quot;msinttypes/inttypes.h&quot;</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment">// Other compilers should have this.</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="preprocessor">#include &lt;inttypes.h&gt;</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment">//!@endcond</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"></span><span class="preprocessor">#ifdef RAPIDJSON_DOXYGEN_RUNNING</span></div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga7f4e50c35dae3b015390daa6d48ce23c"> 177</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_NO_INT64DEFINE</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_NO_INT64TYPEDEF</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_FORCEINLINE</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_FORCEINLINE</span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment"></span><span class="preprocessor">#if defined(_MSC_VER) &amp;&amp; defined(NDEBUG)</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="preprocessor">#define RAPIDJSON_FORCEINLINE __forceinline</span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="preprocessor">#elif defined(__GNUC__) &amp;&amp; __GNUC__ &gt;= 4 &amp;&amp; defined(NDEBUG)</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="preprocessor">#define RAPIDJSON_FORCEINLINE __attribute__((always_inline))</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="preprocessor">#define RAPIDJSON_FORCEINLINE</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment">//!@endcond</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"></span><span class="preprocessor">#endif // RAPIDJSON_FORCEINLINE</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_ENDIAN</span></div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="rapidjson_8h.html#addcc0c3607c5790f35cc4c15885ff97c"> 198</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_LITTLEENDIAN 0 </span><span class="comment">//!&lt; Little endian machine</span></div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="rapidjson_8h.html#ac7951ebf8a2624ab85d2dcd3ec7af974"> 199</a></span>&#160;<span class="comment"></span>#define RAPIDJSON_BIGENDIAN 1 <span class="comment">//!&lt; Big endian machine</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment">//! Endianness of the machine.</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="comment"> \def RAPIDJSON_ENDIAN</span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment"> GCC 4.6 provided macro for detecting endianness of the target machine. But other</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment"> compilers may not have this. User can define RAPIDJSON_ENDIAN to either</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment"> \ref RAPIDJSON_LITTLEENDIAN or \ref RAPIDJSON_BIGENDIAN.</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment"> Default detection implemented with reference to</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment"> \li https://gcc.gnu.org/onlinedocs/gcc-4.6.0/cpp/Common-Predefined-Macros.html</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="comment"> \li http://www.boost.org/doc/libs/1_42_0/boost/detail/endian.hpp</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ENDIAN</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment">// Detect with GCC 4.6&#39;s macro</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="preprocessor"># ifdef __BYTE_ORDER__</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="preprocessor"># if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="preprocessor"># elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="preprocessor"># else</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="preprocessor"># error Unknown machine endianess detected. User needs to define RAPIDJSON_ENDIAN.</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="preprocessor"># endif // __BYTE_ORDER__</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment">// Detect with GLIBC&#39;s endian.h</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="preprocessor"># elif defined(__GLIBC__)</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="preprocessor"># include &lt;endian.h&gt;</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="preprocessor"># if (__BYTE_ORDER == __LITTLE_ENDIAN)</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="preprocessor"># elif (__BYTE_ORDER == __BIG_ENDIAN)</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="preprocessor"># else</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="preprocessor"># error Unknown machine endianess detected. User needs to define RAPIDJSON_ENDIAN.</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="preprocessor"># endif // __GLIBC__</span></div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment">// Detect with _LITTLE_ENDIAN and _BIG_ENDIAN macro</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="preprocessor"># elif defined(_LITTLE_ENDIAN) &amp;&amp; !defined(_BIG_ENDIAN)</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="preprocessor"># elif defined(_BIG_ENDIAN) &amp;&amp; !defined(_LITTLE_ENDIAN)</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment">// Detect with architecture macros</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="preprocessor"># elif defined(__sparc) || defined(__sparc__) || defined(_POWER) || defined(__powerpc__) || defined(__ppc__) || defined(__hpux) || defined(__hppa) || defined(_MIPSEB) || defined(_POWER) || defined(__s390__)</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="preprocessor"># elif defined(__i386__) || defined(__alpha__) || defined(__ia64) || defined(__ia64__) || defined(_M_IX86) || defined(_M_IA64) || defined(_M_ALPHA) || defined(__amd64) || defined(__amd64__) || defined(_M_AMD64) || defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || defined(__bfin__)</span></div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="preprocessor"># elif defined(_MSC_VER) &amp;&amp; defined(_M_ARM)</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="preprocessor"># elif defined(RAPIDJSON_DOXYGEN_RUNNING)</span></div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gaba2445f582142cf918e74c2d22d1aa07"> 247</a></span>&#160;<span class="preprocessor"># define RAPIDJSON_ENDIAN</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="preprocessor"># else</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="preprocessor"># error Unknown machine endianess detected. User needs to define RAPIDJSON_ENDIAN. </span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="preprocessor"># endif</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ENDIAN</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_64BIT</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment">//! Whether using 64-bit architecture</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment"></span><span class="preprocessor">#ifndef RAPIDJSON_64BIT</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="preprocessor">#if defined(__LP64__) || (defined(__x86_64__) &amp;&amp; defined(__ILP32__)) || defined(_WIN64) || defined(__EMSCRIPTEN__)</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="preprocessor">#define RAPIDJSON_64BIT 1</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="rapidjson_8h.html#a93973847cb99354b6b5bb5605aa7fe52"> 261</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_64BIT 0</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_64BIT</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_ALIGN</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment">//! Data alignment of the machine.</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment"></span><span class="comment">/*! \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment"> \param x pointer to align</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment"> Some machines require strict data alignment. Currently the default uses 4 bytes</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="comment"> alignment on 32-bit platforms and 8 bytes alignment for 64-bit platforms.</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="comment"> User can customize by defining the RAPIDJSON_ALIGN function macro.</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ALIGN</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="preprocessor">#if RAPIDJSON_64BIT == 1</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="preprocessor">#define RAPIDJSON_ALIGN(x) (((x) + static_cast&lt;uint64_t&gt;(7u)) &amp; ~static_cast&lt;uint64_t&gt;(7u))</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga583915242504c7fdb36e826f02f76242"> 280</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_ALIGN(x) (((x) + 3u) &amp; ~3u)</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_UINT64_C2</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="comment">//! Construct a 64-bit literal by a pair of 32-bit integer.</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="comment"> 64-bit literal with or without ULL suffix is prone to compiler warnings.</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="comment"> UINT64_C() is C macro which cause compilation problems.</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="comment"> Use this macro to define 64-bit constants by a pair of 32-bit integer.</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_UINT64_C2</span></div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f"> 294</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_UINT64_C2(high32, low32) ((static_cast&lt;uint64_t&gt;(high32) &lt;&lt; 32) | static_cast&lt;uint64_t&gt;(low32))</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_48BITPOINTER_OPTIMIZATION</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment">//! Use only lower 48-bit address for some pointers.</span></div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="comment"> This optimization uses the fact that current X86-64 architecture only implement lower 48-bit virtual address.</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="comment"> The higher 16-bit can be used for storing other data.</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="comment"> \c GenericValue uses this optimization to reduce its size form 24 bytes to 16 bytes in 64-bit architecture.</span></div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_48BITPOINTER_OPTIMIZATION</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="preprocessor">#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64)</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="preprocessor">#define RAPIDJSON_48BITPOINTER_OPTIMIZATION 1</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00312"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga93fb983f78208d12c822376e1ea6d185"> 312</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_48BITPOINTER_OPTIMIZATION 0</span></div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_48BITPOINTER_OPTIMIZATION</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="preprocessor">#if RAPIDJSON_48BITPOINTER_OPTIMIZATION == 1</span></div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="preprocessor">#if RAPIDJSON_64BIT != 1</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="preprocessor">#error RAPIDJSON_48BITPOINTER_OPTIMIZATION can only be set to 1 when RAPIDJSON_64BIT=1</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="preprocessor">#define RAPIDJSON_SETPOINTER(type, p, x) (p = reinterpret_cast&lt;type *&gt;((reinterpret_cast&lt;uintptr_t&gt;(p) &amp; static_cast&lt;uintptr_t&gt;(RAPIDJSON_UINT64_C2(0xFFFF0000, 0x00000000))) | reinterpret_cast&lt;uintptr_t&gt;(reinterpret_cast&lt;const void*&gt;(x))))</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="preprocessor">#define RAPIDJSON_GETPOINTER(type, p) (reinterpret_cast&lt;type *&gt;(reinterpret_cast&lt;uintptr_t&gt;(p) &amp; static_cast&lt;uintptr_t&gt;(RAPIDJSON_UINT64_C2(0x0000FFFF, 0xFFFFFFFF))))</span></div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="preprocessor">#define RAPIDJSON_SETPOINTER(type, p, x) (p = (x))</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="preprocessor">#define RAPIDJSON_GETPOINTER(type, p) (p)</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_SSE2/RAPIDJSON_SSE42/RAPIDJSON_NEON/RAPIDJSON_SIMD</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="comment">/*! \def RAPIDJSON_SIMD</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment"> \brief Enable SSE2/SSE4.2/Neon optimization.</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment"> RapidJSON supports optimized implementations for some parsing operations</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment"> based on the SSE2, SSE4.2 or NEon SIMD extensions on modern Intel</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment"> or ARM compatible processors.</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="comment"> To enable these optimizations, three different symbols can be defined;</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="comment"> \code</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment"> // Enable SSE2 optimization.</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment"> #define RAPIDJSON_SSE2</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="comment"> // Enable SSE4.2 optimization.</span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="comment"> #define RAPIDJSON_SSE42</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="comment"> \endcode</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="comment"> // Enable ARM Neon optimization.</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="comment"> #define RAPIDJSON_NEON</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="comment"> \endcode</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="comment"> \c RAPIDJSON_SSE42 takes precedence over SSE2, if both are defined.</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="comment"> If any of these symbols is defined, RapidJSON defines the macro</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="comment"> \c RAPIDJSON_SIMD to indicate the availability of the optimized code.</span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="preprocessor">#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42) \</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="preprocessor"> || defined(RAPIDJSON_NEON) || defined(RAPIDJSON_DOXYGEN_RUNNING)</span></div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga0ccf72f3ebc4b3306ab669f95ca5c64b"> 358</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_SIMD</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_NO_SIZETYPEDEFINE</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NO_SIZETYPEDEFINE</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="comment">/*! \def RAPIDJSON_NO_SIZETYPEDEFINE</span></div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="comment"> \brief User-provided \c SizeType definition.</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="comment"> In order to avoid using 32-bit size types for indexing strings and arrays,</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="comment"> define this preprocessor symbol and provide the type rapidjson::SizeType</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="comment"> before including RapidJSON:</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="comment"> \code</span></div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="comment"> #define RAPIDJSON_NO_SIZETYPEDEFINE</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="comment"> namespace rapidjson { typedef ::std::size_t SizeType; }</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="comment"> #include &quot;rapidjson/...&quot;</span></div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="comment"> \endcode</span></div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="comment"> \see rapidjson::SizeType</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="preprocessor">#ifdef RAPIDJSON_DOXYGEN_RUNNING</span></div><div class="line"><a name="l00381"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga250603aa9e2a12429b25ba0c8108ad4f"> 381</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_NO_SIZETYPEDEFINE</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="namespacerapidjson.html"> 383</a></span>&#160;RAPIDJSON_NAMESPACE_BEGIN<span class="comment"></span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="comment">//! Size type (for string lengths, array sizes, etc.)</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="comment"></span><span class="comment">/*! RapidJSON uses 32-bit array/string indices even on 64-bit platforms,</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="comment"> instead of using \c size_t. Users may override the SizeType by defining</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="comment"> \ref RAPIDJSON_NO_SIZETYPEDEFINE.</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84"> 389</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="comment">// always import std::size_t to rapidjson namespace</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="keyword">using</span> std::size_t;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_ASSERT</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="comment">//! Assertion.</span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="comment"></span><span class="comment">/*! \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="comment"> By default, rapidjson uses C \c assert() for internal assertions.</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="comment"> User can override it by defining RAPIDJSON_ASSERT(x) macro.</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;<span class="comment"> \note Parsing errors are handled and can be customized by the</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="comment"> \ref RAPIDJSON_ERRORS APIs.</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_ASSERT</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span></div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c"> 411</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_ASSERT(x) assert(x)</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_ASSERT</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_STATIC_ASSERT</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="comment">// Prefer C++11 static_assert, if available</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_STATIC_ASSERT</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="preprocessor">#if __cplusplus &gt;= 201103L || ( defined(_MSC_VER) &amp;&amp; _MSC_VER &gt;= 1800 )</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="preprocessor">#define RAPIDJSON_STATIC_ASSERT(x) \</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="preprocessor"> static_assert(x, RAPIDJSON_STRINGIFY(x))</span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="preprocessor">#endif // C++11</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_STATIC_ASSERT</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="comment">// Adopt C++03 implementation from boost</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_STATIC_ASSERT</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;<span class="preprocessor">#ifndef __clang__</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;<span class="comment"></span><span class="preprocessor">#endif</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">bool</span> x&gt; <span class="keyword">struct </span>STATIC_ASSERTION_FAILURE;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;<span class="keyword">template</span> &lt;&gt; <span class="keyword">struct </span>STATIC_ASSERTION_FAILURE&lt;true&gt; { <span class="keyword">enum</span> { value = 1 }; };</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;<span class="keyword">template</span> &lt;<span class="keywordtype">size_t</span> x&gt; <span class="keyword">struct </span>StaticAssertTest {};</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;<span class="preprocessor">#if defined(__GNUC__)</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;<span class="preprocessor">#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;<span class="preprocessor">#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE </span></div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;<span class="preprocessor">#ifndef __clang__</span></div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;<span class="comment">//!@endcond</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;<span class="comment"></span><span class="preprocessor">#endif</span></div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="comment">/*! \def RAPIDJSON_STATIC_ASSERT</span></div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;<span class="comment"> \brief (Internal) macro to check for conditions at compile-time</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;<span class="comment"> \param x compile-time condition</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="comment"> \hideinitializer</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00450"></a><span class="lineno"><a class="line" href="rapidjson_8h.html#af95188da1d8eb6d4b148fe9ce71cd7c4"> 450</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_STATIC_ASSERT(x) \</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="preprocessor"> typedef ::RAPIDJSON_NAMESPACE::StaticAssertTest&lt; \</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="preprocessor"> sizeof(::RAPIDJSON_NAMESPACE::STATIC_ASSERTION_FAILURE&lt;bool(x) &gt;)&gt; \</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="preprocessor"> RAPIDJSON_JOIN(StaticAssertTypedef, __LINE__) RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_STATIC_ASSERT</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_LIKELY, RAPIDJSON_UNLIKELY</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="comment">//! Compiler branching hint for expression with high probability to be true.</span></div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="comment"> \param x Boolean expression likely to be true.</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_LIKELY</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="preprocessor">#if defined(__GNUC__) || defined(__clang__)</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="preprocessor">#define RAPIDJSON_LIKELY(x) __builtin_expect(!!(x), 1)</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00468"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1"> 468</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_LIKELY(x) (x)</span></div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="comment">//! Compiler branching hint for expression with low probability to be true.</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="comment"> \param x Boolean expression unlikely to be true.</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_UNLIKELY</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="preprocessor">#if defined(__GNUC__) || defined(__clang__)</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="preprocessor">#define RAPIDJSON_UNLIKELY(x) __builtin_expect(!!(x), 0)</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00481"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5"> 481</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_UNLIKELY(x) (x)</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="comment"></span><span class="comment">// Helpers</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="preprocessor">#define RAPIDJSON_MULTILINEMACRO_BEGIN do { </span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="preprocessor">#define RAPIDJSON_MULTILINEMACRO_END \</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="preprocessor">} while((void)0, 0)</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="comment">// adopted from Boost</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="preprocessor">#define RAPIDJSON_VERSION_CODE(x,y,z) \</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="preprocessor"> (((x)*100000) + ((y)*100) + (z))</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_DIAG_PUSH/POP, RAPIDJSON_DIAG_OFF</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="preprocessor">#if defined(__GNUC__)</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="preprocessor">#define RAPIDJSON_GNUC \</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="preprocessor"> RAPIDJSON_VERSION_CODE(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__)</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="preprocessor">#if defined(__clang__) || (defined(RAPIDJSON_GNUC) &amp;&amp; RAPIDJSON_GNUC &gt;= RAPIDJSON_VERSION_CODE(4,2,0))</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="preprocessor">#define RAPIDJSON_PRAGMA(x) _Pragma(RAPIDJSON_STRINGIFY(x))</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_PRAGMA(x) RAPIDJSON_PRAGMA(GCC diagnostic x)</span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_OFF(x) \</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="preprocessor"> RAPIDJSON_DIAG_PRAGMA(ignored RAPIDJSON_STRINGIFY(RAPIDJSON_JOIN(-W,x)))</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="comment">// push/pop support in Clang and GCC&gt;=4.6</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="preprocessor">#if defined(__clang__) || (defined(RAPIDJSON_GNUC) &amp;&amp; RAPIDJSON_GNUC &gt;= RAPIDJSON_VERSION_CODE(4,6,0))</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_PRAGMA(push)</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_POP RAPIDJSON_DIAG_PRAGMA(pop)</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="preprocessor">#else // GCC &gt;= 4.2, &lt; 4.6</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_PUSH </span><span class="comment">/* ignored */</span><span class="preprocessor"></span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_POP </span><span class="comment">/* ignored */</span><span class="preprocessor"></span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="preprocessor">#elif defined(_MSC_VER)</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="comment">// pragma (MSVC specific)</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="preprocessor">#define RAPIDJSON_PRAGMA(x) __pragma(x)</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_PRAGMA(x) RAPIDJSON_PRAGMA(warning(x))</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_OFF(x) RAPIDJSON_DIAG_PRAGMA(disable: x)</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_PRAGMA(push)</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_POP RAPIDJSON_DIAG_PRAGMA(pop)</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_OFF(x) </span><span class="comment">/* ignored */</span><span class="preprocessor"></span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_PUSH </span><span class="comment">/* ignored */</span><span class="preprocessor"></span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="preprocessor">#define RAPIDJSON_DIAG_POP </span><span class="comment">/* ignored */</span><span class="preprocessor"></span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_DIAG_*</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="comment"></span><span class="comment">// C++11 features</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="preprocessor">#if __has_feature(cxx_rvalue_references) &amp;&amp; \</span></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="preprocessor"> (defined(_LIBCPP_VERSION) || defined(__GLIBCXX__) &amp;&amp; __GLIBCXX__ &gt;= 20080306)</span></div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 0</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<span class="preprocessor">#elif (defined(RAPIDJSON_GNUC) &amp;&amp; (RAPIDJSON_GNUC &gt;= RAPIDJSON_VERSION_CODE(4,3,0)) &amp;&amp; defined(__GXX_EXPERIMENTAL_CXX0X__)) || \</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="preprocessor"> (defined(_MSC_VER) &amp;&amp; _MSC_VER &gt;= 1600)</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 0</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_HAS_CXX11_NOEXCEPT</span></div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_NOEXCEPT __has_feature(cxx_noexcept)</span></div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;<span class="preprocessor">#elif (defined(RAPIDJSON_GNUC) &amp;&amp; (RAPIDJSON_GNUC &gt;= RAPIDJSON_VERSION_CODE(4,6,0)) &amp;&amp; defined(__GXX_EXPERIMENTAL_CXX0X__))</span></div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;<span class="comment">// (defined(_MSC_VER) &amp;&amp; _MSC_VER &gt;= ????) // not yet supported</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_NOEXCEPT 1</span></div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_NOEXCEPT 0</span></div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_NOEXCEPT</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="preprocessor">#define RAPIDJSON_NOEXCEPT noexcept</span></div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;<span class="preprocessor">#define RAPIDJSON_NOEXCEPT </span><span class="comment">/* noexcept */</span><span class="preprocessor"></span></div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_NOEXCEPT</span></div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;<span class="comment">// no automatic detection, yet</span></div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_HAS_CXX11_TYPETRAITS</span></div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_TYPETRAITS 0</span></div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_HAS_CXX11_RANGE_FOR</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_RANGE_FOR __has_feature(cxx_range_for)</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="preprocessor">#elif (defined(RAPIDJSON_GNUC) &amp;&amp; (RAPIDJSON_GNUC &gt;= RAPIDJSON_VERSION_CODE(4,6,0)) &amp;&amp; defined(__GXX_EXPERIMENTAL_CXX0X__)) || \</span></div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;<span class="preprocessor"> (defined(_MSC_VER) &amp;&amp; _MSC_VER &gt;= 1700)</span></div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_RANGE_FOR 1</span></div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;<span class="preprocessor">#define RAPIDJSON_HAS_CXX11_RANGE_FOR 0</span></div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_HAS_CXX11_RANGE_FOR</span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;<span class="comment">//!@endcond</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="comment"></span><span class="comment">// new/delete</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_NEW</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;<span class="comment">///! customization point for global \c new</span></div><div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b"> 599</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define RAPIDJSON_NEW(TypeName) new TypeName</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_DELETE</span></div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="comment">///! customization point for global \c delete</span></div><div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a"> 603</a></span>&#160;<span class="comment"></span><span class="preprocessor">#define RAPIDJSON_DELETE(x) delete x</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;<span class="comment"></span><span class="comment">// Type</span></div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;<span class="comment">/*! \namespace rapidjson</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;<span class="comment"> \brief main RapidJSON namespace</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="comment"> \see RAPIDJSON_NAMESPACE</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="comment">//! Type of JSON value</span></div><div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4"> 616</a></span>&#160;<span class="comment"></span><span class="keyword">enum</span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> {</div><div class="line"><a name="l00617"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff"> 617</a></span>&#160; <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">kNullType</a> = 0, <span class="comment">//!&lt; null</span></div><div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607"> 618</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">kFalseType</a> = 1, <span class="comment">//!&lt; false</span></div><div class="line"><a name="l00619"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e"> 619</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">kTrueType</a> = 2, <span class="comment">//!&lt; true</span></div><div class="line"><a name="l00620"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9"> 620</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a> = 3, <span class="comment">//!&lt; object</span></div><div class="line"><a name="l00621"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468"> 621</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a> = 4, <span class="comment">//!&lt; array </span></div><div class="line"><a name="l00622"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7"> 622</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a> = 5, <span class="comment">//!&lt; string</span></div><div class="line"><a name="l00623"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a"> 623</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a> = 6 <span class="comment">//!&lt; number</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="comment"></span>};</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_RAPIDJSON_H_</span></div><div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">rapidjson::kTrueType</a></div><div class="ttdoc">true </div><div class="ttdef"><b>Definition:</b> rapidjson.h:619</div></div>
<div class="ttc" id="namespacerapidjson_html_a44eb33eaa523e36d466b1ced64b85c84"><div class="ttname"><a href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">rapidjson::SizeType</a></div><div class="ttdeci">unsigned SizeType</div><div class="ttdoc">Size type (for string lengths, array sizes, etc.) </div><div class="ttdef"><b>Definition:</b> rapidjson.h:389</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">rapidjson::kFalseType</a></div><div class="ttdoc">false </div><div class="ttdef"><b>Definition:</b> rapidjson.h:618</div></div>
-<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
+<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">rapidjson::kObjectType</a></div><div class="ttdoc">object </div><div class="ttdef"><b>Definition:</b> rapidjson.h:620</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">rapidjson::kArrayType</a></div><div class="ttdoc">array </div><div class="ttdef"><b>Definition:</b> rapidjson.h:621</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">rapidjson::kNullType</a></div><div class="ttdoc">null </div><div class="ttdef"><b>Definition:</b> rapidjson.h:617</div></div>
@@ -723,7 +96,7 @@ $(document).ready(function(){initNavTree('rapidjson_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="rapidjson_8h.html">rapidjson.h</a></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="rapidjson_8h.html">rapidjson.h</a></li>
</ul>
</div>
</body>
diff --git a/zh-cn/reader_8h.html b/zh-cn/reader_8h.html
index e013370a..50973269 100644
--- a/zh-cn/reader_8h.html
+++ b/zh-cn/reader_8h.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/reader.h 文件参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('reader_8h.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -114,10 +115,10 @@ $(document).ready(function(){initNavTree('reader_8h.html','');});
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
宏定义</h2></td></tr>
-<tr class="memitem:ga7f8c4265b2edda78568ae3338aaf1461"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(parseErrorCode, offset)</td></tr>
+<tr class="memitem:ga7f8c4265b2edda78568ae3338aaf1461"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(parseErrorCode, offset)</td></tr>
<tr class="memdesc:ga7f8c4265b2edda78568ae3338aaf1461"><td class="mdescLeft">&#160;</td><td class="mdescRight">Macro to indicate a parse error. <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">更多...</a><br /></td></tr>
<tr class="separator:ga7f8c4265b2edda78568ae3338aaf1461"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:gae3689840fa6e89a241313f33b602f865"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(parseErrorCode, offset)</td></tr>
+<tr class="memitem:gae3689840fa6e89a241313f33b602f865"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(parseErrorCode, offset)</td></tr>
<tr class="memdesc:gae3689840fa6e89a241313f33b602f865"><td class="mdescLeft">&#160;</td><td class="mdescRight">(Internal) macro to indicate and handle a parse error. <a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">更多...</a><br /></td></tr>
<tr class="separator:gae3689840fa6e89a241313f33b602f865"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga77005e892e6601599beaf421b0395c31"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga77005e892e6601599beaf421b0395c31">RAPIDJSON_PARSE_DEFAULT_FLAGS</a>&#160;&#160;&#160;kParseNoFlags</td></tr>
@@ -141,30 +142,30 @@ $(document).ready(function(){initNavTree('reader_8h.html','');});
<a class="el" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a857894ab51cafa62956e9c9f0dafc4d8">rapidjson::kParseNanAndInfFlag</a> = 256,
<a class="el" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a5640cb00db7814b7f22be3683dda9835">rapidjson::kParseDefaultFlags</a> = RAPIDJSON_PARSE_DEFAULT_FLAGS
<br />
- }</td></tr>
-<tr class="memdesc:a81379eb4e94a0386d71d15fda882ebc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Combination of parseFlags. <a href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9">更多...</a><br /></td></tr>
+ }<tr class="memdesc:a81379eb4e94a0386d71d15fda882ebc9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Combination of parseFlags <a href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9">更多...</a><br /></td></tr>
+</td></tr>
<tr class="separator:a81379eb4e94a0386d71d15fda882ebc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
函数</h2></td></tr>
<tr class="memitem:a6efb0f4d2a6f81477a59718d42e9464a"><td class="memTemplParams" colspan="2">template&lt;typename InputStream &gt; </td></tr>
<tr class="memitem:a6efb0f4d2a6f81477a59718d42e9464a"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">rapidjson::SkipWhitespace</a> (InputStream &amp;is)</td></tr>
-<tr class="memdesc:a6efb0f4d2a6f81477a59718d42e9464a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Skip the JSON white spaces in a stream. <a href="#a6efb0f4d2a6f81477a59718d42e9464a">更多...</a><br /></td></tr>
+<tr class="memdesc:a6efb0f4d2a6f81477a59718d42e9464a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Skip the JSON white spaces in a stream. <a href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">更多...</a><br /></td></tr>
<tr class="separator:a6efb0f4d2a6f81477a59718d42e9464a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a946a04b733bc148c13e7b3b0721cabcc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a946a04b733bc148c13e7b3b0721cabcc"></a>
+<tr class="memitem:a946a04b733bc148c13e7b3b0721cabcc"><td class="memItemLeft" align="right" valign="top"><a id="a946a04b733bc148c13e7b3b0721cabcc"></a>
const char *&#160;</td><td class="memItemRight" valign="bottom"><b>rapidjson::SkipWhitespace</b> (const char *p, const char *end)</td></tr>
<tr class="separator:a946a04b733bc148c13e7b3b0721cabcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3caa6f393c9940e6525d5f1c21ed9ea2"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3caa6f393c9940e6525d5f1c21ed9ea2"></a>
+<tr class="memitem:a3caa6f393c9940e6525d5f1c21ed9ea2"><td class="memTemplParams" colspan="2"><a id="a3caa6f393c9940e6525d5f1c21ed9ea2"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a3caa6f393c9940e6525d5f1c21ed9ea2"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a3caa6f393c9940e6525d5f1c21ed9ea2">rapidjson::SkipWhitespace</a> (InsituStringStream &amp;is)</td></tr>
-<tr class="memdesc:a3caa6f393c9940e6525d5f1c21ed9ea2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template function specialization for InsituStringStream. <br /></td></tr>
+<tr class="memdesc:a3caa6f393c9940e6525d5f1c21ed9ea2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template function specialization for InsituStringStream <br /></td></tr>
<tr class="separator:a3caa6f393c9940e6525d5f1c21ed9ea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a791735c27e073a70d720c2775ddf9568"><td class="memTemplParams" colspan="2"><a class="anchor" id="a791735c27e073a70d720c2775ddf9568"></a>
+<tr class="memitem:a791735c27e073a70d720c2775ddf9568"><td class="memTemplParams" colspan="2"><a id="a791735c27e073a70d720c2775ddf9568"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a791735c27e073a70d720c2775ddf9568"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="namespacerapidjson.html#a791735c27e073a70d720c2775ddf9568">rapidjson::SkipWhitespace</a> (StringStream &amp;is)</td></tr>
-<tr class="memdesc:a791735c27e073a70d720c2775ddf9568"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template function specialization for StringStream. <br /></td></tr>
+<tr class="memdesc:a791735c27e073a70d720c2775ddf9568"><td class="mdescLeft">&#160;</td><td class="mdescRight">Template function specialization for StringStream <br /></td></tr>
<tr class="separator:a791735c27e073a70d720c2775ddf9568"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6bb4c8ff395f8962f7df38a5467ee2ed"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6bb4c8ff395f8962f7df38a5467ee2ed"></a>
+<tr class="memitem:a6bb4c8ff395f8962f7df38a5467ee2ed"><td class="memTemplParams" colspan="2"><a id="a6bb4c8ff395f8962f7df38a5467ee2ed"></a>
template&lt;&gt; </td></tr>
<tr class="memitem:a6bb4c8ff395f8962f7df38a5467ee2ed"><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>rapidjson::SkipWhitespace</b> (EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt; &amp;is)</td></tr>
<tr class="separator:a6bb4c8ff395f8962f7df38a5467ee2ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -175,7 +176,7 @@ template&lt;&gt; </td></tr>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="reader_8h.html">reader.h</a></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="reader_8h.html">reader.h</a></li>
</ul>
</div>
</body>
diff --git a/zh-cn/reader_8h_source.html b/zh-cn/reader_8h_source.html
index c0568ee0..e04677ce 100644
--- a/zh-cn/reader_8h_source.html
+++ b/zh-cn/reader_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/reader.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('reader_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,2228 +81,7 @@ $(document).ready(function(){initNavTree('reader_8h_source.html','');});
<div class="title">reader.h</div> </div>
</div><!--header-->
<div class="contents">
-<a href="reader_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_READER_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_READER_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">/*! \file reader.h */</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;allocators.h&quot;</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;encodedstream.h&quot;</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;internal/meta.h&quot;</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;internal/stack.h&quot;</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;internal/strtod.h&quot;</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#if defined(RAPIDJSON_SIMD) &amp;&amp; defined(_MSC_VER)</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &lt;intrin.h&gt;</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#pragma intrinsic(_BitScanForward)</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#ifdef RAPIDJSON_SSE42</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &lt;nmmintrin.h&gt;</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_SSE2)</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &lt;emmintrin.h&gt;</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_NEON)</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &lt;arm_neon.h&gt;</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;RAPIDJSON_DIAG_OFF(4127) <span class="comment">// conditional expression is constant</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;RAPIDJSON_DIAG_OFF(4702) <span class="comment">// unreachable code</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;RAPIDJSON_DIAG_OFF(old-style-cast)</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;RAPIDJSON_DIAG_OFF(switch-enum)</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"></span><span class="preprocessor">#define RAPIDJSON_NOTHING </span><span class="comment">/* deliberately empty */</span><span class="preprocessor"></span></div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_PARSE_ERROR_EARLY_RETURN</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#define RAPIDJSON_PARSE_ERROR_EARLY_RETURN(value) \</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor"> RAPIDJSON_MULTILINEMACRO_BEGIN \</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor"> if (RAPIDJSON_UNLIKELY(HasParseError())) { return value; } \</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"> RAPIDJSON_MULTILINEMACRO_END</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#define RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID \</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor"> RAPIDJSON_PARSE_ERROR_EARLY_RETURN(RAPIDJSON_NOTHING)</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment">//!@endcond</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment">/*! \def RAPIDJSON_PARSE_ERROR_NORETURN</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> \ingroup RAPIDJSON_ERRORS</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> \brief Macro to indicate a parse error.</span></div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> \param parseErrorCode \ref rapidjson::ParseErrorCode of the error</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> \param offset position of the error in JSON input (\c size_t)</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> This macros can be used as a customization point for the internal</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> error handling mechanism of RapidJSON.</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> A common usage model is to throw an exception instead of requiring the</span></div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> caller to explicitly check the \ref rapidjson::GenericReader::Parse&#39;s</span></div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> return value:</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> \code</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> #define RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode,offset) \</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> throw ParseException(parseErrorCode, #parseErrorCode, offset)</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> #include &lt;stdexcept&gt; // std::runtime_error</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> #include &quot;rapidjson/error/error.h&quot; // rapidjson::ParseResult</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> struct ParseException : std::runtime_error, rapidjson::ParseResult {</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> ParseException(rapidjson::ParseErrorCode code, const char* msg, size_t offset)</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> : std::runtime_error(msg), ParseResult(code, offset) {}</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> };</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> #include &quot;rapidjson/reader.h&quot;</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> \endcode</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> \see RAPIDJSON_PARSE_ERROR, rapidjson::GenericReader::Parse</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_PARSE_ERROR_NORETURN</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461"> 101</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode, offset) \</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor"> RAPIDJSON_MULTILINEMACRO_BEGIN \</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor"> RAPIDJSON_ASSERT(!HasParseError()); </span><span class="comment">/* Error can only be assigned once */</span><span class="preprocessor"> \</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor"> SetParseError(parseErrorCode, offset); \</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="preprocessor"> RAPIDJSON_MULTILINEMACRO_END</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment">/*! \def RAPIDJSON_PARSE_ERROR</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> \ingroup RAPIDJSON_ERRORS</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> \brief (Internal) macro to indicate and handle a parse error.</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> \param parseErrorCode \ref rapidjson::ParseErrorCode of the error</span></div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> \param offset position of the error in JSON input (\c size_t)</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> Invokes RAPIDJSON_PARSE_ERROR_NORETURN and stops the parsing.</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"> \see RAPIDJSON_PARSE_ERROR_NORETURN</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> \hideinitializer</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_PARSE_ERROR</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865"> 120</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_PARSE_ERROR(parseErrorCode, offset) \</span></div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor"> RAPIDJSON_MULTILINEMACRO_BEGIN \</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor"> RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode, offset); \</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="preprocessor"> RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; \</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="preprocessor"> RAPIDJSON_MULTILINEMACRO_END</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="error_8h.html">error/error.h</a>&quot;</span> <span class="comment">// ParseErrorCode, ParseResult</span></div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"></span><span class="comment">// ParseFlag</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment">/*! \def RAPIDJSON_PARSE_DEFAULT_FLAGS</span></div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> \brief User-defined kParseDefaultFlags definition.</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> User can define this as any \c ParseFlag combinations.</span></div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_PARSE_DEFAULT_FLAGS</span></div>
-<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga77005e892e6601599beaf421b0395c31"> 141</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_PARSE_DEFAULT_FLAGS kParseNoFlags</span></div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment">//! Combination of parseFlags</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"></span><span class="comment">/*! \see Reader::Parse, Document::Parse, Document::ParseInsitu, Document::ParseStream</span></div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9"> 147</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9">ParseFlag</a> {</div>
-<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af2c7fa21e9e7656e467bd71079ac8fb0"> 148</a></span>&#160; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af2c7fa21e9e7656e467bd71079ac8fb0">kParseNoFlags</a> = 0, <span class="comment">//!&lt; No flags are set.</span></div>
-<div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea"> 149</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea">kParseInsituFlag</a> = 1, <span class="comment">//!&lt; In-situ(destructive) parsing.</span></div>
-<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a3df81f75479da8e052393f92cbec394b"> 150</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a3df81f75479da8e052393f92cbec394b">kParseValidateEncodingFlag</a> = 2, <span class="comment">//!&lt; Validate encoding of JSON strings.</span></div>
-<div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a7923686c8bdb7614699f1fb1bb615bb2"> 151</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a7923686c8bdb7614699f1fb1bb615bb2">kParseIterativeFlag</a> = 4, <span class="comment">//!&lt; Iterative(constant complexity in terms of function call stack size) parsing.</span></div>
-<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af84c60868704433b80aa51a62e042bb1"> 152</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af84c60868704433b80aa51a62e042bb1">kParseStopWhenDoneFlag</a> = 8, <span class="comment">//!&lt; After parsing a complete JSON root from stream, stop further processing the rest of stream. When this flag is used, parser will not generate kParseErrorDocumentRootNotSingular error.</span></div>
-<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9adf80892cdfa076b2d1a7dd9530e15cb0"> 153</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9adf80892cdfa076b2d1a7dd9530e15cb0">kParseFullPrecisionFlag</a> = 16, <span class="comment">//!&lt; Parse number in full precision (but slower).</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9ab5d719b36aac626135d5d622d0d837c1"> 154</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9ab5d719b36aac626135d5d622d0d837c1">kParseCommentsFlag</a> = 32, <span class="comment">//!&lt; Allow one-line (//) and multi-line (/**/) comments.</span></div>
-<div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a13981c0b803803f59d7a01aef3dfc987"> 155</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a13981c0b803803f59d7a01aef3dfc987">kParseNumbersAsStringsFlag</a> = 64, <span class="comment">//!&lt; Parse all numbers (ints/doubles) as strings.</span></div>
-<div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af8b8470221dbc6046a40ff31d758ceec"> 156</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af8b8470221dbc6046a40ff31d758ceec">kParseTrailingCommasFlag</a> = 128, <span class="comment">//!&lt; Allow trailing commas at the end of objects and arrays.</span></div>
-<div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a857894ab51cafa62956e9c9f0dafc4d8"> 157</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a857894ab51cafa62956e9c9f0dafc4d8">kParseNanAndInfFlag</a> = 256, <span class="comment">//!&lt; Allow parsing NaN, Inf, Infinity, -Inf and -Infinity as doubles.</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a5640cb00db7814b7f22be3683dda9835"> 158</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a5640cb00db7814b7f22be3683dda9835">kParseDefaultFlags</a> = <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga77005e892e6601599beaf421b0395c31">RAPIDJSON_PARSE_DEFAULT_FLAGS</a> <span class="comment">//!&lt; Default parse flags. Can be customized by defining RAPIDJSON_PARSE_DEFAULT_FLAGS</span></div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"></span>};</div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"></span><span class="comment">// Handler</span></div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment">/*! \class rapidjson::Handler</span></div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"> \brief Concept for receiving events from GenericReader upon parsing.</span></div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"> The functions return true if no error occurs. If they return false,</span></div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> the event publisher should terminate the process.</span></div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment">\code</span></div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment">concept Handler {</span></div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> typename Ch;</span></div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> bool Null();</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"> bool Bool(bool b);</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment"> bool Int(int i);</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> bool Uint(unsigned i);</span></div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"> bool Int64(int64_t i);</span></div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"> bool Uint64(uint64_t i);</span></div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"> bool Double(double d);</span><span class="comment"></span></div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"> /// enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length)</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"></span> bool RawNumber(const Ch* str, SizeType length, bool copy);</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; bool String(const Ch* str, SizeType length, bool copy);</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; bool StartObject();</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; bool Key(const Ch* str, SizeType length, bool copy);</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; bool EndObject(SizeType memberCount);</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; bool StartArray();</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; bool EndArray(SizeType elementCount);</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;};</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;\endcode</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;*/<span class="comment"></span></div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"></span><span class="comment">// BaseReaderHandler</span></div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment">//! Default implementation of Handler.</span></div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"></span><span class="comment">/*! This can be used as base class of any reader handler.</span></div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"> \note implements Handler concept</span></div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Encoding = UTF8&lt;&gt;, <span class="keyword">typename</span> Derived = <span class="keywordtype">void</span>&gt;</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="keyword">struct </span>BaseReaderHandler {</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> internal::SelectIf&lt;internal::IsSame&lt;Derived, void&gt;, BaseReaderHandler, Derived&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> Override;</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">bool</span> Default() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">bool</span> Null() { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span>) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span>) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span>) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordtype">bool</span> Int64(int64_t) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordtype">bool</span> Uint64(uint64_t) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span>) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }<span class="comment"></span></div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment"> /// enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length)</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_base_reader_handler.html#a0de969fd05528960c2a7de51b2265bf1"> 212</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="structrapidjson_1_1_base_reader_handler.html#a0de969fd05528960c2a7de51b2265bf1">RawNumber</a>(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, <span class="keywordtype">bool</span> copy) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).String(str, len, copy); }</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch*, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>, <span class="keywordtype">bool</span>) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordtype">bool</span> StartObject() { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, <span class="keywordtype">bool</span> copy) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).String(str, len, copy); }</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordtype">bool</span> StartArray() { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;};</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment"></span><span class="comment">// StreamLocalCopy</span></div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;template&lt;typename Stream, int = StreamTraits&lt;Stream&gt;::copyOptimization&gt;</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="keyword">class </span>StreamLocalCopy;</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment">//! Do copy optimization.</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stream&gt;</div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="keyword">class </span>StreamLocalCopy&lt;Stream, 1&gt; {</div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; StreamLocalCopy(Stream&amp; original) : s(original), original_(original) {}</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; ~StreamLocalCopy() { original_ = s; }</div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; Stream s;</div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; StreamLocalCopy&amp; operator=(<span class="keyword">const</span> StreamLocalCopy&amp;) <span class="comment">/* = delete */</span>;</div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; Stream&amp; original_;</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;};</div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment">//! Keep reference.</span></div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stream&gt;</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="keyword">class </span>StreamLocalCopy&lt;Stream, 0&gt; {</div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; StreamLocalCopy(Stream&amp; original) : s(original) {}</div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; Stream&amp; s;</div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; StreamLocalCopy&amp; operator=(<span class="keyword">const</span> StreamLocalCopy&amp;) <span class="comment">/* = delete */</span>;</div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;};</div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"></span><span class="comment">// SkipWhitespace</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment">//! Skip the JSON white spaces in a stream.</span></div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment"></span><span class="comment">/*! \param is A input stream for skipping white spaces.</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> \note This function has SSE2/SSE4.2 specialization.</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a"> 266</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(InputStream&amp; is) {</div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; internal::StreamLocalCopy&lt;InputStream&gt; copy(is);</div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; InputStream&amp; s(copy.s);</div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keyword">typename</span> InputStream::Ch c;</div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">while</span> ((c = s.Peek()) == <span class="charliteral">&#39; &#39;</span> || c == <span class="charliteral">&#39;\n&#39;</span> || c == <span class="charliteral">&#39;\r&#39;</span> || c == <span class="charliteral">&#39;\t&#39;</span>)</div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; s.Take();</div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;}</div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* SkipWhitespace(<span class="keyword">const</span> <span class="keywordtype">char</span>* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* end) {</div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">while</span> (p != end &amp;&amp; (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>))</div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; ++p;</div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> p;</div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;}</div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="preprocessor">#ifdef RAPIDJSON_SSE42</span></div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment">//! Skip whitespace with SSE 4.2 pcmpistrm instruction, testing 16 8-byte characters at once.</span></div>
-<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment"></span><span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *SkipWhitespace_SIMD(<span class="keyword">const</span> <span class="keywordtype">char</span>* p) {</div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="comment">// Fast return for single non-whitespace</span></div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span> (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>)</div>
-<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; ++p;</div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">return</span> p;</div>
-<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="comment">// 16-byte align to the next boundary</span></div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>)</div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; ++p;</div>
-<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">return</span> p;</div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="comment">// The rest of string using SIMD</span></div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> whitespace[16] = <span class="stringliteral">&quot; \n\r\t&quot;</span>;</div>
-<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keyword">const</span> __m128i w = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespace[0]));</div>
-<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div>
-<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">for</span> (;; p += 16) {</div>
-<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keyword">const</span> __m128i s = _mm_load_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div>
-<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> r = _mm_cmpistri(w, s, _SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT | _SIDD_NEGATIVE_POLARITY);</div>
-<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (r != 16) <span class="comment">// some of characters is non-whitespace</span></div>
-<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">return</span> p + r;</div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div>
-<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;}</div>
-<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div>
-<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *SkipWhitespace_SIMD(<span class="keyword">const</span> <span class="keywordtype">char</span>* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* end) {</div>
-<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="comment">// Fast return for single non-whitespace</span></div>
-<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">if</span> (p != end &amp;&amp; (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>))</div>
-<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; ++p;</div>
-<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> p;</div>
-<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div>
-<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="comment">// The middle of string using SIMD</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> whitespace[16] = <span class="stringliteral">&quot; \n\r\t&quot;</span>;</div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">const</span> __m128i w = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespace[0]));</div>
-<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div>
-<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">for</span> (; p &lt;= end - 16; p += 16) {</div>
-<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keyword">const</span> __m128i s = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div>
-<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> r = _mm_cmpistri(w, s, _SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT | _SIDD_NEGATIVE_POLARITY);</div>
-<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">if</span> (r != 16) <span class="comment">// some of characters is non-whitespace</span></div>
-<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">return</span> p + r;</div>
-<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div>
-<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div>
-<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(p, end);</div>
-<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;}</div>
-<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div>
-<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_SSE2)</span></div>
-<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment">//! Skip whitespace with SSE2 instructions, testing 16 8-byte characters at once.</span></div>
-<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment"></span><span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *SkipWhitespace_SIMD(<span class="keyword">const</span> <span class="keywordtype">char</span>* p) {</div>
-<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="comment">// Fast return for single non-whitespace</span></div>
-<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span> (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>)</div>
-<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; ++p;</div>
-<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">return</span> p;</div>
-<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div>
-<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="comment">// 16-byte align to the next boundary</span></div>
-<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div>
-<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div>
-<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">if</span> (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>)</div>
-<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; ++p;</div>
-<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> p;</div>
-<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div>
-<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="comment">// The rest of string</span></div>
-<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="preprocessor"> #define C16(c) { c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c }</span></div>
-<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> whitespaces[4][16] = { C16(<span class="charliteral">&#39; &#39;</span>), C16(<span class="charliteral">&#39;\n&#39;</span>), C16(<span class="charliteral">&#39;\r&#39;</span>), C16(<span class="charliteral">&#39;\t&#39;</span>) };</div>
-<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="preprocessor"> #undef C16</span></div>
-<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div>
-<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keyword">const</span> __m128i w0 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[0][0]));</div>
-<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keyword">const</span> __m128i w1 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[1][0]));</div>
-<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">const</span> __m128i w2 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[2][0]));</div>
-<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keyword">const</span> __m128i w3 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[3][0]));</div>
-<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div>
-<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">for</span> (;; p += 16) {</div>
-<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keyword">const</span> __m128i s = _mm_load_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div>
-<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; __m128i x = _mm_cmpeq_epi8(s, w0);</div>
-<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w1));</div>
-<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w2));</div>
-<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w3));</div>
-<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> r = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">&gt;</span>(~_mm_movemask_epi8(x));</div>
-<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">if</span> (r != 0) { <span class="comment">// some of characters may be non-whitespace</span></div>
-<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="preprocessor">#ifdef _MSC_VER // Find the index of first non-whitespace</span></div>
-<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offset;</div>
-<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; _BitScanForward(&amp;offset, r);</div>
-<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">return</span> p + offset;</div>
-<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">return</span> p + __builtin_ffs(r) - 1;</div>
-<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div>
-<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
-<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;}</div>
-<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div>
-<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *SkipWhitespace_SIMD(<span class="keyword">const</span> <span class="keywordtype">char</span>* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* end) {</div>
-<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="comment">// Fast return for single non-whitespace</span></div>
-<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">if</span> (p != end &amp;&amp; (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>))</div>
-<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; ++p;</div>
-<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">return</span> p;</div>
-<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;</div>
-<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="comment">// The rest of string</span></div>
-<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="preprocessor"> #define C16(c) { c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c }</span></div>
-<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> whitespaces[4][16] = { C16(<span class="charliteral">&#39; &#39;</span>), C16(<span class="charliteral">&#39;\n&#39;</span>), C16(<span class="charliteral">&#39;\r&#39;</span>), C16(<span class="charliteral">&#39;\t&#39;</span>) };</div>
-<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="preprocessor"> #undef C16</span></div>
-<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div>
-<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keyword">const</span> __m128i w0 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[0][0]));</div>
-<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keyword">const</span> __m128i w1 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[1][0]));</div>
-<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">const</span> __m128i w2 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[2][0]));</div>
-<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keyword">const</span> __m128i w3 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[3][0]));</div>
-<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;</div>
-<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">for</span> (; p &lt;= end - 16; p += 16) {</div>
-<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keyword">const</span> __m128i s = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div>
-<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; __m128i x = _mm_cmpeq_epi8(s, w0);</div>
-<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w1));</div>
-<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w2));</div>
-<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w3));</div>
-<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> r = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">&gt;</span>(~_mm_movemask_epi8(x));</div>
-<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">if</span> (r != 0) { <span class="comment">// some of characters may be non-whitespace</span></div>
-<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="preprocessor">#ifdef _MSC_VER // Find the index of first non-whitespace</span></div>
-<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offset;</div>
-<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; _BitScanForward(&amp;offset, r);</div>
-<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> p + offset;</div>
-<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">return</span> p + __builtin_ffs(r) - 1;</div>
-<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div>
-<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div>
-<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div>
-<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(p, end);</div>
-<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;}</div>
-<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;</div>
-<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_NEON)</span></div>
-<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="comment">//! Skip whitespace with ARM Neon instructions, testing 16 8-byte characters at once.</span></div>
-<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="comment"></span><span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *SkipWhitespace_SIMD(<span class="keyword">const</span> <span class="keywordtype">char</span>* p) {</div>
-<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="comment">// Fast return for single non-whitespace</span></div>
-<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span> (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>)</div>
-<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; ++p;</div>
-<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">return</span> p;</div>
-<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div>
-<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="comment">// 16-byte align to the next boundary</span></div>
-<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div>
-<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div>
-<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">if</span> (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>)</div>
-<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; ++p;</div>
-<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">return</span> p;</div>
-<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div>
-<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keyword">const</span> uint8x16_t w0 = vmovq_n_u8(<span class="charliteral">&#39; &#39;</span>);</div>
-<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keyword">const</span> uint8x16_t w1 = vmovq_n_u8(<span class="charliteral">&#39;\n&#39;</span>);</div>
-<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keyword">const</span> uint8x16_t w2 = vmovq_n_u8(<span class="charliteral">&#39;\r&#39;</span>);</div>
-<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keyword">const</span> uint8x16_t w3 = vmovq_n_u8(<span class="charliteral">&#39;\t&#39;</span>);</div>
-<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div>
-<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">for</span> (;; p += 16) {</div>
-<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keyword">const</span> uint8x16_t s = vld1q_u8(reinterpret_cast&lt;const uint8_t *&gt;(p));</div>
-<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; uint8x16_t x = vceqq_u8(s, w0);</div>
-<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; x = vorrq_u8(x, vceqq_u8(s, w1));</div>
-<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; x = vorrq_u8(x, vceqq_u8(s, w2));</div>
-<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; x = vorrq_u8(x, vceqq_u8(s, w3));</div>
-<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div>
-<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; x = vmvnq_u8(x); <span class="comment">// Negate</span></div>
-<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; x = vrev64q_u8(x); <span class="comment">// Rev in 64</span></div>
-<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; uint64_t low = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 0); <span class="comment">// extract</span></div>
-<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; uint64_t high = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 1); <span class="comment">// extract</span></div>
-<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div>
-<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span> (low == 0) {</div>
-<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">if</span> (high != 0) {</div>
-<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordtype">int</span> lz =__builtin_clzll(high);;</div>
-<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">return</span> p + 8 + (lz &gt;&gt; 3);</div>
-<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div>
-<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordtype">int</span> lz = __builtin_clzll(low);;</div>
-<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">return</span> p + (lz &gt;&gt; 3);</div>
-<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div>
-<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div>
-<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;}</div>
-<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div>
-<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *SkipWhitespace_SIMD(<span class="keyword">const</span> <span class="keywordtype">char</span>* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* end) {</div>
-<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="comment">// Fast return for single non-whitespace</span></div>
-<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">if</span> (p != end &amp;&amp; (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>))</div>
-<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; ++p;</div>
-<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">return</span> p;</div>
-<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;</div>
-<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keyword">const</span> uint8x16_t w0 = vmovq_n_u8(<span class="charliteral">&#39; &#39;</span>);</div>
-<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keyword">const</span> uint8x16_t w1 = vmovq_n_u8(<span class="charliteral">&#39;\n&#39;</span>);</div>
-<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keyword">const</span> uint8x16_t w2 = vmovq_n_u8(<span class="charliteral">&#39;\r&#39;</span>);</div>
-<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keyword">const</span> uint8x16_t w3 = vmovq_n_u8(<span class="charliteral">&#39;\t&#39;</span>);</div>
-<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div>
-<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">for</span> (; p &lt;= end - 16; p += 16) {</div>
-<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keyword">const</span> uint8x16_t s = vld1q_u8(reinterpret_cast&lt;const uint8_t *&gt;(p));</div>
-<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; uint8x16_t x = vceqq_u8(s, w0);</div>
-<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; x = vorrq_u8(x, vceqq_u8(s, w1));</div>
-<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; x = vorrq_u8(x, vceqq_u8(s, w2));</div>
-<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; x = vorrq_u8(x, vceqq_u8(s, w3));</div>
-<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;</div>
-<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; x = vmvnq_u8(x); <span class="comment">// Negate</span></div>
-<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; x = vrev64q_u8(x); <span class="comment">// Rev in 64</span></div>
-<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; uint64_t low = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 0); <span class="comment">// extract</span></div>
-<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; uint64_t high = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 1); <span class="comment">// extract</span></div>
-<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div>
-<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span> (low == 0) {</div>
-<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">if</span> (high != 0) {</div>
-<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordtype">int</span> lz = __builtin_clzll(high);</div>
-<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">return</span> p + 8 + (lz &gt;&gt; 3);</div>
-<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div>
-<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordtype">int</span> lz = __builtin_clzll(low);</div>
-<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">return</span> p + (lz &gt;&gt; 3);</div>
-<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div>
-<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div>
-<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;</div>
-<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(p, end);</div>
-<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;}</div>
-<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div>
-<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_NEON</span></div>
-<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;</div>
-<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="preprocessor">#ifdef RAPIDJSON_SIMD</span></div>
-<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="comment">//! Template function specialization for InsituStringStream</span></div>
-<div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a3caa6f393c9940e6525d5f1c21ed9ea2"> 505</a></span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(<a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">InsituStringStream</a>&amp; is) {</div>
-<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; is.src_ = <span class="keyword">const_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(SkipWhitespace_SIMD(is.src_));</div>
-<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;}</div>
-<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="comment">//! Template function specialization for StringStream</span></div>
-<div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a791735c27e073a70d720c2775ddf9568"> 510</a></span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(<a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a>&amp; is) {</div>
-<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a> = SkipWhitespace_SIMD(is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a>);</div>
-<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;}</div>
-<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;</div>
-<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> <span class="keywordtype">void</span> SkipWhitespace(EncodedInputStream&lt;UTF8&lt;&gt;, MemoryStream&gt;&amp; is) {</div>
-<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; is.is_.src_ = SkipWhitespace_SIMD(is.is_.src_, is.is_.end_);</div>
-<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;}</div>
-<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_SIMD</span></div>
-<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="comment"></span><span class="comment">// GenericReader</span></div>
-<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="comment">//! SAX-style JSON parser. Use \ref Reader for UTF8 encoding and default allocator.</span></div>
-<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;<span class="comment"></span><span class="comment">/*! GenericReader parses JSON text from a stream, and send events synchronously to an</span></div>
-<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="comment"> object implementing Handler concept.</span></div>
-<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="comment"> It needs to allocate a stack for storing a single decoded string during</span></div>
-<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="comment"> non-destructive parsing.</span></div>
-<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="comment"> For in-situ parsing, the decoded string is directly written to the source</span></div>
-<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;<span class="comment"> text string, no temporary buffer is required.</span></div>
-<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="comment"> A GenericReader object can be reused for parsing multiple JSON text.</span></div>
-<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="comment"> \tparam SourceEncoding Encoding of the input stream.</span></div>
-<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="comment"> \tparam TargetEncoding Encoding of the parse output.</span></div>
-<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="comment"> \tparam StackAllocator Allocator type for stack.</span></div>
-<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> TargetEncoding, <span class="keyword">typename</span> StackAllocator = CrtAllocator&gt;</div>
-<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="keyword">class </span>GenericReader {</div>
-<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00541"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#a0781d19e8c6bc044d9cc5f5d3dde287e"> 541</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SourceEncoding::Ch <a class="code" href="classrapidjson_1_1_generic_reader.html#a0781d19e8c6bc044d9cc5f5d3dde287e">Ch</a>; <span class="comment">//!&lt; SourceEncoding character type</span></div>
-<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="comment"> //! Constructor.</span></div>
-<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="comment"></span><span class="comment"> /*! \param stackAllocator Optional allocator for allocating stack memory. (Only use for non-destructive parsing)</span></div>
-<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="comment"> \param stackCapacity stack capacity in bytes for storing a single decoded string. (Only use for non-destructive parsing)</span></div>
-<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00547"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#a56ab1065ea75167aeacb4802425bf57f"> 547</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_reader.html#a56ab1065ea75167aeacb4802425bf57f">GenericReader</a>(StackAllocator* stackAllocator = 0, <span class="keywordtype">size_t</span> stackCapacity = kDefaultStackCapacity) : stack_(stackAllocator, stackCapacity), parseResult_() {}</div>
-<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="comment"> //! Parse JSON text.</span></div>
-<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam parseFlags Combination of \ref ParseFlag.</span></div>
-<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<span class="comment"> \tparam InputStream Type of input stream, implementing Stream concept.</span></div>
-<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="comment"> \tparam Handler Type of handler, implementing Handler concept.</span></div>
-<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="comment"> \param is Input stream to be parsed.</span></div>
-<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;<span class="comment"> \param handler The handler to receive events.</span></div>
-<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;<span class="comment"> \return Whether the parsing is successful.</span></div>
-<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><a name="l00558"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b"> 558</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> <a class="code" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b">Parse</a>(InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div>
-<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a7923686c8bdb7614699f1fb1bb615bb2">kParseIterativeFlag</a>)</div>
-<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">return</span> IterativeParse&lt;parseFlags&gt;(is, handler);</div>
-<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div>
-<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; parseResult_.<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f">Clear</a>();</div>
-<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;</div>
-<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; ClearStackOnExit scope(*<span class="keyword">this</span>);</div>
-<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div>
-<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div>
-<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);</div>
-<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;</div>
-<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(is.Peek() == <span class="charliteral">&#39;\0&#39;</span>)) {</div>
-<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286">kParseErrorDocumentEmpty</a>, is.Tell());</div>
-<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);</div>
-<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; }</div>
-<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; ParseValue&lt;parseFlags&gt;(is, handler);</div>
-<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);</div>
-<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;</div>
-<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">if</span> (!(parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af84c60868704433b80aa51a62e042bb1">kParseStopWhenDoneFlag</a>)) {</div>
-<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div>
-<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);</div>
-<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div>
-<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(is.Peek() != <span class="charliteral">&#39;\0&#39;</span>)) {</div>
-<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5">kParseErrorDocumentRootNotSingular</a>, is.Tell());</div>
-<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);</div>
-<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div>
-<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div>
-<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; }</div>
-<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;</div>
-<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">return</span> parseResult_;</div>
-<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; }</div>
-<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="comment"> //! Parse JSON text (with \ref kParseDefaultFlags)</span></div>
-<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam InputStream Type of input stream, implementing Stream concept</span></div>
-<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="comment"> \tparam Handler Type of handler, implementing Handler concept.</span></div>
-<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="comment"> \param is Input stream to be parsed.</span></div>
-<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="comment"> \param handler The handler to receive events.</span></div>
-<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;<span class="comment"> \return Whether the parsing is successful.</span></div>
-<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#a2bac14d193873d661d79ad000473a908"> 599</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> <a class="code" href="classrapidjson_1_1_generic_reader.html#a2bac14d193873d661d79ad000473a908">Parse</a>(InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div>
-<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">return</span> Parse&lt;kParseDefaultFlags&gt;(is, handler);</div>
-<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div>
-<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="comment"> //! Initialize JSON text token-by-token parsing</span></div>
-<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#a90403a2c55dadf82fd2bb9d4c66b3280"> 606</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_reader.html#a90403a2c55dadf82fd2bb9d4c66b3280">IterativeParseInit</a>() {</div>
-<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; parseResult_.Clear();</div>
-<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; state_ = IterativeParsingStartState;</div>
-<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div>
-<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="comment"></span></div>
-<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="comment"> //! Parse one token from JSON text</span></div>
-<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam InputStream Type of input stream, implementing Stream concept</span></div>
-<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="comment"> \tparam Handler Type of handler, implementing Handler concept.</span></div>
-<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="comment"> \param is Input stream to be parsed.</span></div>
-<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="comment"> \param handler The handler to receive events.</span></div>
-<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;<span class="comment"> \return Whether the parsing is successful.</span></div>
-<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><a name="l00619"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#abac6611bec17167de50fede5cd5194ca"> 619</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_reader.html#abac6611bec17167de50fede5cd5194ca">IterativeParseNext</a>(InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div>
-<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Peek() != <span class="charliteral">&#39;\0&#39;</span>)) {</div>
-<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div>
-<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; </div>
-<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; Token t = Tokenize(is.Peek());</div>
-<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; IterativeParsingState n = Predict(state_, t);</div>
-<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; IterativeParsingState d = Transit&lt;parseFlags&gt;(state_, t, n, is, handler);</div>
-<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; </div>
-<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="comment">// If we&#39;ve finished or hit an error...</span></div>
-<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(IsIterativeParsingCompleteState(d))) {</div>
-<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="comment">// Report errors.</span></div>
-<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> (d == IterativeParsingErrorState) {</div>
-<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; HandleError(state_, is);</div>
-<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; }</div>
-<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; </div>
-<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="comment">// Transition to the finish state.</span></div>
-<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(d == IterativeParsingFinishState);</div>
-<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; state_ = d;</div>
-<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; </div>
-<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="comment">// If StopWhenDone is not set...</span></div>
-<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">if</span> (!(parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af84c60868704433b80aa51a62e042bb1">kParseStopWhenDoneFlag</a>)) {</div>
-<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="comment">// ... and extra non-whitespace data is found...</span></div>
-<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div>
-<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">if</span> (is.Peek() != <span class="charliteral">&#39;\0&#39;</span>) {</div>
-<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="comment">// ... this is considered an error.</span></div>
-<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; HandleError(state_, is);</div>
-<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; }</div>
-<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div>
-<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; </div>
-<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="comment">// Success! We are done!</span></div>
-<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; }</div>
-<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; </div>
-<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="comment">// Transition to the new state.</span></div>
-<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; state_ = d;</div>
-<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;</div>
-<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="comment">// If we parsed anything other than a delimiter, we invoked the handler, so we can return true now.</span></div>
-<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">if</span> (!IsIterativeParsingDelimiterState(n))</div>
-<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; }</div>
-<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; </div>
-<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="comment">// We reached the end of file.</span></div>
-<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; stack_.Clear();</div>
-<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;</div>
-<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">if</span> (state_ != IterativeParsingFinishState) {</div>
-<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; HandleError(state_, is);</div>
-<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; }</div>
-<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; </div>
-<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div>
-<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="comment"></span></div>
-<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;<span class="comment"> //! Check if token-by-token parsing JSON text is complete</span></div>
-<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<span class="comment"></span><span class="comment"> /*! \return Whether the JSON has been fully decoded.</span></div>
-<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00676"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#a60fa11ff60f71b3a466bbd962f35dfdb"> 676</a></span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_reader.html#a60fa11ff60f71b3a466bbd962f35dfdb">IterativeParseComplete</a>() {</div>
-<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">return</span> IsIterativeParsingCompleteState(state_);</div>
-<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; }</div>
-<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;<span class="comment"> //! Whether a parse error has occured in the last parsing.</span></div>
-<div class="line"><a name="l00681"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#a46ded2951b8fa395ed421989d66e71fe"> 681</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_reader.html#a46ded2951b8fa395ed421989d66e71fe">HasParseError</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_.IsError(); }</div>
-<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="comment"> //! Get the \ref ParseErrorCode of last parsing.</span></div>
-<div class="line"><a name="l00684"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#a40fd326bad7d7033f096b549cbf159db"> 684</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> <a class="code" href="classrapidjson_1_1_generic_reader.html#a40fd326bad7d7033f096b549cbf159db">GetParseErrorCode</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_.Code(); }</div>
-<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="comment"> //! Get the position of last parsing error in input, 0 otherwise.</span></div>
-<div class="line"><a name="l00687"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#ab907a36c410e96154c99797a6a0ce16d"> 687</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_generic_reader.html#ab907a36c410e96154c99797a6a0ce16d">GetErrorOffset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_.Offset(); }</div>
-<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;</div>
-<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="keyword">protected</span>:</div>
-<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordtype">void</span> SetParseError(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code, <span class="keywordtype">size_t</span> offset) { parseResult_.Set(code, offset); }</div>
-<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;</div>
-<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="comment">// Prohibit copy constructor &amp; assignment operator.</span></div>
-<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; GenericReader(<span class="keyword">const</span> GenericReader&amp;);</div>
-<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; GenericReader&amp; operator=(<span class="keyword">const</span> GenericReader&amp;);</div>
-<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;</div>
-<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordtype">void</span> ClearStack() { stack_.Clear(); }</div>
-<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;</div>
-<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="comment">// clear stack on any exit from ParseStream, e.g. due to exception</span></div>
-<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keyword">struct </span>ClearStackOnExit {</div>
-<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keyword">explicit</span> ClearStackOnExit(GenericReader&amp; r) : r_(r) {}</div>
-<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; ~ClearStackOnExit() { r_.ClearStack(); }</div>
-<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; GenericReader&amp; r_;</div>
-<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; ClearStackOnExit(<span class="keyword">const</span> ClearStackOnExit&amp;);</div>
-<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; ClearStackOnExit&amp; operator=(<span class="keyword">const</span> ClearStackOnExit&amp;);</div>
-<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; };</div>
-<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;</div>
-<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordtype">void</span> SkipWhitespaceAndComments(InputStream&amp; is) {</div>
-<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(is);</div>
-<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;</div>
-<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9ab5d719b36aac626135d5d622d0d837c1">kParseCommentsFlag</a>) {</div>
-<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(Consume(is, <span class="charliteral">&#39;/&#39;</span>))) {</div>
-<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">if</span> (Consume(is, <span class="charliteral">&#39;*&#39;</span>)) {</div>
-<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div>
-<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(is.Peek() == <span class="charliteral">&#39;\0&#39;</span>))</div>
-<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24">kParseErrorUnspecificSyntaxError</a>, is.Tell());</div>
-<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Consume(is, <span class="charliteral">&#39;*&#39;</span>)) {</div>
-<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">if</span> (Consume(is, <span class="charliteral">&#39;/&#39;</span>))</div>
-<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div>
-<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; is.Take();</div>
-<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; }</div>
-<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; }</div>
-<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(Consume(is, <span class="charliteral">&#39;/&#39;</span>)))</div>
-<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">while</span> (is.Peek() != <span class="charliteral">&#39;\0&#39;</span> &amp;&amp; is.Take() != <span class="charliteral">&#39;\n&#39;</span>) {}</div>
-<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24">kParseErrorUnspecificSyntaxError</a>, is.Tell());</div>
-<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;</div>
-<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(is);</div>
-<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; }</div>
-<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; }</div>
-<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div>
-<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;</div>
-<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="comment">// Parse object: { string : value, ... }</span></div>
-<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordtype">void</span> ParseObject(InputStream&amp; is, Handler&amp; handler) {</div>
-<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(is.Peek() == <span class="charliteral">&#39;{&#39;</span>);</div>
-<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; is.Take(); <span class="comment">// Skip &#39;{&#39;</span></div>
-<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;</div>
-<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.StartObject()))</div>
-<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div>
-<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;</div>
-<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div>
-<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div>
-<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;</div>
-<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">if</span> (Consume(is, <span class="charliteral">&#39;}&#39;</span>)) {</div>
-<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.EndObject(0))) <span class="comment">// empty object</span></div>
-<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div>
-<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; }</div>
-<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;</div>
-<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount = 0;;) {</div>
-<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(is.Peek() != <span class="charliteral">&#39;&quot;&#39;</span>))</div>
-<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242">kParseErrorObjectMissName</a>, is.Tell());</div>
-<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;</div>
-<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; ParseString&lt;parseFlags&gt;(is, handler, <span class="keyword">true</span>);</div>
-<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div>
-<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;</div>
-<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div>
-<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div>
-<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;</div>
-<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!Consume(is, <span class="charliteral">&#39;:&#39;</span>)))</div>
-<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c">kParseErrorObjectMissColon</a>, is.Tell());</div>
-<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;</div>
-<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div>
-<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div>
-<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;</div>
-<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; ParseValue&lt;parseFlags&gt;(is, handler);</div>
-<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div>
-<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;</div>
-<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div>
-<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div>
-<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;</div>
-<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; ++memberCount;</div>
-<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;</div>
-<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">switch</span> (is.Peek()) {</div>
-<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;,&#39;</span>:</div>
-<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; is.Take();</div>
-<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div>
-<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div>
-<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;}&#39;</span>:</div>
-<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; is.Take();</div>
-<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.EndObject(memberCount)))</div>
-<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div>
-<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73">kParseErrorObjectMissCommaOrCurlyBracket</a>, is.Tell()); <span class="keywordflow">break</span>; <span class="comment">// This useless break is only for making warning and coverage happy</span></div>
-<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; }</div>
-<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;</div>
-<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af8b8470221dbc6046a40ff31d758ceec">kParseTrailingCommasFlag</a>) {</div>
-<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">if</span> (is.Peek() == <span class="charliteral">&#39;}&#39;</span>) {</div>
-<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.EndObject(memberCount)))</div>
-<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div>
-<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; is.Take();</div>
-<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div>
-<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; }</div>
-<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; }</div>
-<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; }</div>
-<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;</div>
-<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="comment">// Parse array: [ value, ... ]</span></div>
-<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordtype">void</span> ParseArray(InputStream&amp; is, Handler&amp; handler) {</div>
-<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(is.Peek() == <span class="charliteral">&#39;[&#39;</span>);</div>
-<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; is.Take(); <span class="comment">// Skip &#39;[&#39;</span></div>
-<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;</div>
-<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.StartArray()))</div>
-<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div>
-<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;</div>
-<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div>
-<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div>
-<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;</div>
-<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">if</span> (Consume(is, <span class="charliteral">&#39;]&#39;</span>)) {</div>
-<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.EndArray(0))) <span class="comment">// empty array</span></div>
-<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div>
-<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div>
-<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;</div>
-<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount = 0;;) {</div>
-<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; ParseValue&lt;parseFlags&gt;(is, handler);</div>
-<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div>
-<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;</div>
-<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; ++elementCount;</div>
-<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div>
-<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div>
-<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;</div>
-<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">if</span> (Consume(is, <span class="charliteral">&#39;,&#39;</span>)) {</div>
-<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div>
-<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div>
-<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; }</div>
-<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Consume(is, <span class="charliteral">&#39;]&#39;</span>)) {</div>
-<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.EndArray(elementCount)))</div>
-<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div>
-<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; }</div>
-<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93">kParseErrorArrayMissCommaOrSquareBracket</a>, is.Tell());</div>
-<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;</div>
-<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; kParseTrailingCommasFlag) {</div>
-<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">if</span> (is.Peek() == <span class="charliteral">&#39;]&#39;</span>) {</div>
-<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.EndArray(elementCount)))</div>
-<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div>
-<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; is.Take();</div>
-<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; }</div>
-<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; }</div>
-<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; }</div>
-<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; }</div>
-<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;</div>
-<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordtype">void</span> ParseNull(InputStream&amp; is, Handler&amp; handler) {</div>
-<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(is.Peek() == <span class="charliteral">&#39;n&#39;</span>);</div>
-<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; is.Take();</div>
-<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;</div>
-<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(Consume(is, <span class="charliteral">&#39;u&#39;</span>) &amp;&amp; Consume(is, <span class="charliteral">&#39;l&#39;</span>) &amp;&amp; Consume(is, <span class="charliteral">&#39;l&#39;</span>))) {</div>
-<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.Null()))</div>
-<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div>
-<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; }</div>
-<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, is.Tell());</div>
-<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; }</div>
-<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;</div>
-<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordtype">void</span> ParseTrue(InputStream&amp; is, Handler&amp; handler) {</div>
-<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(is.Peek() == <span class="charliteral">&#39;t&#39;</span>);</div>
-<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; is.Take();</div>
-<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;</div>
-<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(Consume(is, <span class="charliteral">&#39;r&#39;</span>) &amp;&amp; Consume(is, <span class="charliteral">&#39;u&#39;</span>) &amp;&amp; Consume(is, <span class="charliteral">&#39;e&#39;</span>))) {</div>
-<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.Bool(<span class="keyword">true</span>)))</div>
-<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div>
-<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; }</div>
-<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, is.Tell());</div>
-<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; }</div>
-<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160;</div>
-<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordtype">void</span> ParseFalse(InputStream&amp; is, Handler&amp; handler) {</div>
-<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(is.Peek() == <span class="charliteral">&#39;f&#39;</span>);</div>
-<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; is.Take();</div>
-<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;</div>
-<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(Consume(is, <span class="charliteral">&#39;a&#39;</span>) &amp;&amp; Consume(is, <span class="charliteral">&#39;l&#39;</span>) &amp;&amp; Consume(is, <span class="charliteral">&#39;s&#39;</span>) &amp;&amp; Consume(is, <span class="charliteral">&#39;e&#39;</span>))) {</div>
-<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.Bool(<span class="keyword">false</span>)))</div>
-<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div>
-<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; }</div>
-<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, is.Tell());</div>
-<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; }</div>
-<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;</div>
-<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; RAPIDJSON_FORCEINLINE <span class="keyword">static</span> <span class="keywordtype">bool</span> Consume(InputStream&amp; is, <span class="keyword">typename</span> InputStream::Ch expect) {</div>
-<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Peek() == expect)) {</div>
-<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; is.Take();</div>
-<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; }</div>
-<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; }</div>
-<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;</div>
-<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="comment">// Helper function to parse four hexidecimal digits in \uXXXX in ParseString().</span></div>
-<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordtype">unsigned</span> ParseHex4(InputStream&amp; is, <span class="keywordtype">size_t</span> escapeOffset) {</div>
-<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordtype">unsigned</span> codepoint = 0;</div>
-<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 4; i++) {</div>
-<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; Ch c = is.Peek();</div>
-<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; codepoint &lt;&lt;= 4;</div>
-<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; codepoint += <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(c);</div>
-<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">if</span> (c &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; c &lt;= <span class="charliteral">&#39;9&#39;</span>)</div>
-<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; codepoint -= <span class="charliteral">&#39;0&#39;</span>;</div>
-<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &gt;= <span class="charliteral">&#39;A&#39;</span> &amp;&amp; c &lt;= <span class="charliteral">&#39;F&#39;</span>)</div>
-<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; codepoint -= <span class="charliteral">&#39;A&#39;</span> - 10;</div>
-<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &gt;= <span class="charliteral">&#39;a&#39;</span> &amp;&amp; c &lt;= <span class="charliteral">&#39;f&#39;</span>)</div>
-<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; codepoint -= <span class="charliteral">&#39;a&#39;</span> - 10;</div>
-<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a23c38bf88b8448555c0eb41e1735bd92">kParseErrorStringUnicodeEscapeInvalidHex</a>, escapeOffset);</div>
-<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(0);</div>
-<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; }</div>
-<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; is.Take();</div>
-<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; }</div>
-<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">return</span> codepoint;</div>
-<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; }</div>
-<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;</div>
-<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> CharType&gt;</div>
-<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keyword">class </span>StackStream {</div>
-<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div>
-<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;</div>
-<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; StackStream(internal::Stack&lt;StackAllocator&gt;&amp; stack) : stack_(stack), length_(0) {}</div>
-<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> Put(Ch c) {</div>
-<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; *stack_.template Push&lt;Ch&gt;() = c;</div>
-<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; ++length_;</div>
-<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; }</div>
-<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;</div>
-<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span>* Push(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count) {</div>
-<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; length_ += count;</div>
-<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">return</span> stack_.template Push&lt;Ch&gt;(count);</div>
-<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; }</div>
-<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160;</div>
-<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keywordtype">size_t</span> Length()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> length_; }</div>
-<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;</div>
-<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; Ch* Pop() {</div>
-<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">return</span> stack_.template Pop&lt;Ch&gt;(length_);</div>
-<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; }</div>
-<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;</div>
-<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; StackStream(<span class="keyword">const</span> StackStream&amp;);</div>
-<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; StackStream&amp; operator=(<span class="keyword">const</span> StackStream&amp;);</div>
-<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160;</div>
-<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; internal::Stack&lt;StackAllocator&gt;&amp; stack_;</div>
-<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length_;</div>
-<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; };</div>
-<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160;</div>
-<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="comment">// Parse string and generate String event. Different code paths for kParseInsituFlag.</span></div>
-<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordtype">void</span> ParseString(InputStream&amp; is, Handler&amp; handler, <span class="keywordtype">bool</span> isKey = <span class="keyword">false</span>) {</div>
-<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; internal::StreamLocalCopy&lt;InputStream&gt; copy(is);</div>
-<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; InputStream&amp; s(copy.s);</div>
-<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;</div>
-<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(s.Peek() == <span class="charliteral">&#39;\&quot;&#39;</span>);</div>
-<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; s.Take(); <span class="comment">// Skip &#39;\&quot;&#39;</span></div>
-<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160;</div>
-<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordtype">bool</span> success = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea">kParseInsituFlag</a>) {</div>
-<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keyword">typename</span> InputStream::Ch *head = s.PutBegin();</div>
-<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; ParseStringToStream&lt;parseFlags, SourceEncoding, SourceEncoding&gt;(s, s);</div>
-<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div>
-<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordtype">size_t</span> length = s.PutEnd(head) - 1;</div>
-<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(length &lt;= 0xFFFFFFFF);</div>
-<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keyword">const</span> <span class="keyword">typename</span> TargetEncoding::Ch* <span class="keyword">const</span> str = <span class="keyword">reinterpret_cast&lt;</span>typename TargetEncoding::Ch*<span class="keyword">&gt;</span>(head);</div>
-<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; success = (isKey ? handler.Key(str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(length), <span class="keyword">false</span>) : handler.String(str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(length), <span class="keyword">false</span>));</div>
-<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; }</div>
-<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; StackStream&lt;typename TargetEncoding::Ch&gt; stackStream(stack_);</div>
-<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; ParseStringToStream&lt;parseFlags, SourceEncoding, TargetEncoding&gt;(s, stackStream);</div>
-<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div>
-<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(stackStream.Length()) - 1;</div>
-<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keyword">const</span> <span class="keyword">typename</span> TargetEncoding::Ch* <span class="keyword">const</span> str = stackStream.Pop();</div>
-<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; success = (isKey ? handler.Key(str, length, <span class="keyword">true</span>) : handler.String(str, length, <span class="keyword">true</span>));</div>
-<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; }</div>
-<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!success))</div>
-<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, s.Tell());</div>
-<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; }</div>
-<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;</div>
-<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="comment">// Parse string to an output is</span></div>
-<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="comment">// This function handles the prefix/suffix double quotes, escaping, and optional encoding validation.</span></div>
-<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> SEncoding, <span class="keyword">typename</span> TEncoding, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> ParseStringToStream(InputStream&amp; is, OutputStream&amp; os) {<span class="comment"></span></div>
-<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div>
-<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;<span class="comment"></span><span class="preprocessor">#define Z16 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</span></div>
-<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> escape[256] = {</div>
-<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; Z16, Z16, 0, 0,<span class="charliteral">&#39;\&quot;&#39;</span>, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<span class="charliteral">&#39;/&#39;</span>,</div>
-<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; Z16, Z16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<span class="charliteral">&#39;\\&#39;</span>, 0, 0, 0,</div>
-<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; 0, 0,<span class="charliteral">&#39;\b&#39;</span>, 0, 0, 0,<span class="charliteral">&#39;\f&#39;</span>, 0, 0, 0, 0, 0, 0, 0,<span class="charliteral">&#39;\n&#39;</span>, 0,</div>
-<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; 0, 0,<span class="charliteral">&#39;\r&#39;</span>, 0,<span class="charliteral">&#39;\t&#39;</span>, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div>
-<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16</div>
-<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; };</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;<span class="preprocessor">#undef Z16</span></div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;<span class="comment">//!@endcond</span></div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordflow">for</span> (;;) {</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="comment">// Scan and copy string before &quot;\\\&quot;&quot; or &lt; 0x20. This is an optional optimzation.</span></div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordflow">if</span> (!(parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a3df81f75479da8e052393f92cbec394b">kParseValidateEncodingFlag</a>))</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; ScanCopyUnescapedString(is, os);</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; Ch c = is.Peek();</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(c == <span class="charliteral">&#39;\\&#39;</span>)) { <span class="comment">// Escape</span></div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordtype">size_t</span> escapeOffset = is.Tell(); <span class="comment">// For invalid escaping, report the inital &#39;\\&#39; as error offset</span></div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; is.Take();</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; Ch e = is.Peek();</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keywordflow">if</span> ((<span class="keyword">sizeof</span>(Ch) == 1 || <span class="keywordtype">unsigned</span>(e) &lt; 256) &amp;&amp; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(escape[static_cast&lt;unsigned char&gt;(e)])) {</div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; is.Take();</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; os.Put(static_cast&lt;typename TEncoding::Ch&gt;(escape[static_cast&lt;unsigned char&gt;(e)]));</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; }</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(e == <span class="charliteral">&#39;u&#39;</span>)) { <span class="comment">// Unicode</span></div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; is.Take();</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keywordtype">unsigned</span> codepoint = ParseHex4(is, escapeOffset);</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(codepoint &gt;= 0xD800 &amp;&amp; codepoint &lt;= 0xDBFF)) {</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="comment">// Handle UTF-16 surrogate pair</span></div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!Consume(is, <span class="charliteral">&#39;\\&#39;</span>) || !Consume(is, <span class="charliteral">&#39;u&#39;</span>)))</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386">kParseErrorStringUnicodeSurrogateInvalid</a>, escapeOffset);</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keywordtype">unsigned</span> codepoint2 = ParseHex4(is, escapeOffset);</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(codepoint2 &lt; 0xDC00 || codepoint2 &gt; 0xDFFF))</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386">kParseErrorStringUnicodeSurrogateInvalid</a>, escapeOffset);</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; codepoint = (((codepoint - 0xD800) &lt;&lt; 10) | (codepoint2 - 0xDC00)) + 0x10000;</div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; }</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; TEncoding::Encode(os, codepoint);</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; }</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a8dd0af5e6103a6503c61c38cb2b0bab9">kParseErrorStringEscapeInvalid</a>, escapeOffset);</div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; }</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(c == <span class="charliteral">&#39;&quot;&#39;</span>)) { <span class="comment">// Closing double quote</span></div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; is.Take();</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; os.Put(<span class="charliteral">&#39;\0&#39;</span>); <span class="comment">// null-terminate the string</span></div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; }</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(static_cast&lt;unsigned&gt;(c) &lt; 0x20)) { <span class="comment">// RFC 4627: unescaped = %x20-21 / %x23-5B / %x5D-10FFFF</span></div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;\0&#39;</span>)</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60af7daa91caa53abb881ea231a874a4f40">kParseErrorStringMissQuotationMark</a>, is.Tell());</div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f">kParseErrorStringInvalidEncoding</a>, is.Tell());</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; }</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keywordtype">size_t</span> offset = is.Tell();</div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>((parseFlags &amp; kParseValidateEncodingFlag ?</div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; !Transcoder&lt;SEncoding, TEncoding&gt;::Validate(is, os) :</div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; !Transcoder&lt;SEncoding, TEncoding&gt;::Transcode(is, os))))</div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f">kParseErrorStringInvalidEncoding</a>, offset);</div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; }</div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; }</div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; }</div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> ScanCopyUnescapedString(InputStream&amp;, OutputStream&amp;) {</div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="comment">// Do nothing for generic version</span></div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; }</div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;</div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;<span class="preprocessor">#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42)</span></div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="comment">// StringStream -&gt; StackStream&lt;char&gt;</span></div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> ScanCopyUnescapedString(StringStream&amp; is, StackStream&lt;char&gt;&amp; os) {</div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* p = is.src_;</div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;</div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <span class="comment">// Scan one by one until alignment (unaligned load may cross page boundary and cause crash)</span></div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\&quot;&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\\&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(static_cast&lt;unsigned&gt;(*p) &lt; 0x20)) {</div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; is.src_ = p;</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; }</div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; os.Put(*p++);</div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;</div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="comment">// The rest of string using SIMD</span></div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> dquote[16] = { <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span> };</div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> bslash[16] = { <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span> };</div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> space[16] = { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F };</div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="keyword">const</span> __m128i dq = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;dquote[0]));</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="keyword">const</span> __m128i bs = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;bslash[0]));</div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keyword">const</span> __m128i sp = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;space[0]));</div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;</div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keywordflow">for</span> (;; p += 16) {</div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keyword">const</span> __m128i s = _mm_load_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keyword">const</span> __m128i t1 = _mm_cmpeq_epi8(s, dq);</div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keyword">const</span> __m128i t2 = _mm_cmpeq_epi8(s, bs);</div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="keyword">const</span> __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); <span class="comment">// s &lt; 0x20 &lt;=&gt; max(s, 0x1F) == 0x1F</span></div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="keyword">const</span> __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3);</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> r = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">&gt;</span>(_mm_movemask_epi8(x));</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(r != 0)) { <span class="comment">// some of characters is escaped</span></div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length;</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;<span class="preprocessor"> #ifdef _MSC_VER // Find the index of first escaped</span></div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offset;</div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; _BitScanForward(&amp;offset, r);</div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; length = offset;</div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;<span class="preprocessor"> #else</span></div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; length = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(__builtin_ffs(r) - 1);</div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;<span class="preprocessor"> #endif</span></div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">if</span> (length != 0) {</div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordtype">char</span>* q = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(os.Push(length));</div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; length; i++)</div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; q[i] = p[i];</div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; p += length;</div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; }</div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; }</div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; _mm_storeu_si128(reinterpret_cast&lt;__m128i *&gt;(os.Push(16)), s);</div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; }</div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; is.src_ = p;</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; }</div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; <span class="comment">// InsituStringStream -&gt; InsituStringStream</span></div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> ScanCopyUnescapedString(InsituStringStream&amp; is, InsituStringStream&amp; os) {</div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(&amp;is == &amp;os);</div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; (void)os;</div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;</div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <span class="keywordflow">if</span> (is.src_ == is.dst_) {</div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; SkipUnescapedString(is);</div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; }</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;</div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <span class="keywordtype">char</span>* p = is.src_;</div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordtype">char</span> *q = is.dst_;</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="comment">// Scan one by one until alignment (unaligned load may cross page boundary and cause crash)</span></div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\&quot;&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\\&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(static_cast&lt;unsigned&gt;(*p) &lt; 0x20)) {</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; is.src_ = p;</div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; is.dst_ = q;</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; }</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; *q++ = *p++;</div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;</div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="comment">// The rest of string using SIMD</span></div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> dquote[16] = { <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span> };</div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> bslash[16] = { <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span> };</div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> space[16] = { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F };</div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <span class="keyword">const</span> __m128i dq = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;dquote[0]));</div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="keyword">const</span> __m128i bs = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;bslash[0]));</div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keyword">const</span> __m128i sp = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;space[0]));</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keywordflow">for</span> (;; p += 16, q += 16) {</div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <span class="keyword">const</span> __m128i s = _mm_load_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keyword">const</span> __m128i t1 = _mm_cmpeq_epi8(s, dq);</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <span class="keyword">const</span> __m128i t2 = _mm_cmpeq_epi8(s, bs);</div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <span class="keyword">const</span> __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); <span class="comment">// s &lt; 0x20 &lt;=&gt; max(s, 0x1F) == 0x1F</span></div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <span class="keyword">const</span> __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3);</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> r = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">&gt;</span>(_mm_movemask_epi8(x));</div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(r != 0)) { <span class="comment">// some of characters is escaped</span></div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <span class="keywordtype">size_t</span> length;</div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;<span class="preprocessor">#ifdef _MSC_VER // Find the index of first escaped</span></div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offset;</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; _BitScanForward(&amp;offset, r);</div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; length = offset;</div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; length = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(__builtin_ffs(r) - 1);</div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>* pend = p + length; p != pend; )</div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; *q++ = *p++;</div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; }</div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; _mm_storeu_si128(reinterpret_cast&lt;__m128i *&gt;(q), s);</div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; }</div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;</div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; is.src_ = p;</div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; is.dst_ = q;</div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; }</div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;</div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="comment">// When read/write pointers are the same for insitu stream, just skip unescaped characters</span></div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> SkipUnescapedString(InsituStringStream&amp; is) {</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(is.src_ == is.dst_);</div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="keywordtype">char</span>* p = is.src_;</div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;</div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="comment">// Scan one by one until alignment (unaligned load may cross page boundary and cause crash)</span></div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keywordflow">for</span> (; p != nextAligned; p++)</div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\&quot;&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\\&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(static_cast&lt;unsigned&gt;(*p) &lt; 0x20)) {</div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; is.src_ = is.dst_ = p;</div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; }</div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;</div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="comment">// The rest of string using SIMD</span></div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> dquote[16] = { <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span> };</div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> bslash[16] = { <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span> };</div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> space[16] = { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F };</div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keyword">const</span> __m128i dq = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;dquote[0]));</div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keyword">const</span> __m128i bs = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;bslash[0]));</div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keyword">const</span> __m128i sp = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;space[0]));</div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;</div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <span class="keywordflow">for</span> (;; p += 16) {</div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="keyword">const</span> __m128i s = _mm_load_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="keyword">const</span> __m128i t1 = _mm_cmpeq_epi8(s, dq);</div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="keyword">const</span> __m128i t2 = _mm_cmpeq_epi8(s, bs);</div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <span class="keyword">const</span> __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); <span class="comment">// s &lt; 0x20 &lt;=&gt; max(s, 0x1F) == 0x1F</span></div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keyword">const</span> __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3);</div>
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> r = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">&gt;</span>(_mm_movemask_epi8(x));</div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(r != 0)) { <span class="comment">// some of characters is escaped</span></div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; <span class="keywordtype">size_t</span> length;</div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;<span class="preprocessor">#ifdef _MSC_VER // Find the index of first escaped</span></div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offset;</div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; _BitScanForward(&amp;offset, r);</div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; length = offset;</div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; length = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(__builtin_ffs(r) - 1);</div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; p += length;</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; }</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; }</div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;</div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; is.src_ = is.dst_ = p;</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; }</div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_NEON)</span></div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="comment">// StringStream -&gt; StackStream&lt;char&gt;</span></div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> ScanCopyUnescapedString(StringStream&amp; is, StackStream&lt;char&gt;&amp; os) {</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* p = is.src_;</div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;</div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <span class="comment">// Scan one by one until alignment (unaligned load may cross page boundary and cause crash)</span></div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\&quot;&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\\&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(static_cast&lt;unsigned&gt;(*p) &lt; 0x20)) {</div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; is.src_ = p;</div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; }</div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; os.Put(*p++);</div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;</div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <span class="comment">// The rest of string using SIMD</span></div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <span class="keyword">const</span> uint8x16_t s0 = vmovq_n_u8(<span class="charliteral">&#39;&quot;&#39;</span>);</div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; <span class="keyword">const</span> uint8x16_t s1 = vmovq_n_u8(<span class="charliteral">&#39;\\&#39;</span>);</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; <span class="keyword">const</span> uint8x16_t s2 = vmovq_n_u8(<span class="charliteral">&#39;\b&#39;</span>);</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keyword">const</span> uint8x16_t s3 = vmovq_n_u8(32);</div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;</div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <span class="keywordflow">for</span> (;; p += 16) {</div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <span class="keyword">const</span> uint8x16_t s = vld1q_u8(reinterpret_cast&lt;const uint8_t *&gt;(p));</div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; uint8x16_t x = vceqq_u8(s, s0);</div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s1));</div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s2));</div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; x = vorrq_u8(x, vcltq_u8(s, s3));</div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;</div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; x = vrev64q_u8(x); <span class="comment">// Rev in 64</span></div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; uint64_t low = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 0); <span class="comment">// extract</span></div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; uint64_t high = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 1); <span class="comment">// extract</span></div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;</div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length = 0;</div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; <span class="keywordtype">bool</span> escaped = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; <span class="keywordflow">if</span> (low == 0) {</div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="keywordflow">if</span> (high != 0) {</div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <span class="keywordtype">unsigned</span> lz = (unsigned)__builtin_clzll(high);;</div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; length = 8 + (lz &gt;&gt; 3);</div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; escaped = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; }</div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; <span class="keywordtype">unsigned</span> lz = (unsigned)__builtin_clzll(low);;</div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; length = lz &gt;&gt; 3;</div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; escaped = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; }</div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(escaped)) { <span class="comment">// some of characters is escaped</span></div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="keywordflow">if</span> (length != 0) {</div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <span class="keywordtype">char</span>* q = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(os.Push(length));</div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; length; i++)</div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; q[i] = p[i];</div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;</div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; p += length;</div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; }</div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; }</div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; vst1q_u8(reinterpret_cast&lt;uint8_t *&gt;(os.Push(16)), s);</div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; }</div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;</div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; is.src_ = p;</div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; }</div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;</div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; <span class="comment">// InsituStringStream -&gt; InsituStringStream</span></div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> ScanCopyUnescapedString(InsituStringStream&amp; is, InsituStringStream&amp; os) {</div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(&amp;is == &amp;os);</div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; (void)os;</div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;</div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="keywordflow">if</span> (is.src_ == is.dst_) {</div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; SkipUnescapedString(is);</div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; }</div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;</div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <span class="keywordtype">char</span>* p = is.src_;</div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordtype">char</span> *q = is.dst_;</div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;</div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="comment">// Scan one by one until alignment (unaligned load may cross page boundary and cause crash)</span></div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\&quot;&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\\&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(static_cast&lt;unsigned&gt;(*p) &lt; 0x20)) {</div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; is.src_ = p;</div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; is.dst_ = q;</div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; }</div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; *q++ = *p++;</div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;</div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; <span class="comment">// The rest of string using SIMD</span></div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <span class="keyword">const</span> uint8x16_t s0 = vmovq_n_u8(<span class="charliteral">&#39;&quot;&#39;</span>);</div>
-<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; <span class="keyword">const</span> uint8x16_t s1 = vmovq_n_u8(<span class="charliteral">&#39;\\&#39;</span>);</div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <span class="keyword">const</span> uint8x16_t s2 = vmovq_n_u8(<span class="charliteral">&#39;\b&#39;</span>);</div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <span class="keyword">const</span> uint8x16_t s3 = vmovq_n_u8(32);</div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;</div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; <span class="keywordflow">for</span> (;; p += 16, q += 16) {</div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; <span class="keyword">const</span> uint8x16_t s = vld1q_u8(reinterpret_cast&lt;uint8_t *&gt;(p));</div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; uint8x16_t x = vceqq_u8(s, s0);</div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s1));</div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s2));</div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; x = vorrq_u8(x, vcltq_u8(s, s3));</div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;</div>
-<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; x = vrev64q_u8(x); <span class="comment">// Rev in 64</span></div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; uint64_t low = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 0); <span class="comment">// extract</span></div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; uint64_t high = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 1); <span class="comment">// extract</span></div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;</div>
-<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length = 0;</div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <span class="keywordtype">bool</span> escaped = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; <span class="keywordflow">if</span> (low == 0) {</div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; <span class="keywordflow">if</span> (high != 0) {</div>
-<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; <span class="keywordtype">unsigned</span> lz = (unsigned)__builtin_clzll(high);</div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; length = 8 + (lz &gt;&gt; 3);</div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; escaped = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; }</div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; <span class="keywordtype">unsigned</span> lz = (unsigned)__builtin_clzll(low);</div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; length = lz &gt;&gt; 3;</div>
-<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; escaped = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; }</div>
-<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(escaped)) { <span class="comment">// some of characters is escaped</span></div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>* pend = p + length; p != pend; ) {</div>
-<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; *q++ = *p++;</div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; }</div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; }</div>
-<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; vst1q_u8(reinterpret_cast&lt;uint8_t *&gt;(q), s);</div>
-<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; }</div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;</div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; is.src_ = p;</div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; is.dst_ = q;</div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; }</div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;</div>
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; <span class="comment">// When read/write pointers are the same for insitu stream, just skip unescaped characters</span></div>
-<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> SkipUnescapedString(InsituStringStream&amp; is) {</div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(is.src_ == is.dst_);</div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; <span class="keywordtype">char</span>* p = is.src_;</div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;</div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; <span class="comment">// Scan one by one until alignment (unaligned load may cross page boundary and cause crash)</span></div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div>
-<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; <span class="keywordflow">for</span> (; p != nextAligned; p++)</div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\&quot;&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\\&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(static_cast&lt;unsigned&gt;(*p) &lt; 0x20)) {</div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; is.src_ = is.dst_ = p;</div>
-<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; }</div>
-<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;</div>
-<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; <span class="comment">// The rest of string using SIMD</span></div>
-<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; <span class="keyword">const</span> uint8x16_t s0 = vmovq_n_u8(<span class="charliteral">&#39;&quot;&#39;</span>);</div>
-<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <span class="keyword">const</span> uint8x16_t s1 = vmovq_n_u8(<span class="charliteral">&#39;\\&#39;</span>);</div>
-<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <span class="keyword">const</span> uint8x16_t s2 = vmovq_n_u8(<span class="charliteral">&#39;\b&#39;</span>);</div>
-<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; <span class="keyword">const</span> uint8x16_t s3 = vmovq_n_u8(32);</div>
-<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;</div>
-<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; <span class="keywordflow">for</span> (;; p += 16) {</div>
-<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; <span class="keyword">const</span> uint8x16_t s = vld1q_u8(reinterpret_cast&lt;uint8_t *&gt;(p));</div>
-<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; uint8x16_t x = vceqq_u8(s, s0);</div>
-<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s1));</div>
-<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s2));</div>
-<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; x = vorrq_u8(x, vcltq_u8(s, s3));</div>
-<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;</div>
-<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; x = vrev64q_u8(x); <span class="comment">// Rev in 64</span></div>
-<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; uint64_t low = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 0); <span class="comment">// extract</span></div>
-<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; uint64_t high = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 1); <span class="comment">// extract</span></div>
-<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;</div>
-<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; <span class="keywordflow">if</span> (low == 0) {</div>
-<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; <span class="keywordflow">if</span> (high != 0) {</div>
-<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; <span class="keywordtype">int</span> lz = __builtin_clzll(high);</div>
-<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; p += 8 + (lz &gt;&gt; 3);</div>
-<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; }</div>
-<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; <span class="keywordtype">int</span> lz = __builtin_clzll(low);</div>
-<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; p += lz &gt;&gt; 3;</div>
-<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; }</div>
-<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; }</div>
-<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;</div>
-<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; is.src_ = is.dst_ = p;</div>
-<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; }</div>
-<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_NEON</span></div>
-<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;</div>
-<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keywordtype">bool</span> backup, <span class="keywordtype">bool</span> pushOnTake&gt;</div>
-<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; <span class="keyword">class </span>NumberStream;</div>
-<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;</div>
-<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; <span class="keyword">class </span>NumberStream&lt;InputStream, false, false&gt; {</div>
-<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> InputStream::Ch Ch;</div>
-<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;</div>
-<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; NumberStream(GenericReader&amp; reader, InputStream&amp; s) : is(s) { (void)reader; }</div>
-<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;</div>
-<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; RAPIDJSON_FORCEINLINE Ch Peek()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> is.Peek(); }</div>
-<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; RAPIDJSON_FORCEINLINE Ch TakePush() { <span class="keywordflow">return</span> is.Take(); }</div>
-<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; RAPIDJSON_FORCEINLINE Ch Take() { <span class="keywordflow">return</span> is.Take(); }</div>
-<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> Push(<span class="keywordtype">char</span>) {}</div>
-<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;</div>
-<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; <span class="keywordtype">size_t</span> Tell() { <span class="keywordflow">return</span> is.Tell(); }</div>
-<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; <span class="keywordtype">size_t</span> Length() { <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* Pop() { <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;</div>
-<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <span class="keyword">protected</span>:</div>
-<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; NumberStream&amp; operator=(<span class="keyword">const</span> NumberStream&amp;);</div>
-<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;</div>
-<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; InputStream&amp; is;</div>
-<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; };</div>
-<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;</div>
-<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; <span class="keyword">class </span>NumberStream&lt;InputStream, true, false&gt; : <span class="keyword">public</span> NumberStream&lt;InputStream, false, false&gt; {</div>
-<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="keyword">typedef</span> NumberStream&lt;InputStream, false, false&gt; Base;</div>
-<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; NumberStream(GenericReader&amp; reader, InputStream&amp; is) : Base(reader, is), stackStream(reader.stack_) {}</div>
-<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;</div>
-<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; RAPIDJSON_FORCEINLINE Ch TakePush() {</div>
-<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; stackStream.Put(static_cast&lt;char&gt;(Base::is.Peek()));</div>
-<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <span class="keywordflow">return</span> Base::is.Take();</div>
-<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; }</div>
-<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;</div>
-<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> Push(<span class="keywordtype">char</span> c) {</div>
-<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; stackStream.Put(c);</div>
-<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; }</div>
-<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;</div>
-<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <span class="keywordtype">size_t</span> Length() { <span class="keywordflow">return</span> stackStream.Length(); }</div>
-<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;</div>
-<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* Pop() {</div>
-<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; stackStream.Put(<span class="charliteral">&#39;\0&#39;</span>);</div>
-<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <span class="keywordflow">return</span> stackStream.Pop();</div>
-<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; }</div>
-<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;</div>
-<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; <span class="keyword">private</span>:</div>
-<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; StackStream&lt;char&gt; stackStream;</div>
-<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; };</div>
-<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;</div>
-<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; <span class="keyword">class </span>NumberStream&lt;InputStream, true, true&gt; : <span class="keyword">public</span> NumberStream&lt;InputStream, true, false&gt; {</div>
-<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="keyword">typedef</span> NumberStream&lt;InputStream, true, false&gt; Base;</div>
-<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; <span class="keyword">public</span>:</div>
-<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; NumberStream(GenericReader&amp; reader, InputStream&amp; is) : Base(reader, is) {}</div>
-<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;</div>
-<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; RAPIDJSON_FORCEINLINE Ch Take() { <span class="keywordflow">return</span> Base::TakePush(); }</div>
-<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; };</div>
-<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;</div>
-<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; <span class="keywordtype">void</span> ParseNumber(InputStream&amp; is, Handler&amp; handler) {</div>
-<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; internal::StreamLocalCopy&lt;InputStream&gt; copy(is);</div>
-<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; NumberStream&lt;InputStream,</div>
-<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; ((parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a13981c0b803803f59d7a01aef3dfc987">kParseNumbersAsStringsFlag</a>) != 0) ?</div>
-<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; ((parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea">kParseInsituFlag</a>) == 0) :</div>
-<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; ((parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9adf80892cdfa076b2d1a7dd9530e15cb0">kParseFullPrecisionFlag</a>) != 0),</div>
-<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a13981c0b803803f59d7a01aef3dfc987">kParseNumbersAsStringsFlag</a>) != 0 &amp;&amp;</div>
-<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; (parseFlags &amp; kParseInsituFlag) == 0&gt; s(*<span class="keyword">this</span>, copy.s);</div>
-<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;</div>
-<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; <span class="keywordtype">size_t</span> startOffset = s.Tell();</div>
-<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; <span class="keywordtype">double</span> d = 0.0;</div>
-<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; <span class="keywordtype">bool</span> useNanOrInf = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;</div>
-<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <span class="comment">// Parse minus</span></div>
-<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; <span class="keywordtype">bool</span> minus = Consume(s, <span class="charliteral">&#39;-&#39;</span>);</div>
-<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;</div>
-<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <span class="comment">// Parse int: zero / ( digit1-9 *DIGIT )</span></div>
-<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; <span class="keywordtype">unsigned</span> i = 0;</div>
-<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; uint64_t i64 = 0;</div>
-<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; <span class="keywordtype">bool</span> use64bit = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; <span class="keywordtype">int</span> significandDigit = 0;</div>
-<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(s.Peek() == <span class="charliteral">&#39;0&#39;</span>)) {</div>
-<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; i = 0;</div>
-<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; s.TakePush();</div>
-<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; }</div>
-<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;1&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div>
-<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; i = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;</div>
-<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; <span class="keywordflow">if</span> (minus)</div>
-<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div>
-<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(i &gt;= 214748364)) { <span class="comment">// 2^31 = 2147483648</span></div>
-<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(i != 214748364 || s.Peek() &gt; <span class="charliteral">&#39;8&#39;</span>)) {</div>
-<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; i64 = i;</div>
-<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; use64bit = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; }</div>
-<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; }</div>
-<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; i = i * 10 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; significandDigit++;</div>
-<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; }</div>
-<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div>
-<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(i &gt;= 429496729)) { <span class="comment">// 2^32 - 1 = 4294967295</span></div>
-<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(i != 429496729 || s.Peek() &gt; <span class="charliteral">&#39;5&#39;</span>)) {</div>
-<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; i64 = i;</div>
-<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; use64bit = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; }</div>
-<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; }</div>
-<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; i = i * 10 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; significandDigit++;</div>
-<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; }</div>
-<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; }</div>
-<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; <span class="comment">// Parse NaN or Infinity here</span></div>
-<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a857894ab51cafa62956e9c9f0dafc4d8">kParseNanAndInfFlag</a>) &amp;&amp; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>((s.Peek() == <span class="charliteral">&#39;I&#39;</span> || s.Peek() == <span class="charliteral">&#39;N&#39;</span>))) {</div>
-<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; <span class="keywordflow">if</span> (Consume(s, <span class="charliteral">&#39;N&#39;</span>)) {</div>
-<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; <span class="keywordflow">if</span> (Consume(s, <span class="charliteral">&#39;a&#39;</span>) &amp;&amp; Consume(s, <span class="charliteral">&#39;N&#39;</span>)) {</div>
-<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; d = std::numeric_limits&lt;double&gt;::quiet_NaN();</div>
-<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; useNanOrInf = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; }</div>
-<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; }</div>
-<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(Consume(s, <span class="charliteral">&#39;I&#39;</span>))) {</div>
-<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; <span class="keywordflow">if</span> (Consume(s, <span class="charliteral">&#39;n&#39;</span>) &amp;&amp; Consume(s, <span class="charliteral">&#39;f&#39;</span>)) {</div>
-<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; d = (minus ? -std::numeric_limits&lt;double&gt;::infinity() : std::numeric_limits&lt;double&gt;::infinity());</div>
-<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; useNanOrInf = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;</div>
-<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(s.Peek() == <span class="charliteral">&#39;i&#39;</span> &amp;&amp; !(Consume(s, <span class="charliteral">&#39;i&#39;</span>) &amp;&amp; Consume(s, <span class="charliteral">&#39;n&#39;</span>)</div>
-<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; &amp;&amp; Consume(s, <span class="charliteral">&#39;i&#39;</span>) &amp;&amp; Consume(s, <span class="charliteral">&#39;t&#39;</span>) &amp;&amp; Consume(s, <span class="charliteral">&#39;y&#39;</span>)))) {</div>
-<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, s.Tell());</div>
-<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; }</div>
-<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; }</div>
-<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; }</div>
-<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; </div>
-<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!useNanOrInf)) {</div>
-<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, s.Tell());</div>
-<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; }</div>
-<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; }</div>
-<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, s.Tell());</div>
-<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;</div>
-<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; <span class="comment">// Parse 64bit int</span></div>
-<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; <span class="keywordtype">bool</span> useDouble = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; <span class="keywordflow">if</span> (use64bit) {</div>
-<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; <span class="keywordflow">if</span> (minus)</div>
-<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div>
-<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(i64 &gt;= <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x0CCCCCCC, 0xCCCCCCCC))) <span class="comment">// 2^63 = 9223372036854775808</span></div>
-<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(i64 != <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x0CCCCCCC, 0xCCCCCCCC) || s.Peek() &gt; <span class="charliteral">&#39;8&#39;</span>)) {</div>
-<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(i64);</div>
-<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; useDouble = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; }</div>
-<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; i64 = i64 * 10 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; significandDigit++;</div>
-<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; }</div>
-<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div>
-<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(i64 &gt;= <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x19999999, 0x99999999))) <span class="comment">// 2^64 - 1 = 18446744073709551615</span></div>
-<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(i64 != <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x19999999, 0x99999999) || s.Peek() &gt; <span class="charliteral">&#39;5&#39;</span>)) {</div>
-<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(i64);</div>
-<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; useDouble = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; }</div>
-<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; i64 = i64 * 10 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; significandDigit++;</div>
-<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; }</div>
-<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; }</div>
-<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;</div>
-<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; <span class="comment">// Force double for big integer</span></div>
-<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; <span class="keywordflow">if</span> (useDouble) {</div>
-<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div>
-<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(d &gt;= 1.7976931348623157e307)) <span class="comment">// DBL_MAX / 10.0</span></div>
-<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805">kParseErrorNumberTooBig</a>, startOffset);</div>
-<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; d = d * 10 + (s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; }</div>
-<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; }</div>
-<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;</div>
-<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; <span class="comment">// Parse frac = decimal-point 1*DIGIT</span></div>
-<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; <span class="keywordtype">int</span> expFrac = 0;</div>
-<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; <span class="keywordtype">size_t</span> decimalPosition;</div>
-<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; <span class="keywordflow">if</span> (Consume(s, <span class="charliteral">&#39;.&#39;</span>)) {</div>
-<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; decimalPosition = s.Length();</div>
-<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;</div>
-<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)))</div>
-<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ac840ece3ba6874fe6f16c01ebb71031f">kParseErrorNumberMissFraction</a>, s.Tell());</div>
-<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;</div>
-<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; <span class="keywordflow">if</span> (!useDouble) {</div>
-<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;<span class="preprocessor">#if RAPIDJSON_64BIT</span></div>
-<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; <span class="comment">// Use i64 to store significand in 64-bit architecture</span></div>
-<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; <span class="keywordflow">if</span> (!use64bit)</div>
-<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; i64 = i;</div>
-<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;</div>
-<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div>
-<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; <span class="keywordflow">if</span> (i64 &gt; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x1FFFFF, 0xFFFFFFFF)) <span class="comment">// 2^53 - 1 for fast path</span></div>
-<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; i64 = i64 * 10 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; --expFrac;</div>
-<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; <span class="keywordflow">if</span> (i64 != 0)</div>
-<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; significandDigit++;</div>
-<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; }</div>
-<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; }</div>
-<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;</div>
-<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(i64);</div>
-<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; <span class="comment">// Use double to store significand in 32-bit architecture</span></div>
-<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(use64bit ? i64 : i);</div>
-<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; useDouble = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; }</div>
-<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;</div>
-<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div>
-<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; <span class="keywordflow">if</span> (significandDigit &lt; 17) {</div>
-<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; d = d * 10.0 + (s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; --expFrac;</div>
-<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(d &gt; 0.0))</div>
-<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; significandDigit++;</div>
-<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; }</div>
-<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; s.TakePush();</div>
-<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; }</div>
-<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; }</div>
-<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; decimalPosition = s.Length(); <span class="comment">// decimal position at the end of integer.</span></div>
-<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;</div>
-<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; <span class="comment">// Parse exp = e [ minus / plus ] 1*DIGIT</span></div>
-<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; <span class="keywordtype">int</span> exp = 0;</div>
-<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; <span class="keywordflow">if</span> (Consume(s, <span class="charliteral">&#39;e&#39;</span>) || Consume(s, <span class="charliteral">&#39;E&#39;</span>)) {</div>
-<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; <span class="keywordflow">if</span> (!useDouble) {</div>
-<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(use64bit ? i64 : i);</div>
-<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; useDouble = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; }</div>
-<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;</div>
-<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; <span class="keywordtype">bool</span> expMinus = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; <span class="keywordflow">if</span> (Consume(s, <span class="charliteral">&#39;+&#39;</span>))</div>
-<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; ;</div>
-<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Consume(s, <span class="charliteral">&#39;-&#39;</span>))</div>
-<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; expMinus = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;</div>
-<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div>
-<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; exp = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(s.Take() - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; <span class="keywordflow">if</span> (expMinus) {</div>
-<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div>
-<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; exp = exp * 10 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(s.Take() - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; <span class="keywordflow">if</span> (exp &gt;= 214748364) { <span class="comment">// Issue #313: prevent overflow exponent</span></div>
-<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) <span class="comment">// Consume the rest of exponent</span></div>
-<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; s.Take();</div>
-<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; }</div>
-<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; }</div>
-<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; }</div>
-<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; <span class="keywordflow">else</span> { <span class="comment">// positive exp</span></div>
-<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; <span class="keywordtype">int</span> maxExp = 308 - expFrac;</div>
-<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div>
-<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; exp = exp * 10 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(s.Take() - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(exp &gt; maxExp))</div>
-<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805">kParseErrorNumberTooBig</a>, startOffset);</div>
-<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; }</div>
-<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; }</div>
-<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; }</div>
-<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7">kParseErrorNumberMissExponent</a>, s.Tell());</div>
-<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;</div>
-<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; <span class="keywordflow">if</span> (expMinus)</div>
-<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; exp = -exp;</div>
-<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; }</div>
-<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;</div>
-<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; <span class="comment">// Finish parsing, call event according to the type of number.</span></div>
-<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; <span class="keywordtype">bool</span> cont = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;</div>
-<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a13981c0b803803f59d7a01aef3dfc987">kParseNumbersAsStringsFlag</a>) {</div>
-<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; kParseInsituFlag) {</div>
-<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; s.Pop(); <span class="comment">// Pop stack no matter if it will be used or not.</span></div>
-<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; <span class="keyword">typename</span> InputStream::Ch* head = is.PutBegin();</div>
-<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> length = s.Tell() - startOffset;</div>
-<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(length &lt;= 0xFFFFFFFF);</div>
-<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; <span class="comment">// unable to insert the \0 character here, it will erase the comma after this number</span></div>
-<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; <span class="keyword">const</span> <span class="keyword">typename</span> TargetEncoding::Ch* <span class="keyword">const</span> str = <span class="keyword">reinterpret_cast&lt;</span>typename TargetEncoding::Ch*<span class="keyword">&gt;</span>(head);</div>
-<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; cont = handler.RawNumber(str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(length), <span class="keyword">false</span>);</div>
-<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; }</div>
-<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> numCharsToCopy = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(s.Length());</div>
-<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; <a class="code" href="namespacerapidjson.html#a021f77051e9f85188fc2f71ff5a15ebc">StringStream</a> srcStream(s.Pop());</div>
-<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; StackStream&lt;typename TargetEncoding::Ch&gt; dstStream(stack_);</div>
-<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; <span class="keywordflow">while</span> (numCharsToCopy--) {</div>
-<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; Transcoder&lt;UTF8&lt;&gt;, TargetEncoding&gt;::Transcode(srcStream, dstStream);</div>
-<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; }</div>
-<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; dstStream.Put(<span class="charliteral">&#39;\0&#39;</span>);</div>
-<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <span class="keyword">const</span> <span class="keyword">typename</span> TargetEncoding::Ch* str = dstStream.Pop();</div>
-<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(dstStream.Length()) - 1;</div>
-<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; cont = handler.RawNumber(str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(length), <span class="keyword">true</span>);</div>
-<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; }</div>
-<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; }</div>
-<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; <span class="keywordtype">size_t</span> length = s.Length();</div>
-<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* decimal = s.Pop(); <span class="comment">// Pop stack no matter if it will be used or not.</span></div>
-<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;</div>
-<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="keywordflow">if</span> (useDouble) {</div>
-<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; <span class="keywordtype">int</span> p = exp + expFrac;</div>
-<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9adf80892cdfa076b2d1a7dd9530e15cb0">kParseFullPrecisionFlag</a>)</div>
-<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; d = internal::StrtodFullPrecision(d, p, decimal, length, decimalPosition, exp);</div>
-<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; d = internal::StrtodNormalPrecision(d, p);</div>
-<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;</div>
-<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; cont = handler.Double(minus ? -d : d);</div>
-<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; }</div>
-<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (useNanOrInf) {</div>
-<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; cont = handler.Double(d);</div>
-<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; }</div>
-<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; <span class="keywordflow">if</span> (use64bit) {</div>
-<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <span class="keywordflow">if</span> (minus)</div>
-<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; cont = handler.Int64(static_cast&lt;int64_t&gt;(~i64 + 1));</div>
-<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; cont = handler.Uint64(i64);</div>
-<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; }</div>
-<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; <span class="keywordflow">if</span> (minus)</div>
-<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; cont = handler.Int(static_cast&lt;int32_t&gt;(~i + 1));</div>
-<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; cont = handler.Uint(i);</div>
-<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; }</div>
-<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; }</div>
-<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; }</div>
-<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!cont))</div>
-<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, startOffset);</div>
-<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; }</div>
-<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;</div>
-<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; <span class="comment">// Parse any JSON value</span></div>
-<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; <span class="keywordtype">void</span> ParseValue(InputStream&amp; is, Handler&amp; handler) {</div>
-<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; <span class="keywordflow">switch</span> (is.Peek()) {</div>
-<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;n&#39;</span>: ParseNull &lt;parseFlags&gt;(is, handler); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;t&#39;</span>: ParseTrue &lt;parseFlags&gt;(is, handler); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;f&#39;</span>: ParseFalse &lt;parseFlags&gt;(is, handler); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;&quot;&#39;</span>: ParseString&lt;parseFlags&gt;(is, handler); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;{&#39;</span>: ParseObject&lt;parseFlags&gt;(is, handler); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;[&#39;</span>: ParseArray &lt;parseFlags&gt;(is, handler); <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; <span class="keywordflow">default</span> :</div>
-<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; ParseNumber&lt;parseFlags&gt;(is, handler);</div>
-<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;</div>
-<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; }</div>
-<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; }</div>
-<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;</div>
-<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; <span class="comment">// Iterative Parsing</span></div>
-<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;</div>
-<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; <span class="comment">// States</span></div>
-<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; <span class="keyword">enum</span> IterativeParsingState {</div>
-<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; IterativeParsingFinishState = 0, <span class="comment">// sink states at top</span></div>
-<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; IterativeParsingErrorState, <span class="comment">// sink states at top</span></div>
-<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; IterativeParsingStartState,</div>
-<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;</div>
-<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; <span class="comment">// Object states</span></div>
-<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; IterativeParsingObjectInitialState,</div>
-<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; IterativeParsingMemberKeyState,</div>
-<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; IterativeParsingMemberValueState,</div>
-<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; IterativeParsingObjectFinishState,</div>
-<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;</div>
-<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; <span class="comment">// Array states</span></div>
-<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; IterativeParsingArrayInitialState,</div>
-<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; IterativeParsingElementState,</div>
-<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; IterativeParsingArrayFinishState,</div>
-<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;</div>
-<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; <span class="comment">// Single value state</span></div>
-<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; IterativeParsingValueState,</div>
-<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; </div>
-<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; <span class="comment">// Delimiter states (at bottom)</span></div>
-<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; IterativeParsingElementDelimiterState,</div>
-<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; IterativeParsingMemberDelimiterState,</div>
-<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; IterativeParsingKeyValueDelimiterState,</div>
-<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; </div>
-<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; cIterativeParsingStateCount</div>
-<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; };</div>
-<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;</div>
-<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; <span class="comment">// Tokens</span></div>
-<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; <span class="keyword">enum</span> Token {</div>
-<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; LeftBracketToken = 0,</div>
-<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; RightBracketToken,</div>
-<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;</div>
-<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; LeftCurlyBracketToken,</div>
-<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; RightCurlyBracketToken,</div>
-<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;</div>
-<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; CommaToken,</div>
-<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; ColonToken,</div>
-<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;</div>
-<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; StringToken,</div>
-<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; FalseToken,</div>
-<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; TrueToken,</div>
-<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; NullToken,</div>
-<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; NumberToken,</div>
-<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;</div>
-<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; kTokenCount</div>
-<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; };</div>
-<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160;</div>
-<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; RAPIDJSON_FORCEINLINE Token Tokenize(Ch c) {</div>
-<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div>
-<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;<span class="comment"></span><span class="preprocessor">#define N NumberToken</span></div>
-<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;<span class="preprocessor">#define N16 N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N</span></div>
-<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; <span class="comment">// Maps from ASCII to Token</span></div>
-<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> tokenMap[256] = {</div>
-<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; N16, <span class="comment">// 00~0F</span></div>
-<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160; N16, <span class="comment">// 10~1F</span></div>
-<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; N, N, StringToken, N, N, N, N, N, N, N, N, N, CommaToken, N, N, N, <span class="comment">// 20~2F</span></div>
-<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; N, N, N, N, N, N, N, N, N, N, ColonToken, N, N, N, N, N, <span class="comment">// 30~3F</span></div>
-<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; N16, <span class="comment">// 40~4F</span></div>
-<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; N, N, N, N, N, N, N, N, N, N, N, LeftBracketToken, N, RightBracketToken, N, N, <span class="comment">// 50~5F</span></div>
-<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; N, N, N, N, N, N, FalseToken, N, N, N, N, N, N, N, NullToken, N, <span class="comment">// 60~6F</span></div>
-<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; N, N, N, N, TrueToken, N, N, N, N, N, N, LeftCurlyBracketToken, N, RightCurlyBracketToken, N, N, <span class="comment">// 70~7F</span></div>
-<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; N16, N16, N16, N16, N16, N16, N16, N16 <span class="comment">// 80~FF</span></div>
-<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; };</div>
-<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;<span class="preprocessor">#undef N</span></div>
-<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;<span class="preprocessor">#undef N16</span></div>
-<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;<span class="comment">//!@endcond</span></div>
-<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(Ch) == 1 || static_cast&lt;unsigned&gt;(c) &lt; 256)</div>
-<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Token<span class="keyword">&gt;</span>(tokenMap[<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(c)]);</div>
-<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; <span class="keywordflow">return</span> NumberToken;</div>
-<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; }</div>
-<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;</div>
-<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; RAPIDJSON_FORCEINLINE IterativeParsingState Predict(IterativeParsingState state, Token token) {</div>
-<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; <span class="comment">// current state x one lookahead token -&gt; new state</span></div>
-<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> G[cIterativeParsingStateCount][kTokenCount] = {</div>
-<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; <span class="comment">// Finish(sink state)</span></div>
-<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; {</div>
-<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div>
-<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div>
-<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; IterativeParsingErrorState</div>
-<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; },</div>
-<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; <span class="comment">// Error(sink state)</span></div>
-<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; {</div>
-<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div>
-<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div>
-<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; IterativeParsingErrorState</div>
-<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; },</div>
-<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; <span class="comment">// Start</span></div>
-<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160; {</div>
-<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; IterativeParsingArrayInitialState, <span class="comment">// Left bracket</span></div>
-<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; IterativeParsingErrorState, <span class="comment">// Right bracket</span></div>
-<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; IterativeParsingObjectInitialState, <span class="comment">// Left curly bracket</span></div>
-<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; IterativeParsingErrorState, <span class="comment">// Right curly bracket</span></div>
-<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; IterativeParsingErrorState, <span class="comment">// Comma</span></div>
-<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div>
-<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; IterativeParsingValueState, <span class="comment">// String</span></div>
-<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; IterativeParsingValueState, <span class="comment">// False</span></div>
-<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; IterativeParsingValueState, <span class="comment">// True</span></div>
-<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; IterativeParsingValueState, <span class="comment">// Null</span></div>
-<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; IterativeParsingValueState <span class="comment">// Number</span></div>
-<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; },</div>
-<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; <span class="comment">// ObjectInitial</span></div>
-<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; {</div>
-<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; IterativeParsingErrorState, <span class="comment">// Left bracket</span></div>
-<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; IterativeParsingErrorState, <span class="comment">// Right bracket</span></div>
-<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; IterativeParsingErrorState, <span class="comment">// Left curly bracket</span></div>
-<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; IterativeParsingObjectFinishState, <span class="comment">// Right curly bracket</span></div>
-<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; IterativeParsingErrorState, <span class="comment">// Comma</span></div>
-<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div>
-<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; IterativeParsingMemberKeyState, <span class="comment">// String</span></div>
-<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; IterativeParsingErrorState, <span class="comment">// False</span></div>
-<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; IterativeParsingErrorState, <span class="comment">// True</span></div>
-<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; IterativeParsingErrorState, <span class="comment">// Null</span></div>
-<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; IterativeParsingErrorState <span class="comment">// Number</span></div>
-<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160; },</div>
-<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; <span class="comment">// MemberKey</span></div>
-<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; {</div>
-<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; IterativeParsingErrorState, <span class="comment">// Left bracket</span></div>
-<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; IterativeParsingErrorState, <span class="comment">// Right bracket</span></div>
-<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; IterativeParsingErrorState, <span class="comment">// Left curly bracket</span></div>
-<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; IterativeParsingErrorState, <span class="comment">// Right curly bracket</span></div>
-<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; IterativeParsingErrorState, <span class="comment">// Comma</span></div>
-<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; IterativeParsingKeyValueDelimiterState, <span class="comment">// Colon</span></div>
-<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160; IterativeParsingErrorState, <span class="comment">// String</span></div>
-<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160; IterativeParsingErrorState, <span class="comment">// False</span></div>
-<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; IterativeParsingErrorState, <span class="comment">// True</span></div>
-<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; IterativeParsingErrorState, <span class="comment">// Null</span></div>
-<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; IterativeParsingErrorState <span class="comment">// Number</span></div>
-<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; },</div>
-<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; <span class="comment">// MemberValue</span></div>
-<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; {</div>
-<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160; IterativeParsingErrorState, <span class="comment">// Left bracket</span></div>
-<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; IterativeParsingErrorState, <span class="comment">// Right bracket</span></div>
-<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160; IterativeParsingErrorState, <span class="comment">// Left curly bracket</span></div>
-<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; IterativeParsingObjectFinishState, <span class="comment">// Right curly bracket</span></div>
-<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; IterativeParsingMemberDelimiterState, <span class="comment">// Comma</span></div>
-<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div>
-<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160; IterativeParsingErrorState, <span class="comment">// String</span></div>
-<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; IterativeParsingErrorState, <span class="comment">// False</span></div>
-<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; IterativeParsingErrorState, <span class="comment">// True</span></div>
-<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; IterativeParsingErrorState, <span class="comment">// Null</span></div>
-<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; IterativeParsingErrorState <span class="comment">// Number</span></div>
-<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; },</div>
-<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; <span class="comment">// ObjectFinish(sink state)</span></div>
-<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; {</div>
-<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div>
-<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div>
-<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; IterativeParsingErrorState</div>
-<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; },</div>
-<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160; <span class="comment">// ArrayInitial</span></div>
-<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; {</div>
-<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; IterativeParsingArrayInitialState, <span class="comment">// Left bracket(push Element state)</span></div>
-<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; IterativeParsingArrayFinishState, <span class="comment">// Right bracket</span></div>
-<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; IterativeParsingObjectInitialState, <span class="comment">// Left curly bracket(push Element state)</span></div>
-<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; IterativeParsingErrorState, <span class="comment">// Right curly bracket</span></div>
-<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; IterativeParsingErrorState, <span class="comment">// Comma</span></div>
-<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div>
-<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; IterativeParsingElementState, <span class="comment">// String</span></div>
-<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; IterativeParsingElementState, <span class="comment">// False</span></div>
-<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; IterativeParsingElementState, <span class="comment">// True</span></div>
-<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; IterativeParsingElementState, <span class="comment">// Null</span></div>
-<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; IterativeParsingElementState <span class="comment">// Number</span></div>
-<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; },</div>
-<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; <span class="comment">// Element</span></div>
-<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; {</div>
-<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; IterativeParsingErrorState, <span class="comment">// Left bracket</span></div>
-<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; IterativeParsingArrayFinishState, <span class="comment">// Right bracket</span></div>
-<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; IterativeParsingErrorState, <span class="comment">// Left curly bracket</span></div>
-<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; IterativeParsingErrorState, <span class="comment">// Right curly bracket</span></div>
-<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; IterativeParsingElementDelimiterState, <span class="comment">// Comma</span></div>
-<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div>
-<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160; IterativeParsingErrorState, <span class="comment">// String</span></div>
-<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; IterativeParsingErrorState, <span class="comment">// False</span></div>
-<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160; IterativeParsingErrorState, <span class="comment">// True</span></div>
-<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; IterativeParsingErrorState, <span class="comment">// Null</span></div>
-<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; IterativeParsingErrorState <span class="comment">// Number</span></div>
-<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; },</div>
-<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; <span class="comment">// ArrayFinish(sink state)</span></div>
-<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; {</div>
-<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div>
-<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div>
-<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; IterativeParsingErrorState</div>
-<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; },</div>
-<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; <span class="comment">// Single Value (sink state)</span></div>
-<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; {</div>
-<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div>
-<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div>
-<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; IterativeParsingErrorState</div>
-<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; },</div>
-<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; <span class="comment">// ElementDelimiter</span></div>
-<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; {</div>
-<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; IterativeParsingArrayInitialState, <span class="comment">// Left bracket(push Element state)</span></div>
-<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; IterativeParsingArrayFinishState, <span class="comment">// Right bracket</span></div>
-<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160; IterativeParsingObjectInitialState, <span class="comment">// Left curly bracket(push Element state)</span></div>
-<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; IterativeParsingErrorState, <span class="comment">// Right curly bracket</span></div>
-<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; IterativeParsingErrorState, <span class="comment">// Comma</span></div>
-<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div>
-<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; IterativeParsingElementState, <span class="comment">// String</span></div>
-<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; IterativeParsingElementState, <span class="comment">// False</span></div>
-<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; IterativeParsingElementState, <span class="comment">// True</span></div>
-<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; IterativeParsingElementState, <span class="comment">// Null</span></div>
-<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160; IterativeParsingElementState <span class="comment">// Number</span></div>
-<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; },</div>
-<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; <span class="comment">// MemberDelimiter</span></div>
-<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; {</div>
-<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; IterativeParsingErrorState, <span class="comment">// Left bracket</span></div>
-<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; IterativeParsingErrorState, <span class="comment">// Right bracket</span></div>
-<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160; IterativeParsingErrorState, <span class="comment">// Left curly bracket</span></div>
-<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; IterativeParsingObjectFinishState, <span class="comment">// Right curly bracket</span></div>
-<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; IterativeParsingErrorState, <span class="comment">// Comma</span></div>
-<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div>
-<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; IterativeParsingMemberKeyState, <span class="comment">// String</span></div>
-<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; IterativeParsingErrorState, <span class="comment">// False</span></div>
-<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160; IterativeParsingErrorState, <span class="comment">// True</span></div>
-<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; IterativeParsingErrorState, <span class="comment">// Null</span></div>
-<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; IterativeParsingErrorState <span class="comment">// Number</span></div>
-<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; },</div>
-<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; <span class="comment">// KeyValueDelimiter</span></div>
-<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; {</div>
-<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160; IterativeParsingArrayInitialState, <span class="comment">// Left bracket(push MemberValue state)</span></div>
-<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; IterativeParsingErrorState, <span class="comment">// Right bracket</span></div>
-<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; IterativeParsingObjectInitialState, <span class="comment">// Left curly bracket(push MemberValue state)</span></div>
-<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; IterativeParsingErrorState, <span class="comment">// Right curly bracket</span></div>
-<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; IterativeParsingErrorState, <span class="comment">// Comma</span></div>
-<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div>
-<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; IterativeParsingMemberValueState, <span class="comment">// String</span></div>
-<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; IterativeParsingMemberValueState, <span class="comment">// False</span></div>
-<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; IterativeParsingMemberValueState, <span class="comment">// True</span></div>
-<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; IterativeParsingMemberValueState, <span class="comment">// Null</span></div>
-<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; IterativeParsingMemberValueState <span class="comment">// Number</span></div>
-<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160; },</div>
-<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; }; <span class="comment">// End of G</span></div>
-<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160;</div>
-<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>IterativeParsingState<span class="keyword">&gt;</span>(G[state][token]);</div>
-<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; }</div>
-<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;</div>
-<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; <span class="comment">// Make an advance in the token stream and state based on the candidate destination state which was returned by Transit().</span></div>
-<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; <span class="comment">// May return a new state on state pop.</span></div>
-<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; RAPIDJSON_FORCEINLINE IterativeParsingState Transit(IterativeParsingState src, Token token, IterativeParsingState dst, InputStream&amp; is, Handler&amp; handler) {</div>
-<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; (void)token;</div>
-<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160;</div>
-<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; <span class="keywordflow">switch</span> (dst) {</div>
-<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; <span class="keywordflow">case</span> IterativeParsingErrorState:</div>
-<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; <span class="keywordflow">return</span> dst;</div>
-<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;</div>
-<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160; <span class="keywordflow">case</span> IterativeParsingObjectInitialState:</div>
-<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160; <span class="keywordflow">case</span> IterativeParsingArrayInitialState:</div>
-<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; {</div>
-<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; <span class="comment">// Push the state(Element or MemeberValue) if we are nested in another array or value of member.</span></div>
-<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160; <span class="comment">// In this way we can get the correct state on ObjectFinish or ArrayFinish by frame pop.</span></div>
-<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160; IterativeParsingState n = src;</div>
-<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; <span class="keywordflow">if</span> (src == IterativeParsingArrayInitialState || src == IterativeParsingElementDelimiterState)</div>
-<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; n = IterativeParsingElementState;</div>
-<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (src == IterativeParsingKeyValueDelimiterState)</div>
-<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; n = IterativeParsingMemberValueState;</div>
-<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160; <span class="comment">// Push current state.</span></div>
-<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; *stack_.template Push&lt;SizeType&gt;(1) = n;</div>
-<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; <span class="comment">// Initialize and push the member/element count.</span></div>
-<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; *stack_.template Push&lt;SizeType&gt;(1) = 0;</div>
-<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; <span class="comment">// Call handler</span></div>
-<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; <span class="keywordtype">bool</span> hr = (dst == IterativeParsingObjectInitialState) ? handler.StartObject() : handler.StartArray();</div>
-<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160; <span class="comment">// On handler short circuits the parsing.</span></div>
-<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160; <span class="keywordflow">if</span> (!hr) {</div>
-<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div>
-<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div>
-<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160; }</div>
-<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160; is.Take();</div>
-<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160; <span class="keywordflow">return</span> dst;</div>
-<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160; }</div>
-<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; }</div>
-<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160;</div>
-<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160; <span class="keywordflow">case</span> IterativeParsingMemberKeyState:</div>
-<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160; ParseString&lt;parseFlags&gt;(is, handler, <span class="keyword">true</span>);</div>
-<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160; <span class="keywordflow">if</span> (HasParseError())</div>
-<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div>
-<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160; <span class="keywordflow">return</span> dst;</div>
-<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;</div>
-<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160; <span class="keywordflow">case</span> IterativeParsingKeyValueDelimiterState:</div>
-<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(token == ColonToken);</div>
-<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; is.Take();</div>
-<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; <span class="keywordflow">return</span> dst;</div>
-<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160;</div>
-<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160; <span class="keywordflow">case</span> IterativeParsingMemberValueState:</div>
-<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160; <span class="comment">// Must be non-compound value. Or it would be ObjectInitial or ArrayInitial state.</span></div>
-<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160; ParseValue&lt;parseFlags&gt;(is, handler);</div>
-<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160; <span class="keywordflow">if</span> (HasParseError()) {</div>
-<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div>
-<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; }</div>
-<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160; <span class="keywordflow">return</span> dst;</div>
-<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160;</div>
-<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; <span class="keywordflow">case</span> IterativeParsingElementState:</div>
-<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160; <span class="comment">// Must be non-compound value. Or it would be ObjectInitial or ArrayInitial state.</span></div>
-<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; ParseValue&lt;parseFlags&gt;(is, handler);</div>
-<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160; <span class="keywordflow">if</span> (HasParseError()) {</div>
-<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div>
-<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160; }</div>
-<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160; <span class="keywordflow">return</span> dst;</div>
-<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;</div>
-<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160; <span class="keywordflow">case</span> IterativeParsingMemberDelimiterState:</div>
-<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; <span class="keywordflow">case</span> IterativeParsingElementDelimiterState:</div>
-<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; is.Take();</div>
-<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; <span class="comment">// Update member/element count.</span></div>
-<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; *stack_.template Top&lt;SizeType&gt;() = *stack_.template Top&lt;SizeType&gt;() + 1;</div>
-<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160; <span class="keywordflow">return</span> dst;</div>
-<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160;</div>
-<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160; <span class="keywordflow">case</span> IterativeParsingObjectFinishState:</div>
-<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160; {</div>
-<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160; <span class="comment">// Transit from delimiter is only allowed when trailing commas are enabled</span></div>
-<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; <span class="keywordflow">if</span> (!(parseFlags &amp; kParseTrailingCommasFlag) &amp;&amp; src == IterativeParsingMemberDelimiterState) {</div>
-<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242">kParseErrorObjectMissName</a>, is.Tell());</div>
-<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div>
-<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; }</div>
-<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; <span class="comment">// Get member count.</span></div>
-<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> c = *stack_.template Pop&lt;SizeType&gt;(1);</div>
-<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; <span class="comment">// If the object is not empty, count the last member.</span></div>
-<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; <span class="keywordflow">if</span> (src == IterativeParsingMemberValueState)</div>
-<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160; ++c;</div>
-<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; <span class="comment">// Restore the state.</span></div>
-<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160; IterativeParsingState n = <span class="keyword">static_cast&lt;</span>IterativeParsingState<span class="keyword">&gt;</span>(*stack_.template Pop&lt;SizeType&gt;(1));</div>
-<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; <span class="comment">// Transit to Finish state if this is the topmost scope.</span></div>
-<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; <span class="keywordflow">if</span> (n == IterativeParsingStartState)</div>
-<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160; n = IterativeParsingFinishState;</div>
-<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; <span class="comment">// Call handler</span></div>
-<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; <span class="keywordtype">bool</span> hr = handler.EndObject(c);</div>
-<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; <span class="comment">// On handler short circuits the parsing.</span></div>
-<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160; <span class="keywordflow">if</span> (!hr) {</div>
-<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div>
-<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div>
-<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; }</div>
-<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160; is.Take();</div>
-<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160; <span class="keywordflow">return</span> n;</div>
-<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160; }</div>
-<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; }</div>
-<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160;</div>
-<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160; <span class="keywordflow">case</span> IterativeParsingArrayFinishState:</div>
-<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160; {</div>
-<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160; <span class="comment">// Transit from delimiter is only allowed when trailing commas are enabled</span></div>
-<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160; <span class="keywordflow">if</span> (!(parseFlags &amp; kParseTrailingCommasFlag) &amp;&amp; src == IterativeParsingElementDelimiterState) {</div>
-<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, is.Tell());</div>
-<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div>
-<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160; }</div>
-<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160; <span class="comment">// Get element count.</span></div>
-<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> c = *stack_.template Pop&lt;SizeType&gt;(1);</div>
-<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160; <span class="comment">// If the array is not empty, count the last element.</span></div>
-<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160; <span class="keywordflow">if</span> (src == IterativeParsingElementState)</div>
-<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160; ++c;</div>
-<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160; <span class="comment">// Restore the state.</span></div>
-<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160; IterativeParsingState n = <span class="keyword">static_cast&lt;</span>IterativeParsingState<span class="keyword">&gt;</span>(*stack_.template Pop&lt;SizeType&gt;(1));</div>
-<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160; <span class="comment">// Transit to Finish state if this is the topmost scope.</span></div>
-<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160; <span class="keywordflow">if</span> (n == IterativeParsingStartState)</div>
-<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160; n = IterativeParsingFinishState;</div>
-<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160; <span class="comment">// Call handler</span></div>
-<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160; <span class="keywordtype">bool</span> hr = handler.EndArray(c);</div>
-<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; <span class="comment">// On handler short circuits the parsing.</span></div>
-<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160; <span class="keywordflow">if</span> (!hr) {</div>
-<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div>
-<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div>
-<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; }</div>
-<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; is.Take();</div>
-<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; <span class="keywordflow">return</span> n;</div>
-<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; }</div>
-<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; }</div>
-<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160;</div>
-<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160; <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160; <span class="comment">// This branch is for IterativeParsingValueState actually.</span></div>
-<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; <span class="comment">// Use `default:` rather than</span></div>
-<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160; <span class="comment">// `case IterativeParsingValueState:` is for code coverage.</span></div>
-<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;</div>
-<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; <span class="comment">// The IterativeParsingStartState is not enumerated in this switch-case.</span></div>
-<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160; <span class="comment">// It is impossible for that case. And it can be caught by following assertion.</span></div>
-<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160;</div>
-<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; <span class="comment">// The IterativeParsingFinishState is not enumerated in this switch-case either.</span></div>
-<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; <span class="comment">// It is a &quot;derivative&quot; state which cannot triggered from Predict() directly.</span></div>
-<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160; <span class="comment">// Therefore it cannot happen here. And it can be caught by following assertion.</span></div>
-<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(dst == IterativeParsingValueState);</div>
-<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;</div>
-<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; <span class="comment">// Must be non-compound value. Or it would be ObjectInitial or ArrayInitial state.</span></div>
-<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; ParseValue&lt;parseFlags&gt;(is, handler);</div>
-<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160; <span class="keywordflow">if</span> (HasParseError()) {</div>
-<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div>
-<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160; }</div>
-<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; <span class="keywordflow">return</span> IterativeParsingFinishState;</div>
-<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160; }</div>
-<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160; }</div>
-<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;</div>
-<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160; <span class="keywordtype">void</span> HandleError(IterativeParsingState src, InputStream&amp; is) {</div>
-<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160; <span class="keywordflow">if</span> (HasParseError()) {</div>
-<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160; <span class="comment">// Error flag has been set.</span></div>
-<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; }</div>
-<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160;</div>
-<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; <span class="keywordflow">switch</span> (src) {</div>
-<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160; <span class="keywordflow">case</span> IterativeParsingStartState: <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286">kParseErrorDocumentEmpty</a>, is.Tell()); <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160; <span class="keywordflow">case</span> IterativeParsingFinishState: <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5">kParseErrorDocumentRootNotSingular</a>, is.Tell()); <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160; <span class="keywordflow">case</span> IterativeParsingObjectInitialState:</div>
-<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160; <span class="keywordflow">case</span> IterativeParsingMemberDelimiterState: <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242">kParseErrorObjectMissName</a>, is.Tell()); <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; <span class="keywordflow">case</span> IterativeParsingMemberKeyState: <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c">kParseErrorObjectMissColon</a>, is.Tell()); <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160; <span class="keywordflow">case</span> IterativeParsingMemberValueState: <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73">kParseErrorObjectMissCommaOrCurlyBracket</a>, is.Tell()); <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; <span class="keywordflow">case</span> IterativeParsingKeyValueDelimiterState:</div>
-<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160; <span class="keywordflow">case</span> IterativeParsingArrayInitialState:</div>
-<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; <span class="keywordflow">case</span> IterativeParsingElementDelimiterState: <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, is.Tell()); <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; <span class="keywordflow">default</span>: <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(src == IterativeParsingElementState); <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93">kParseErrorArrayMissCommaOrSquareBracket</a>, is.Tell()); <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; }</div>
-<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; }</div>
-<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;</div>
-<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> IsIterativeParsingDelimiterState(IterativeParsingState s) {</div>
-<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160; <span class="keywordflow">return</span> s &gt;= IterativeParsingElementDelimiterState;</div>
-<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160; }</div>
-<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160; </div>
-<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> IsIterativeParsingCompleteState(IterativeParsingState s) {</div>
-<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; <span class="keywordflow">return</span> s &lt;= IterativeParsingErrorState;</div>
-<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; }</div>
-<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160; </div>
-<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; ParseResult IterativeParse(InputStream&amp; is, Handler&amp; handler) {</div>
-<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; parseResult_.Clear();</div>
-<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; ClearStackOnExit scope(*<span class="keyword">this</span>);</div>
-<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; IterativeParsingState state = IterativeParsingStartState;</div>
-<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; </div>
-<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div>
-<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);</div>
-<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; <span class="keywordflow">while</span> (is.Peek() != <span class="charliteral">&#39;\0&#39;</span>) {</div>
-<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; Token t = Tokenize(is.Peek());</div>
-<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160; IterativeParsingState n = Predict(state, t);</div>
-<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; IterativeParsingState d = Transit&lt;parseFlags&gt;(state, t, n, is, handler);</div>
-<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; </div>
-<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; <span class="keywordflow">if</span> (d == IterativeParsingErrorState) {</div>
-<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160; HandleError(state, is);</div>
-<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160; }</div>
-<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; </div>
-<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; state = d;</div>
-<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160; </div>
-<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160; <span class="comment">// Do not further consume streams if a root JSON has been parsed.</span></div>
-<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; <span class="keywordflow">if</span> ((parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af84c60868704433b80aa51a62e042bb1">kParseStopWhenDoneFlag</a>) &amp;&amp; state == IterativeParsingFinishState)</div>
-<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; </div>
-<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div>
-<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);</div>
-<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160; }</div>
-<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160; </div>
-<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160; <span class="comment">// Handle the end of file.</span></div>
-<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160; <span class="keywordflow">if</span> (state != IterativeParsingFinishState)</div>
-<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160; HandleError(state, is);</div>
-<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160; </div>
-<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160; <span class="keywordflow">return</span> parseResult_;</div>
-<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160; }</div>
-<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;</div>
-<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultStackCapacity = 256; <span class="comment">//!&lt; Default stack capacity in bytes for storing a single decoded string.</span></div>
-<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160;<span class="comment"></span> internal::Stack&lt;StackAllocator&gt; stack_; <span class="comment">//!&lt; A stack for storing decoded string temporarily during non-destructive parsing.</span></div>
-<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160;<span class="comment"></span> ParseResult parseResult_;</div>
-<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160; IterativeParsingState state_;</div>
-<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160;}; <span class="comment">// class GenericReader</span></div>
-<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160;<span class="comment">//! Reader with UTF8 encoding and default allocator.</span></div>
-<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> GenericReader&lt;UTF8&lt;&gt;, UTF8&lt;&gt; &gt; <a class="code" href="namespacerapidjson.html#ad5310edd1226f5b3ea82dc0d4d3740c6">Reader</a>;</div>
-<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160;</div>
-<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160;</div>
-<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160;</div>
-<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160;</div>
-<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div>
-<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;</div>
-<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
-<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160;</div>
-<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_READER_H_</span></div>
-<div class="ttc" id="namespacerapidjson_html_a81379eb4e94a0386d71d15fda882ebc9a857894ab51cafa62956e9c9f0dafc4d8"><div class="ttname"><a href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a857894ab51cafa62956e9c9f0dafc4d8">rapidjson::kParseNanAndInfFlag</a></div><div class="ttdoc">Allow parsing NaN, Inf, Infinity, -Inf and -Infinity as doubles. </div><div class="ttdef"><b>Definition:</b> reader.h:157</div></div>
+<a href="reader_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_READER_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_READER_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">/*! \file reader.h */</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;allocators.h&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;encodedstream.h&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;internal/meta.h&quot;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;internal/stack.h&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;internal/strtod.h&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#if defined(RAPIDJSON_SIMD) &amp;&amp; defined(_MSC_VER)</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &lt;intrin.h&gt;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#pragma intrinsic(_BitScanForward)</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#ifdef RAPIDJSON_SSE42</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &lt;nmmintrin.h&gt;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_SSE2)</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &lt;emmintrin.h&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_NEON)</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &lt;arm_neon.h&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;RAPIDJSON_DIAG_OFF(4127) <span class="comment">// conditional expression is constant</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;RAPIDJSON_DIAG_OFF(4702) <span class="comment">// unreachable code</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;RAPIDJSON_DIAG_OFF(old-style-cast)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;RAPIDJSON_DIAG_OFF(<span class="keywordflow">switch</span>-<span class="keyword">enum</span>)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"></span><span class="preprocessor">#define RAPIDJSON_NOTHING </span><span class="comment">/* deliberately empty */</span><span class="preprocessor"></span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_PARSE_ERROR_EARLY_RETURN</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor">#define RAPIDJSON_PARSE_ERROR_EARLY_RETURN(value) \</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor"> RAPIDJSON_MULTILINEMACRO_BEGIN \</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor"> if (RAPIDJSON_UNLIKELY(HasParseError())) { return value; } \</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"> RAPIDJSON_MULTILINEMACRO_END</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#define RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID \</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor"> RAPIDJSON_PARSE_ERROR_EARLY_RETURN(RAPIDJSON_NOTHING)</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment">//!@endcond</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment">/*! \def RAPIDJSON_PARSE_ERROR_NORETURN</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> \ingroup RAPIDJSON_ERRORS</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> \brief Macro to indicate a parse error.</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"> \param parseErrorCode \ref rapidjson::ParseErrorCode of the error</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> \param offset position of the error in JSON input (\c size_t)</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> This macros can be used as a customization point for the internal</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> error handling mechanism of RapidJSON.</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"> A common usage model is to throw an exception instead of requiring the</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> caller to explicitly check the \ref rapidjson::GenericReader::Parse&#39;s</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> return value:</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"> \code</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> #define RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode,offset) \</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> throw ParseException(parseErrorCode, #parseErrorCode, offset)</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> #include &lt;stdexcept&gt; // std::runtime_error</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> #include &quot;rapidjson/error/error.h&quot; // rapidjson::ParseResult</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> struct ParseException : std::runtime_error, rapidjson::ParseResult {</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> ParseException(rapidjson::ParseErrorCode code, const char* msg, size_t offset)</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> : std::runtime_error(msg), ParseResult(code, offset) {}</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> };</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> #include &quot;rapidjson/reader.h&quot;</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> \endcode</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> \see RAPIDJSON_PARSE_ERROR, rapidjson::GenericReader::Parse</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_PARSE_ERROR_NORETURN</span></div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461"> 101</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode, offset) \</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor"> RAPIDJSON_MULTILINEMACRO_BEGIN \</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor"> RAPIDJSON_ASSERT(!HasParseError()); </span><span class="comment">/* Error can only be assigned once */</span><span class="preprocessor"> \</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor"> SetParseError(parseErrorCode, offset); \</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="preprocessor"> RAPIDJSON_MULTILINEMACRO_END</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment">/*! \def RAPIDJSON_PARSE_ERROR</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> \ingroup RAPIDJSON_ERRORS</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> \brief (Internal) macro to indicate and handle a parse error.</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> \param parseErrorCode \ref rapidjson::ParseErrorCode of the error</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> \param offset position of the error in JSON input (\c size_t)</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment"> Invokes RAPIDJSON_PARSE_ERROR_NORETURN and stops the parsing.</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"> \see RAPIDJSON_PARSE_ERROR_NORETURN</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> \hideinitializer</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_PARSE_ERROR</span></div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865"> 120</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_PARSE_ERROR(parseErrorCode, offset) \</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor"> RAPIDJSON_MULTILINEMACRO_BEGIN \</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor"> RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode, offset); \</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="preprocessor"> RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; \</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="preprocessor"> RAPIDJSON_MULTILINEMACRO_END</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="error_8h.html">error/error.h</a>&quot;</span> <span class="comment">// ParseErrorCode, ParseResult</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"></span><span class="comment">// ParseFlag</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment">/*! \def RAPIDJSON_PARSE_DEFAULT_FLAGS</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"> \brief User-defined kParseDefaultFlags definition.</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"> User can define this as any \c ParseFlag combinations.</span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_PARSE_DEFAULT_FLAGS</span></div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga77005e892e6601599beaf421b0395c31"> 141</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_PARSE_DEFAULT_FLAGS kParseNoFlags</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment">//! Combination of parseFlags</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"></span><span class="comment">/*! \see Reader::Parse, Document::Parse, Document::ParseInsitu, Document::ParseStream</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9"> 147</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9">ParseFlag</a> {</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af2c7fa21e9e7656e467bd71079ac8fb0"> 148</a></span>&#160; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af2c7fa21e9e7656e467bd71079ac8fb0">kParseNoFlags</a> = 0, <span class="comment">//!&lt; No flags are set.</span></div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea"> 149</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea">kParseInsituFlag</a> = 1, <span class="comment">//!&lt; In-situ(destructive) parsing.</span></div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a3df81f75479da8e052393f92cbec394b"> 150</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a3df81f75479da8e052393f92cbec394b">kParseValidateEncodingFlag</a> = 2, <span class="comment">//!&lt; Validate encoding of JSON strings.</span></div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a7923686c8bdb7614699f1fb1bb615bb2"> 151</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a7923686c8bdb7614699f1fb1bb615bb2">kParseIterativeFlag</a> = 4, <span class="comment">//!&lt; Iterative(constant complexity in terms of function call stack size) parsing.</span></div><div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af84c60868704433b80aa51a62e042bb1"> 152</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af84c60868704433b80aa51a62e042bb1">kParseStopWhenDoneFlag</a> = 8, <span class="comment">//!&lt; After parsing a complete JSON root from stream, stop further processing the rest of stream. When this flag is used, parser will not generate kParseErrorDocumentRootNotSingular error.</span></div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9adf80892cdfa076b2d1a7dd9530e15cb0"> 153</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9adf80892cdfa076b2d1a7dd9530e15cb0">kParseFullPrecisionFlag</a> = 16, <span class="comment">//!&lt; Parse number in full precision (but slower).</span></div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9ab5d719b36aac626135d5d622d0d837c1"> 154</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9ab5d719b36aac626135d5d622d0d837c1">kParseCommentsFlag</a> = 32, <span class="comment">//!&lt; Allow one-line (//) and multi-line (/**/) comments.</span></div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a13981c0b803803f59d7a01aef3dfc987"> 155</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a13981c0b803803f59d7a01aef3dfc987">kParseNumbersAsStringsFlag</a> = 64, <span class="comment">//!&lt; Parse all numbers (ints/doubles) as strings.</span></div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af8b8470221dbc6046a40ff31d758ceec"> 156</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af8b8470221dbc6046a40ff31d758ceec">kParseTrailingCommasFlag</a> = 128, <span class="comment">//!&lt; Allow trailing commas at the end of objects and arrays.</span></div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a857894ab51cafa62956e9c9f0dafc4d8"> 157</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a857894ab51cafa62956e9c9f0dafc4d8">kParseNanAndInfFlag</a> = 256, <span class="comment">//!&lt; Allow parsing NaN, Inf, Infinity, -Inf and -Infinity as doubles.</span></div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a5640cb00db7814b7f22be3683dda9835"> 158</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a5640cb00db7814b7f22be3683dda9835">kParseDefaultFlags</a> = <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga77005e892e6601599beaf421b0395c31">RAPIDJSON_PARSE_DEFAULT_FLAGS</a> <span class="comment">//!&lt; Default parse flags. Can be customized by defining RAPIDJSON_PARSE_DEFAULT_FLAGS</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"></span>};</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"></span><span class="comment">// Handler</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment">/*! \class rapidjson::Handler</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"> \brief Concept for receiving events from GenericReader upon parsing.</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"> The functions return true if no error occurs. If they return false,</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> the event publisher should terminate the process.</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment">\code</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment">concept Handler {</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> typename Ch;</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> bool Null();</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"> bool Bool(bool b);</span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment"> bool Int(int i);</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"> bool Uint(unsigned i);</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment"> bool Int64(int64_t i);</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"> bool Uint64(uint64_t i);</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"> bool Double(double d);</span><span class="comment"></span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"> /// enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length)</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"></span> bool RawNumber(const Ch* str, SizeType length, bool copy);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; bool String(const Ch* str, SizeType length, bool copy);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; bool StartObject();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; bool Key(const Ch* str, SizeType length, bool copy);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; bool EndObject(SizeType memberCount);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; bool StartArray();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; bool EndArray(SizeType elementCount);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;};</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;\endcode</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;*/<span class="comment"></span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"></span><span class="comment">// BaseReaderHandler</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment">//! Default implementation of Handler.</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"></span><span class="comment">/*! This can be used as base class of any reader handler.</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"> \note implements Handler concept</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Encoding = UTF8&lt;&gt;, <span class="keyword">typename</span> Derived = <span class="keywordtype">void</span>&gt;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_base_reader_handler.html">BaseReaderHandler</a> {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> internal::SelectIf&lt;internal::IsSame&lt;Derived, void&gt;, <a class="code" href="structrapidjson_1_1_base_reader_handler.html">BaseReaderHandler</a>, Derived&gt;<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">::Type</a> Override;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">bool</span> Default() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">bool</span> Null() { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span>) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span>) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span>) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordtype">bool</span> Int64(int64_t) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordtype">bool</span> Uint64(uint64_t) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span>) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }<span class="comment"></span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment"> /// enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length)</span></div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_base_reader_handler.html#a0de969fd05528960c2a7de51b2265bf1"> 212</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="structrapidjson_1_1_base_reader_handler.html#a0de969fd05528960c2a7de51b2265bf1">RawNumber</a>(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, <span class="keywordtype">bool</span> copy) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).String(str, len, copy); }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch*, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>, <span class="keywordtype">bool</span>) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordtype">bool</span> StartObject() { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, <span class="keywordtype">bool</span> copy) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).String(str, len, copy); }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordtype">bool</span> StartArray() { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Override&amp;<span class="keyword">&gt;</span>(*this).Default(); }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;};</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment"></span><span class="comment">// StreamLocalCopy</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;template&lt;typename Stream, int = StreamTraits&lt;Stream&gt;::copyOptimization&gt;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="keyword">class </span>StreamLocalCopy;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment">//! Do copy optimization.</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stream&gt;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="keyword">class </span>StreamLocalCopy&lt;Stream, 1&gt; {</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; StreamLocalCopy(Stream&amp; original) : s(original), original_(original) {}</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; ~StreamLocalCopy() { original_ = s; }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; Stream s;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; StreamLocalCopy&amp; operator=(<span class="keyword">const</span> StreamLocalCopy&amp;) <span class="comment">/* = delete */</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; Stream&amp; original_;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;};</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment">//! Keep reference.</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stream&gt;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="keyword">class </span>StreamLocalCopy&lt;Stream, 0&gt; {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; StreamLocalCopy(Stream&amp; original) : s(original) {}</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; Stream&amp; s;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; StreamLocalCopy&amp; operator=(<span class="keyword">const</span> StreamLocalCopy&amp;) <span class="comment">/* = delete */</span>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;};</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"></span><span class="comment">// SkipWhitespace</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment">//! Skip the JSON white spaces in a stream.</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment"></span><span class="comment">/*! \param is A input stream for skipping white spaces.</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> \note This function has SSE2/SSE4.2 specialization.</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a"> 266</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(InputStream&amp; is) {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; internal::StreamLocalCopy&lt;InputStream&gt; copy(is);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; InputStream&amp; s(copy.s);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keyword">typename</span> InputStream::Ch c;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">while</span> ((c = s.Peek()) == <span class="charliteral">&#39; &#39;</span> || c == <span class="charliteral">&#39;\n&#39;</span> || c == <span class="charliteral">&#39;\r&#39;</span> || c == <span class="charliteral">&#39;\t&#39;</span>)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; s.Take();</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;}</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* end) {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">while</span> (p != end &amp;&amp; (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>))</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; ++p;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> p;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;}</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="preprocessor">#ifdef RAPIDJSON_SSE42</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment">//! Skip whitespace with SSE 4.2 pcmpistrm instruction, testing 16 8-byte characters at once.</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment"></span><span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *SkipWhitespace_SIMD(<span class="keyword">const</span> <span class="keywordtype">char</span>* p) {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="comment">// Fast return for single non-whitespace</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span> (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; ++p;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">return</span> p;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="comment">// 16-byte align to the next boundary</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">if</span> (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; ++p;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">return</span> p;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="comment">// The rest of string using SIMD</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> whitespace[16] = <span class="stringliteral">&quot; \n\r\t&quot;</span>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keyword">const</span> __m128i w = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespace[0]));</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">for</span> (;; p += 16) {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keyword">const</span> __m128i s = _mm_load_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> r = _mm_cmpistri(w, s, _SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT | _SIDD_NEGATIVE_POLARITY);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (r != 16) <span class="comment">// some of characters is non-whitespace</span></div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">return</span> p + r;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;}</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *SkipWhitespace_SIMD(<span class="keyword">const</span> <span class="keywordtype">char</span>* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* end) {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="comment">// Fast return for single non-whitespace</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">if</span> (p != end &amp;&amp; (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>))</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; ++p;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordflow">return</span> p;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="comment">// The middle of string using SIMD</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> whitespace[16] = <span class="stringliteral">&quot; \n\r\t&quot;</span>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">const</span> __m128i w = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespace[0]));</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">for</span> (; p &lt;= end - 16; p += 16) {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keyword">const</span> __m128i s = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> r = _mm_cmpistri(w, s, _SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_LEAST_SIGNIFICANT | _SIDD_NEGATIVE_POLARITY);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordflow">if</span> (r != 16) <span class="comment">// some of characters is non-whitespace</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">return</span> p + r;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(p, end);</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;}</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_SSE2)</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment">//! Skip whitespace with SSE2 instructions, testing 16 8-byte characters at once.</span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment"></span><span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *SkipWhitespace_SIMD(<span class="keyword">const</span> <span class="keywordtype">char</span>* p) {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="comment">// Fast return for single non-whitespace</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span> (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>)</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; ++p;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keywordflow">return</span> p;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="comment">// 16-byte align to the next boundary</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keywordflow">if</span> (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>)</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; ++p;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> p;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="comment">// The rest of string</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="preprocessor"> #define C16(c) { c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c }</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> whitespaces[4][16] = { C16(<span class="charliteral">&#39; &#39;</span>), C16(<span class="charliteral">&#39;\n&#39;</span>), C16(<span class="charliteral">&#39;\r&#39;</span>), C16(<span class="charliteral">&#39;\t&#39;</span>) };</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="preprocessor"> #undef C16</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keyword">const</span> __m128i w0 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[0][0]));</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keyword">const</span> __m128i w1 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[1][0]));</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">const</span> __m128i w2 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[2][0]));</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keyword">const</span> __m128i w3 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[3][0]));</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">for</span> (;; p += 16) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keyword">const</span> __m128i s = _mm_load_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; __m128i x = _mm_cmpeq_epi8(s, w0);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w1));</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w2));</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w3));</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> r = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">&gt;</span>(~_mm_movemask_epi8(x));</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">if</span> (r != 0) { <span class="comment">// some of characters may be non-whitespace</span></div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="preprocessor">#ifdef _MSC_VER // Find the index of first non-whitespace</span></div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offset;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; _BitScanForward(&amp;offset, r);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">return</span> p + offset;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">return</span> p + __builtin_ffs(r) - 1;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;}</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *SkipWhitespace_SIMD(<span class="keyword">const</span> <span class="keywordtype">char</span>* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* end) {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="comment">// Fast return for single non-whitespace</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">if</span> (p != end &amp;&amp; (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>))</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; ++p;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">return</span> p;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="comment">// The rest of string</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="preprocessor"> #define C16(c) { c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c }</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> whitespaces[4][16] = { C16(<span class="charliteral">&#39; &#39;</span>), C16(<span class="charliteral">&#39;\n&#39;</span>), C16(<span class="charliteral">&#39;\r&#39;</span>), C16(<span class="charliteral">&#39;\t&#39;</span>) };</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="preprocessor"> #undef C16</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keyword">const</span> __m128i w0 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[0][0]));</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <span class="keyword">const</span> __m128i w1 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[1][0]));</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keyword">const</span> __m128i w2 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[2][0]));</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keyword">const</span> __m128i w3 = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;whitespaces[3][0]));</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">for</span> (; p &lt;= end - 16; p += 16) {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keyword">const</span> __m128i s = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; __m128i x = _mm_cmpeq_epi8(s, w0);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w1));</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w2));</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w3));</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> r = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">&gt;</span>(~_mm_movemask_epi8(x));</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">if</span> (r != 0) { <span class="comment">// some of characters may be non-whitespace</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="preprocessor">#ifdef _MSC_VER // Find the index of first non-whitespace</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offset;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; _BitScanForward(&amp;offset, r);</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> p + offset;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">return</span> p + __builtin_ffs(r) - 1;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(p, end);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;}</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_NEON)</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="comment">//! Skip whitespace with ARM Neon instructions, testing 16 8-byte characters at once.</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="comment"></span><span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *SkipWhitespace_SIMD(<span class="keyword">const</span> <span class="keywordtype">char</span>* p) {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="comment">// Fast return for single non-whitespace</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">if</span> (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; ++p;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keywordflow">return</span> p;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="comment">// 16-byte align to the next boundary</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">if</span> (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>)</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; ++p;</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">return</span> p;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keyword">const</span> uint8x16_t w0 = vmovq_n_u8(<span class="charliteral">&#39; &#39;</span>);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keyword">const</span> uint8x16_t w1 = vmovq_n_u8(<span class="charliteral">&#39;\n&#39;</span>);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keyword">const</span> uint8x16_t w2 = vmovq_n_u8(<span class="charliteral">&#39;\r&#39;</span>);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keyword">const</span> uint8x16_t w3 = vmovq_n_u8(<span class="charliteral">&#39;\t&#39;</span>);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">for</span> (;; p += 16) {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keyword">const</span> uint8x16_t s = vld1q_u8(reinterpret_cast&lt;const uint8_t *&gt;(p));</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; uint8x16_t x = vceqq_u8(s, w0);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; x = vorrq_u8(x, vceqq_u8(s, w1));</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; x = vorrq_u8(x, vceqq_u8(s, w2));</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; x = vorrq_u8(x, vceqq_u8(s, w3));</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; x = vmvnq_u8(x); <span class="comment">// Negate</span></div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; x = vrev64q_u8(x); <span class="comment">// Rev in 64</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; uint64_t low = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 0); <span class="comment">// extract</span></div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; uint64_t high = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 1); <span class="comment">// extract</span></div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span> (low == 0) {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordflow">if</span> (high != 0) {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordtype">int</span> lz =__builtin_clzll(high);;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">return</span> p + 8 + (lz &gt;&gt; 3);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordtype">int</span> lz = __builtin_clzll(low);;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordflow">return</span> p + (lz &gt;&gt; 3);</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;}</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *SkipWhitespace_SIMD(<span class="keyword">const</span> <span class="keywordtype">char</span>* p, <span class="keyword">const</span> <span class="keywordtype">char</span>* end) {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="comment">// Fast return for single non-whitespace</span></div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">if</span> (p != end &amp;&amp; (*p == <span class="charliteral">&#39; &#39;</span> || *p == <span class="charliteral">&#39;\n&#39;</span> || *p == <span class="charliteral">&#39;\r&#39;</span> || *p == <span class="charliteral">&#39;\t&#39;</span>))</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; ++p;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordflow">return</span> p;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keyword">const</span> uint8x16_t w0 = vmovq_n_u8(<span class="charliteral">&#39; &#39;</span>);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keyword">const</span> uint8x16_t w1 = vmovq_n_u8(<span class="charliteral">&#39;\n&#39;</span>);</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keyword">const</span> uint8x16_t w2 = vmovq_n_u8(<span class="charliteral">&#39;\r&#39;</span>);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keyword">const</span> uint8x16_t w3 = vmovq_n_u8(<span class="charliteral">&#39;\t&#39;</span>);</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">for</span> (; p &lt;= end - 16; p += 16) {</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keyword">const</span> uint8x16_t s = vld1q_u8(reinterpret_cast&lt;const uint8_t *&gt;(p));</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; uint8x16_t x = vceqq_u8(s, w0);</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; x = vorrq_u8(x, vceqq_u8(s, w1));</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; x = vorrq_u8(x, vceqq_u8(s, w2));</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; x = vorrq_u8(x, vceqq_u8(s, w3));</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; x = vmvnq_u8(x); <span class="comment">// Negate</span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; x = vrev64q_u8(x); <span class="comment">// Rev in 64</span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; uint64_t low = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 0); <span class="comment">// extract</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; uint64_t high = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 1); <span class="comment">// extract</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordflow">if</span> (low == 0) {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">if</span> (high != 0) {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordtype">int</span> lz = __builtin_clzll(high);</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">return</span> p + 8 + (lz &gt;&gt; 3);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordtype">int</span> lz = __builtin_clzll(low);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">return</span> p + (lz &gt;&gt; 3);</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; }</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(p, end);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;}</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_NEON</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="preprocessor">#ifdef RAPIDJSON_SIMD</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="comment">//! Template function specialization for InsituStringStream</span></div><div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a3caa6f393c9940e6525d5f1c21ed9ea2"> 505</a></span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(<a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">InsituStringStream</a>&amp; is) {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; is.src_ = <span class="keyword">const_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(SkipWhitespace_SIMD(is.src_));</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;}</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="comment">//! Template function specialization for StringStream</span></div><div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a791735c27e073a70d720c2775ddf9568"> 510</a></span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(<a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a>&amp; is) {</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a> = SkipWhitespace_SIMD(is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a>);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;}</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="keyword">template</span>&lt;&gt; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(<a class="code" href="classrapidjson_1_1_encoded_input_stream.html">EncodedInputStream</a>&lt;<a class="code" href="structrapidjson_1_1_u_t_f8.html">UTF8&lt;&gt;</a>, <a class="code" href="structrapidjson_1_1_memory_stream.html">MemoryStream</a>&gt;&amp; is) {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; is.is_.src_ = SkipWhitespace_SIMD(is.is_.src_, is.is_.end_);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;}</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_SIMD</span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="comment"></span><span class="comment">// GenericReader</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="comment">//! SAX-style JSON parser. Use \ref Reader for UTF8 encoding and default allocator.</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;<span class="comment"></span><span class="comment">/*! GenericReader parses JSON text from a stream, and send events synchronously to an</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="comment"> object implementing Handler concept.</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="comment"> It needs to allocate a stack for storing a single decoded string during</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="comment"> non-destructive parsing.</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="comment"> For in-situ parsing, the decoded string is directly written to the source</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;<span class="comment"> text string, no temporary buffer is required.</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="comment"> A GenericReader object can be reused for parsing multiple JSON text.</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="comment"> \tparam SourceEncoding Encoding of the input stream.</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="comment"> \tparam TargetEncoding Encoding of the parse output.</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="comment"> \tparam StackAllocator Allocator type for stack.</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceEncoding, <span class="keyword">typename</span> TargetEncoding, <span class="keyword">typename</span> StackAllocator = CrtAllocator&gt;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader</a> {</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00541"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#a0781d19e8c6bc044d9cc5f5d3dde287e"> 541</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SourceEncoding::Ch <a class="code" href="classrapidjson_1_1_generic_reader.html#a0781d19e8c6bc044d9cc5f5d3dde287e">Ch</a>; <span class="comment">//!&lt; SourceEncoding character type</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="comment"> //! Constructor.</span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="comment"></span><span class="comment"> /*! \param stackAllocator Optional allocator for allocating stack memory. (Only use for non-destructive parsing)</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="comment"> \param stackCapacity stack capacity in bytes for storing a single decoded string. (Only use for non-destructive parsing)</span></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00547"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#a56ab1065ea75167aeacb4802425bf57f"> 547</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_reader.html#a56ab1065ea75167aeacb4802425bf57f">GenericReader</a>(StackAllocator* stackAllocator = 0, <span class="keywordtype">size_t</span> stackCapacity = kDefaultStackCapacity) : stack_(stackAllocator, stackCapacity), parseResult_() {}</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="comment"> //! Parse JSON text.</span></div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam parseFlags Combination of \ref ParseFlag.</span></div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<span class="comment"> \tparam InputStream Type of input stream, implementing Stream concept.</span></div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="comment"> \tparam Handler Type of handler, implementing Handler concept.</span></div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="comment"> \param is Input stream to be parsed.</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;<span class="comment"> \param handler The handler to receive events.</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;<span class="comment"> \return Whether the parsing is successful.</span></div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div><div class="line"><a name="l00558"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b"> 558</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> <a class="code" href="classrapidjson_1_1_generic_reader.html#ac9c540b77de19661f6f45e04b9b0937b">Parse</a>(InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a7923686c8bdb7614699f1fb1bb615bb2">kParseIterativeFlag</a>)</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordflow">return</span> IterativeParse&lt;parseFlags&gt;(is, handler);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; parseResult_.<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f">Clear</a>();</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; ClearStackOnExit scope(*<span class="keyword">this</span>);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(is.Peek() == <span class="charliteral">&#39;\0&#39;</span>)) {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286">kParseErrorDocumentEmpty</a>, is.Tell());</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; }</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; ParseValue&lt;parseFlags&gt;(is, handler);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">if</span> (!(parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af84c60868704433b80aa51a62e042bb1">kParseStopWhenDoneFlag</a>)) {</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(is.Peek() != <span class="charliteral">&#39;\0&#39;</span>)) {</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5">kParseErrorDocumentRootNotSingular</a>, is.Tell());</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; }</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">return</span> parseResult_;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; }</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="comment"> //! Parse JSON text (with \ref kParseDefaultFlags)</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam InputStream Type of input stream, implementing Stream concept</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="comment"> \tparam Handler Type of handler, implementing Handler concept.</span></div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="comment"> \param is Input stream to be parsed.</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="comment"> \param handler The handler to receive events.</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;<span class="comment"> \return Whether the parsing is successful.</span></div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div><div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#a2bac14d193873d661d79ad000473a908"> 599</a></span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> <a class="code" href="classrapidjson_1_1_generic_reader.html#a2bac14d193873d661d79ad000473a908">Parse</a>(InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">return</span> Parse&lt;kParseDefaultFlags&gt;(is, handler);</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="comment"> //! Initialize JSON text token-by-token parsing</span></div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#a90403a2c55dadf82fd2bb9d4c66b3280"> 606</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_reader.html#a90403a2c55dadf82fd2bb9d4c66b3280">IterativeParseInit</a>() {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; parseResult_.Clear();</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; state_ = IterativeParsingStartState;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="comment"></span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="comment"> //! Parse one token from JSON text</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="comment"></span><span class="comment"> /*! \tparam InputStream Type of input stream, implementing Stream concept</span></div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="comment"> \tparam Handler Type of handler, implementing Handler concept.</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="comment"> \param is Input stream to be parsed.</span></div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="comment"> \param handler The handler to receive events.</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;<span class="comment"> \return Whether the parsing is successful.</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div><div class="line"><a name="l00619"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#abac6611bec17167de50fede5cd5194ca"> 619</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_reader.html#abac6611bec17167de50fede5cd5194ca">IterativeParseNext</a>(InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Peek() != <span class="charliteral">&#39;\0&#39;</span>)) {</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; </div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; Token t = Tokenize(is.Peek());</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; IterativeParsingState n = Predict(state_, t);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; IterativeParsingState d = Transit&lt;parseFlags&gt;(state_, t, n, is, handler);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; </div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="comment">// If we&#39;ve finished or hit an error...</span></div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(IsIterativeParsingCompleteState(d))) {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="comment">// Report errors.</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> (d == IterativeParsingErrorState) {</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; HandleError(state_, is);</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; }</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; </div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="comment">// Transition to the finish state.</span></div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(d == IterativeParsingFinishState);</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; state_ = d;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; </div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="comment">// If StopWhenDone is not set...</span></div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">if</span> (!(parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af84c60868704433b80aa51a62e042bb1">kParseStopWhenDoneFlag</a>)) {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="comment">// ... and extra non-whitespace data is found...</span></div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">if</span> (is.Peek() != <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="comment">// ... this is considered an error.</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; HandleError(state_, is);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; }</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; </div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="comment">// Success! We are done!</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; }</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; </div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="comment">// Transition to the new state.</span></div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; state_ = d;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="comment">// If we parsed anything other than a delimiter, we invoked the handler, so we can return true now.</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">if</span> (!IsIterativeParsingDelimiterState(n))</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; }</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; </div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="comment">// We reached the end of file.</span></div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; stack_.Clear();</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">if</span> (state_ != IterativeParsingFinishState) {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; HandleError(state_, is);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; }</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; </div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="comment"></span></div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;<span class="comment"> //! Check if token-by-token parsing JSON text is complete</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<span class="comment"></span><span class="comment"> /*! \return Whether the JSON has been fully decoded.</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00676"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#a60fa11ff60f71b3a466bbd962f35dfdb"> 676</a></span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_reader.html#a60fa11ff60f71b3a466bbd962f35dfdb">IterativeParseComplete</a>() {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">return</span> IsIterativeParsingCompleteState(state_);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; }</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;<span class="comment"> //! Whether a parse error has occured in the last parsing.</span></div><div class="line"><a name="l00681"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#ac42370c3497a0e2b6973110f298e3a59"> 681</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_reader.html#ac42370c3497a0e2b6973110f298e3a59">HasParseError</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_.IsError(); }</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="comment"> //! Get the \ref ParseErrorCode of last parsing.</span></div><div class="line"><a name="l00684"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#a042c621cf745c5ed3a6f5ff9418dd05e"> 684</a></span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> <a class="code" href="classrapidjson_1_1_generic_reader.html#a042c621cf745c5ed3a6f5ff9418dd05e">GetParseErrorCode</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_.Code(); }</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="comment"> //! Get the position of last parsing error in input, 0 otherwise.</span></div><div class="line"><a name="l00687"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_reader.html#ab50019e0a715320f83b7610b83dcef8f"> 687</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_generic_reader.html#ab50019e0a715320f83b7610b83dcef8f">GetErrorOffset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_.Offset(); }</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordtype">void</span> SetParseError(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">ParseErrorCode</a> code, <span class="keywordtype">size_t</span> offset) { parseResult_.Set(code, offset); }</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="comment">// Prohibit copy constructor &amp; assignment operator.</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader</a>&amp;);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader</a>&amp;);</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordtype">void</span> ClearStack() { stack_.Clear(); }</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="comment">// clear stack on any exit from ParseStream, e.g. due to exception</span></div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keyword">struct </span>ClearStackOnExit {</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keyword">explicit</span> ClearStackOnExit(<a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader</a>&amp; r) : r_(r) {}</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; ~ClearStackOnExit() { r_.ClearStack(); }</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader</a>&amp; r_;</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; ClearStackOnExit(<span class="keyword">const</span> ClearStackOnExit&amp;);</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; ClearStackOnExit&amp; operator=(<span class="keyword">const</span> ClearStackOnExit&amp;);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; };</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordtype">void</span> SkipWhitespaceAndComments(InputStream&amp; is) {</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(is);</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9ab5d719b36aac626135d5d622d0d837c1">kParseCommentsFlag</a>) {</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(Consume(is, <span class="charliteral">&#39;/&#39;</span>))) {</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">if</span> (Consume(is, <span class="charliteral">&#39;*&#39;</span>)) {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>) {</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(is.Peek() == <span class="charliteral">&#39;\0&#39;</span>))</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24">kParseErrorUnspecificSyntaxError</a>, is.Tell());</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Consume(is, <span class="charliteral">&#39;*&#39;</span>)) {</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">if</span> (Consume(is, <span class="charliteral">&#39;/&#39;</span>))</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; }</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; is.Take();</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; }</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; }</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(Consume(is, <span class="charliteral">&#39;/&#39;</span>)))</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">while</span> (is.Peek() != <span class="charliteral">&#39;\0&#39;</span> &amp;&amp; is.Take() != <span class="charliteral">&#39;\n&#39;</span>) {}</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a7abf1a337294d984a3f4d18b5843fb24">kParseErrorUnspecificSyntaxError</a>, is.Tell());</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <a class="code" href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">SkipWhitespace</a>(is);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; }</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; }</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; }</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="comment">// Parse object: { string : value, ... }</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <span class="keywordtype">void</span> ParseObject(InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(is.Peek() == <span class="charliteral">&#39;{&#39;</span>);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; is.Take(); <span class="comment">// Skip &#39;{&#39;</span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.StartObject()))</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">if</span> (Consume(is, <span class="charliteral">&#39;}&#39;</span>)) {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.EndObject(0))) <span class="comment">// empty object</span></div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; }</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount = 0;;) {</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(is.Peek() != <span class="charliteral">&#39;&quot;&#39;</span>))</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242">kParseErrorObjectMissName</a>, is.Tell());</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; ParseString&lt;parseFlags&gt;(is, handler, <span class="keyword">true</span>);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!Consume(is, <span class="charliteral">&#39;:&#39;</span>)))</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c">kParseErrorObjectMissColon</a>, is.Tell());</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; ParseValue&lt;parseFlags&gt;(is, handler);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; ++memberCount;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">switch</span> (is.Peek()) {</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;,&#39;</span>:</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; is.Take();</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;}&#39;</span>:</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; is.Take();</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.EndObject(memberCount)))</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73">kParseErrorObjectMissCommaOrCurlyBracket</a>, is.Tell()); <span class="keywordflow">break</span>; <span class="comment">// This useless break is only for making warning and coverage happy</span></div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; }</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af8b8470221dbc6046a40ff31d758ceec">kParseTrailingCommasFlag</a>) {</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">if</span> (is.Peek() == <span class="charliteral">&#39;}&#39;</span>) {</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.EndObject(memberCount)))</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; is.Take();</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; }</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; }</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="comment">// Parse array: [ value, ... ]</span></div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keywordtype">void</span> ParseArray(InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(is.Peek() == <span class="charliteral">&#39;[&#39;</span>);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; is.Take(); <span class="comment">// Skip &#39;[&#39;</span></div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.StartArray()))</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">if</span> (Consume(is, <span class="charliteral">&#39;]&#39;</span>)) {</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.EndArray(0))) <span class="comment">// empty array</span></div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount = 0;;) {</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; ParseValue&lt;parseFlags&gt;(is, handler);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; ++elementCount;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">if</span> (Consume(is, <span class="charliteral">&#39;,&#39;</span>)) {</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; }</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Consume(is, <span class="charliteral">&#39;]&#39;</span>)) {</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.EndArray(elementCount)))</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; }</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93">kParseErrorArrayMissCommaOrSquareBracket</a>, is.Tell());</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af8b8470221dbc6046a40ff31d758ceec">kParseTrailingCommasFlag</a>) {</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">if</span> (is.Peek() == <span class="charliteral">&#39;]&#39;</span>) {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.EndArray(elementCount)))</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; is.Take();</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; }</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; }</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; }</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; }</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordtype">void</span> ParseNull(InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(is.Peek() == <span class="charliteral">&#39;n&#39;</span>);</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; is.Take();</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(Consume(is, <span class="charliteral">&#39;u&#39;</span>) &amp;&amp; Consume(is, <span class="charliteral">&#39;l&#39;</span>) &amp;&amp; Consume(is, <span class="charliteral">&#39;l&#39;</span>))) {</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.Null()))</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; }</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, is.Tell());</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; }</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordtype">void</span> ParseTrue(InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(is.Peek() == <span class="charliteral">&#39;t&#39;</span>);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; is.Take();</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(Consume(is, <span class="charliteral">&#39;r&#39;</span>) &amp;&amp; Consume(is, <span class="charliteral">&#39;u&#39;</span>) &amp;&amp; Consume(is, <span class="charliteral">&#39;e&#39;</span>))) {</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.Bool(<span class="keyword">true</span>)))</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; }</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, is.Tell());</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; }</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160;</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="keywordtype">void</span> ParseFalse(InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(is.Peek() == <span class="charliteral">&#39;f&#39;</span>);</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; is.Take();</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(Consume(is, <span class="charliteral">&#39;a&#39;</span>) &amp;&amp; Consume(is, <span class="charliteral">&#39;l&#39;</span>) &amp;&amp; Consume(is, <span class="charliteral">&#39;s&#39;</span>) &amp;&amp; Consume(is, <span class="charliteral">&#39;e&#39;</span>))) {</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!handler.Bool(<span class="keyword">false</span>)))</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; }</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, is.Tell());</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; }</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160;</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; RAPIDJSON_FORCEINLINE <span class="keyword">static</span> <span class="keywordtype">bool</span> Consume(InputStream&amp; is, <span class="keyword">typename</span> InputStream::Ch expect) {</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Peek() == expect)) {</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; is.Take();</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; }</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; }</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160;</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="comment">// Helper function to parse four hexidecimal digits in \uXXXX in ParseString().</span></div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="keywordtype">unsigned</span> ParseHex4(InputStream&amp; is, <span class="keywordtype">size_t</span> escapeOffset) {</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="keywordtype">unsigned</span> codepoint = 0;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 4; i++) {</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; Ch c = is.Peek();</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; codepoint &lt;&lt;= 4;</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; codepoint += <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(c);</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keywordflow">if</span> (c &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; c &lt;= <span class="charliteral">&#39;9&#39;</span>)</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; codepoint -= <span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &gt;= <span class="charliteral">&#39;A&#39;</span> &amp;&amp; c &lt;= <span class="charliteral">&#39;F&#39;</span>)</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; codepoint -= <span class="charliteral">&#39;A&#39;</span> - 10;</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (c &gt;= <span class="charliteral">&#39;a&#39;</span> &amp;&amp; c &lt;= <span class="charliteral">&#39;f&#39;</span>)</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; codepoint -= <span class="charliteral">&#39;a&#39;</span> - 10;</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a23c38bf88b8448555c0eb41e1735bd92">kParseErrorStringUnicodeEscapeInvalidHex</a>, escapeOffset);</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(0);</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; }</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; is.Take();</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; }</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">return</span> codepoint;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; }</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> CharType&gt;</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <span class="keyword">class </span>StackStream {</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keyword">typedef</span> CharType Ch;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; StackStream(internal::Stack&lt;StackAllocator&gt;&amp; stack) : stack_(stack), length_(0) {}</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> Put(Ch c) {</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; *stack_.template Push&lt;Ch&gt;() = c;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; ++length_;</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; }</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span>* Push(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count) {</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; length_ += count;</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <span class="keywordflow">return</span> stack_.template Push&lt;Ch&gt;(count);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; }</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160;</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keywordtype">size_t</span> Length()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> length_; }</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; Ch* Pop() {</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">return</span> stack_.template Pop&lt;Ch&gt;(length_);</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; }</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; StackStream(<span class="keyword">const</span> StackStream&amp;);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; StackStream&amp; operator=(<span class="keyword">const</span> StackStream&amp;);</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; internal::Stack&lt;StackAllocator&gt;&amp; stack_;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length_;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; };</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="comment">// Parse string and generate String event. Different code paths for kParseInsituFlag.</span></div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordtype">void</span> ParseString(InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler, <span class="keywordtype">bool</span> isKey = <span class="keyword">false</span>) {</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; internal::StreamLocalCopy&lt;InputStream&gt; copy(is);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; InputStream&amp; s(copy.s);</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(s.Peek() == <span class="charliteral">&#39;\&quot;&#39;</span>);</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; s.Take(); <span class="comment">// Skip &#39;\&quot;&#39;</span></div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordtype">bool</span> success = <span class="keyword">false</span>;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea">kParseInsituFlag</a>) {</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keyword">typename</span> InputStream::Ch *head = s.PutBegin();</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; ParseStringToStream&lt;parseFlags, SourceEncoding, SourceEncoding&gt;(s, s);</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordtype">size_t</span> length = s.PutEnd(head) - 1;</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(length &lt;= 0xFFFFFFFF);</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; <span class="keyword">const</span> <span class="keyword">typename</span> TargetEncoding::Ch* <span class="keyword">const</span> str = <span class="keyword">reinterpret_cast&lt;</span>typename TargetEncoding::Ch*<span class="keyword">&gt;</span>(head);</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; success = (isKey ? handler.Key(str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(length), <span class="keyword">false</span>) : handler.String(str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(length), <span class="keyword">false</span>));</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; }</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; StackStream&lt;typename TargetEncoding::Ch&gt; stackStream(stack_);</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; ParseStringToStream&lt;parseFlags, SourceEncoding, TargetEncoding&gt;(s, stackStream);</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(stackStream.Length()) - 1;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keyword">const</span> <span class="keyword">typename</span> TargetEncoding::Ch* <span class="keyword">const</span> str = stackStream.Pop();</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; success = (isKey ? handler.Key(str, length, <span class="keyword">true</span>) : handler.String(str, length, <span class="keyword">true</span>));</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; }</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!success))</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, s.Tell());</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; }</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="comment">// Parse string to an output is</span></div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="comment">// This function handles the prefix/suffix double quotes, escaping, and optional encoding validation.</span></div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> SEncoding, <span class="keyword">typename</span> TEncoding, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> ParseStringToStream(InputStream&amp; is, OutputStream&amp; os) {<span class="comment"></span></div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;<span class="comment"></span><span class="preprocessor">#define Z16 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</span></div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> escape[256] = {</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; Z16, Z16, 0, 0,<span class="charliteral">&#39;\&quot;&#39;</span>, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<span class="charliteral">&#39;/&#39;</span>,</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; Z16, Z16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<span class="charliteral">&#39;\\&#39;</span>, 0, 0, 0,</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; 0, 0,<span class="charliteral">&#39;\b&#39;</span>, 0, 0, 0,<span class="charliteral">&#39;\f&#39;</span>, 0, 0, 0, 0, 0, 0, 0,<span class="charliteral">&#39;\n&#39;</span>, 0,</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; 0, 0,<span class="charliteral">&#39;\r&#39;</span>, 0,<span class="charliteral">&#39;\t&#39;</span>, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; };</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;<span class="preprocessor">#undef Z16</span></div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;<span class="comment">//!@endcond</span></div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <span class="keywordflow">for</span> (;;) {</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="comment">// Scan and copy string before &quot;\\\&quot;&quot; or &lt; 0x20. This is an optional optimzation.</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <span class="keywordflow">if</span> (!(parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a3df81f75479da8e052393f92cbec394b">kParseValidateEncodingFlag</a>))</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; ScanCopyUnescapedString(is, os);</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; Ch c = is.Peek();</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(c == <span class="charliteral">&#39;\\&#39;</span>)) { <span class="comment">// Escape</span></div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordtype">size_t</span> escapeOffset = is.Tell(); <span class="comment">// For invalid escaping, report the inital &#39;\\&#39; as error offset</span></div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; is.Take();</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; Ch e = is.Peek();</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; <span class="keywordflow">if</span> ((<span class="keyword">sizeof</span>(Ch) == 1 || <span class="keywordtype">unsigned</span>(e) &lt; 256) &amp;&amp; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(escape[static_cast&lt;unsigned char&gt;(e)])) {</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; is.Take();</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; os.Put(static_cast&lt;typename TEncoding::Ch&gt;(escape[static_cast&lt;unsigned char&gt;(e)]));</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; }</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(e == <span class="charliteral">&#39;u&#39;</span>)) { <span class="comment">// Unicode</span></div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; is.Take();</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keywordtype">unsigned</span> codepoint = ParseHex4(is, escapeOffset);</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(codepoint &gt;= 0xD800 &amp;&amp; codepoint &lt;= 0xDBFF)) {</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="comment">// Handle UTF-16 surrogate pair</span></div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!Consume(is, <span class="charliteral">&#39;\\&#39;</span>) || !Consume(is, <span class="charliteral">&#39;u&#39;</span>)))</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386">kParseErrorStringUnicodeSurrogateInvalid</a>, escapeOffset);</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keywordtype">unsigned</span> codepoint2 = ParseHex4(is, escapeOffset);</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(codepoint2 &lt; 0xDC00 || codepoint2 &gt; 0xDFFF))</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386">kParseErrorStringUnicodeSurrogateInvalid</a>, escapeOffset);</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; codepoint = (((codepoint - 0xD800) &lt;&lt; 10) | (codepoint2 - 0xDC00)) + 0x10000;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; }</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; TEncoding::Encode(os, codepoint);</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; }</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a8dd0af5e6103a6503c61c38cb2b0bab9">kParseErrorStringEscapeInvalid</a>, escapeOffset);</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; }</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(c == <span class="charliteral">&#39;&quot;&#39;</span>)) { <span class="comment">// Closing double quote</span></div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; is.Take();</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; os.Put(<span class="charliteral">&#39;\0&#39;</span>); <span class="comment">// null-terminate the string</span></div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; }</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(static_cast&lt;unsigned&gt;(c) &lt; 0x20)) { <span class="comment">// RFC 4627: unescaped = %x20-21 / %x23-5B / %x5D-10FFFF</span></div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">if</span> (c == <span class="charliteral">&#39;\0&#39;</span>)</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60af7daa91caa53abb881ea231a874a4f40">kParseErrorStringMissQuotationMark</a>, is.Tell());</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f">kParseErrorStringInvalidEncoding</a>, is.Tell());</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; }</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keywordtype">size_t</span> offset = is.Tell();</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>((parseFlags &amp; kParseValidateEncodingFlag ?</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; !<a class="code" href="structrapidjson_1_1_transcoder.html">Transcoder&lt;SEncoding, TEncoding&gt;::Validate</a>(is, os) :</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; !<a class="code" href="structrapidjson_1_1_transcoder.html">Transcoder&lt;SEncoding, TEncoding&gt;::Transcode</a>(is, os))))</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f">kParseErrorStringInvalidEncoding</a>, offset);</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; }</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; }</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; }</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> OutputStream&gt;</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> ScanCopyUnescapedString(InputStream&amp;, OutputStream&amp;) {</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="comment">// Do nothing for generic version</span></div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; }</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160;<span class="preprocessor">#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42)</span></div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="comment">// StringStream -&gt; StackStream&lt;char&gt;</span></div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> ScanCopyUnescapedString(<a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a>&amp; is, StackStream&lt;char&gt;&amp; os) {</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* p = is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a>;</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <span class="comment">// Scan one by one until alignment (unaligned load may cross page boundary and cause crash)</span></div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\&quot;&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\\&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(static_cast&lt;unsigned&gt;(*p) &lt; 0x20)) {</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a> = p;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; }</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; os.Put(*p++);</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="comment">// The rest of string using SIMD</span></div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> dquote[16] = { <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span> };</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> bslash[16] = { <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span> };</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> space[16] = { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F };</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="keyword">const</span> __m128i dq = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;dquote[0]));</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="keyword">const</span> __m128i bs = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;bslash[0]));</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keyword">const</span> __m128i sp = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;space[0]));</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keywordflow">for</span> (;; p += 16) {</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keyword">const</span> __m128i s = _mm_load_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keyword">const</span> __m128i t1 = _mm_cmpeq_epi8(s, dq);</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keyword">const</span> __m128i t2 = _mm_cmpeq_epi8(s, bs);</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; <span class="keyword">const</span> __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); <span class="comment">// s &lt; 0x20 &lt;=&gt; max(s, 0x1F) == 0x1F</span></div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <span class="keyword">const</span> __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3);</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> r = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">&gt;</span>(_mm_movemask_epi8(x));</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(r != 0)) { <span class="comment">// some of characters is escaped</span></div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;<span class="preprocessor"> #ifdef _MSC_VER // Find the index of first escaped</span></div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offset;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; _BitScanForward(&amp;offset, r);</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; length = offset;</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;<span class="preprocessor"> #else</span></div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; length = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(__builtin_ffs(r) - 1);</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;<span class="preprocessor"> #endif</span></div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">if</span> (length != 0) {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordtype">char</span>* q = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(os.Push(length));</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; length; i++)</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; q[i] = p[i];</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; p += length;</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; }</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; }</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; _mm_storeu_si128(reinterpret_cast&lt;__m128i *&gt;(os.Push(16)), s);</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; }</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a> = p;</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; }</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160;</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; <span class="comment">// InsituStringStream -&gt; InsituStringStream</span></div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> ScanCopyUnescapedString(<a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">InsituStringStream</a>&amp; is, <a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">InsituStringStream</a>&amp; os) {</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(&amp;is == &amp;os);</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; (void)os;</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <span class="keywordflow">if</span> (is.src_ == is.dst_) {</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; SkipUnescapedString(is);</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; }</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <span class="keywordtype">char</span>* p = is.src_;</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordtype">char</span> *q = is.dst_;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="comment">// Scan one by one until alignment (unaligned load may cross page boundary and cause crash)</span></div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\&quot;&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\\&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(static_cast&lt;unsigned&gt;(*p) &lt; 0x20)) {</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; is.src_ = p;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; is.dst_ = q;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; }</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; *q++ = *p++;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="comment">// The rest of string using SIMD</span></div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> dquote[16] = { <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span> };</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> bslash[16] = { <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span> };</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> space[16] = { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F };</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <span class="keyword">const</span> __m128i dq = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;dquote[0]));</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="keyword">const</span> __m128i bs = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;bslash[0]));</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keyword">const</span> __m128i sp = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;space[0]));</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keywordflow">for</span> (;; p += 16, q += 16) {</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <span class="keyword">const</span> __m128i s = _mm_load_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keyword">const</span> __m128i t1 = _mm_cmpeq_epi8(s, dq);</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <span class="keyword">const</span> __m128i t2 = _mm_cmpeq_epi8(s, bs);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <span class="keyword">const</span> __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); <span class="comment">// s &lt; 0x20 &lt;=&gt; max(s, 0x1F) == 0x1F</span></div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <span class="keyword">const</span> __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3);</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> r = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">&gt;</span>(_mm_movemask_epi8(x));</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(r != 0)) { <span class="comment">// some of characters is escaped</span></div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <span class="keywordtype">size_t</span> length;</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160;<span class="preprocessor">#ifdef _MSC_VER // Find the index of first escaped</span></div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offset;</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; _BitScanForward(&amp;offset, r);</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; length = offset;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; length = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(__builtin_ffs(r) - 1);</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>* pend = p + length; p != pend; )</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; *q++ = *p++;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; }</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; _mm_storeu_si128(reinterpret_cast&lt;__m128i *&gt;(q), s);</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; }</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; is.src_ = p;</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; is.dst_ = q;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; }</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160;</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="comment">// When read/write pointers are the same for insitu stream, just skip unescaped characters</span></div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> SkipUnescapedString(<a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">InsituStringStream</a>&amp; is) {</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(is.src_ == is.dst_);</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="keywordtype">char</span>* p = is.src_;</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160;</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="comment">// Scan one by one until alignment (unaligned load may cross page boundary and cause crash)</span></div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keywordflow">for</span> (; p != nextAligned; p++)</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\&quot;&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\\&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(static_cast&lt;unsigned&gt;(*p) &lt; 0x20)) {</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; is.src_ = is.dst_ = p;</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; }</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="comment">// The rest of string using SIMD</span></div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> dquote[16] = { <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span> };</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> bslash[16] = { <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span> };</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> space[16] = { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F };</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keyword">const</span> __m128i dq = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;dquote[0]));</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keyword">const</span> __m128i bs = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;bslash[0]));</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keyword">const</span> __m128i sp = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;space[0]));</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <span class="keywordflow">for</span> (;; p += 16) {</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="keyword">const</span> __m128i s = _mm_load_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="keyword">const</span> __m128i t1 = _mm_cmpeq_epi8(s, dq);</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="keyword">const</span> __m128i t2 = _mm_cmpeq_epi8(s, bs);</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <span class="keyword">const</span> __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); <span class="comment">// s &lt; 0x20 &lt;=&gt; max(s, 0x1F) == 0x1F</span></div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keyword">const</span> __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3);</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> r = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">&gt;</span>(_mm_movemask_epi8(x));</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(r != 0)) { <span class="comment">// some of characters is escaped</span></div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; <span class="keywordtype">size_t</span> length;</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160;<span class="preprocessor">#ifdef _MSC_VER // Find the index of first escaped</span></div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offset;</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; _BitScanForward(&amp;offset, r);</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; length = offset;</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; length = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(__builtin_ffs(r) - 1);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; p += length;</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; }</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; }</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; is.src_ = is.dst_ = p;</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; }</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_NEON)</span></div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="comment">// StringStream -&gt; StackStream&lt;char&gt;</span></div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> ScanCopyUnescapedString(<a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a>&amp; is, StackStream&lt;char&gt;&amp; os) {</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* p = is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a>;</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <span class="comment">// Scan one by one until alignment (unaligned load may cross page boundary and cause crash)</span></div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\&quot;&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\\&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(static_cast&lt;unsigned&gt;(*p) &lt; 0x20)) {</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a> = p;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; }</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; os.Put(*p++);</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <span class="comment">// The rest of string using SIMD</span></div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <span class="keyword">const</span> uint8x16_t s0 = vmovq_n_u8(<span class="charliteral">&#39;&quot;&#39;</span>);</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; <span class="keyword">const</span> uint8x16_t s1 = vmovq_n_u8(<span class="charliteral">&#39;\\&#39;</span>);</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; <span class="keyword">const</span> uint8x16_t s2 = vmovq_n_u8(<span class="charliteral">&#39;\b&#39;</span>);</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keyword">const</span> uint8x16_t s3 = vmovq_n_u8(32);</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <span class="keywordflow">for</span> (;; p += 16) {</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <span class="keyword">const</span> uint8x16_t s = vld1q_u8(reinterpret_cast&lt;const uint8_t *&gt;(p));</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; uint8x16_t x = vceqq_u8(s, s0);</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s1));</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s2));</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; x = vorrq_u8(x, vcltq_u8(s, s3));</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; x = vrev64q_u8(x); <span class="comment">// Rev in 64</span></div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; uint64_t low = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 0); <span class="comment">// extract</span></div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; uint64_t high = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 1); <span class="comment">// extract</span></div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length = 0;</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; <span class="keywordtype">bool</span> escaped = <span class="keyword">false</span>;</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; <span class="keywordflow">if</span> (low == 0) {</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <span class="keywordflow">if</span> (high != 0) {</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <span class="keywordtype">unsigned</span> lz = (unsigned)__builtin_clzll(high);;</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; length = 8 + (lz &gt;&gt; 3);</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; escaped = <span class="keyword">true</span>;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; }</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; <span class="keywordtype">unsigned</span> lz = (unsigned)__builtin_clzll(low);;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; length = lz &gt;&gt; 3;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; escaped = <span class="keyword">true</span>;</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; }</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(escaped)) { <span class="comment">// some of characters is escaped</span></div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="keywordflow">if</span> (length != 0) {</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <span class="keywordtype">char</span>* q = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(os.Push(length));</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; length; i++)</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; q[i] = p[i];</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; p += length;</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160; }</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; }</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; vst1q_u8(reinterpret_cast&lt;uint8_t *&gt;(os.Push(16)), s);</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; }</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160;</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a> = p;</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; }</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160;</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; <span class="comment">// InsituStringStream -&gt; InsituStringStream</span></div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> ScanCopyUnescapedString(<a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">InsituStringStream</a>&amp; is, <a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">InsituStringStream</a>&amp; os) {</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(&amp;is == &amp;os);</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; (void)os;</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="keywordflow">if</span> (is.src_ == is.dst_) {</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; SkipUnescapedString(is);</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; }</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <span class="keywordtype">char</span>* p = is.src_;</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordtype">char</span> *q = is.dst_;</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <span class="comment">// Scan one by one until alignment (unaligned load may cross page boundary and cause crash)</span></div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\&quot;&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\\&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(static_cast&lt;unsigned&gt;(*p) &lt; 0x20)) {</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; is.src_ = p;</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; is.dst_ = q;</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; }</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; *q++ = *p++;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; <span class="comment">// The rest of string using SIMD</span></div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; <span class="keyword">const</span> uint8x16_t s0 = vmovq_n_u8(<span class="charliteral">&#39;&quot;&#39;</span>);</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; <span class="keyword">const</span> uint8x16_t s1 = vmovq_n_u8(<span class="charliteral">&#39;\\&#39;</span>);</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; <span class="keyword">const</span> uint8x16_t s2 = vmovq_n_u8(<span class="charliteral">&#39;\b&#39;</span>);</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; <span class="keyword">const</span> uint8x16_t s3 = vmovq_n_u8(32);</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; <span class="keywordflow">for</span> (;; p += 16, q += 16) {</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; <span class="keyword">const</span> uint8x16_t s = vld1q_u8(reinterpret_cast&lt;uint8_t *&gt;(p));</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; uint8x16_t x = vceqq_u8(s, s0);</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s1));</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s2));</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; x = vorrq_u8(x, vcltq_u8(s, s3));</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; x = vrev64q_u8(x); <span class="comment">// Rev in 64</span></div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160; uint64_t low = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 0); <span class="comment">// extract</span></div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160; uint64_t high = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 1); <span class="comment">// extract</span></div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length = 0;</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <span class="keywordtype">bool</span> escaped = <span class="keyword">false</span>;</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; <span class="keywordflow">if</span> (low == 0) {</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; <span class="keywordflow">if</span> (high != 0) {</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; <span class="keywordtype">unsigned</span> lz = (unsigned)__builtin_clzll(high);</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; length = 8 + (lz &gt;&gt; 3);</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; escaped = <span class="keyword">true</span>;</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; }</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; <span class="keywordtype">unsigned</span> lz = (unsigned)__builtin_clzll(low);</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160; length = lz &gt;&gt; 3;</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; escaped = <span class="keyword">true</span>;</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; }</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(escaped)) { <span class="comment">// some of characters is escaped</span></div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>* pend = p + length; p != pend; ) {</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; *q++ = *p++;</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; }</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160; }</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; vst1q_u8(reinterpret_cast&lt;uint8_t *&gt;(q), s);</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; }</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; is.src_ = p;</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; is.dst_ = q;</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; }</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160;</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; <span class="comment">// When read/write pointers are the same for insitu stream, just skip unescaped characters</span></div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keyword">static</span> RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> SkipUnescapedString(<a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">InsituStringStream</a>&amp; is) {</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(is.src_ == is.dst_);</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160; <span class="keywordtype">char</span>* p = is.src_;</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160;</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; <span class="comment">// Scan one by one until alignment (unaligned load may cross page boundary and cause crash)</span></div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; <span class="keywordflow">for</span> (; p != nextAligned; p++)</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\&quot;&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(*p == <span class="charliteral">&#39;\\&#39;</span>) || <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(static_cast&lt;unsigned&gt;(*p) &lt; 0x20)) {</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; is.src_ = is.dst_ = p;</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; }</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160;</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; <span class="comment">// The rest of string using SIMD</span></div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; <span class="keyword">const</span> uint8x16_t s0 = vmovq_n_u8(<span class="charliteral">&#39;&quot;&#39;</span>);</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <span class="keyword">const</span> uint8x16_t s1 = vmovq_n_u8(<span class="charliteral">&#39;\\&#39;</span>);</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; <span class="keyword">const</span> uint8x16_t s2 = vmovq_n_u8(<span class="charliteral">&#39;\b&#39;</span>);</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160; <span class="keyword">const</span> uint8x16_t s3 = vmovq_n_u8(32);</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160;</div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; <span class="keywordflow">for</span> (;; p += 16) {</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; <span class="keyword">const</span> uint8x16_t s = vld1q_u8(reinterpret_cast&lt;uint8_t *&gt;(p));</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; uint8x16_t x = vceqq_u8(s, s0);</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s1));</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s2));</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; x = vorrq_u8(x, vcltq_u8(s, s3));</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; x = vrev64q_u8(x); <span class="comment">// Rev in 64</span></div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; uint64_t low = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 0); <span class="comment">// extract</span></div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; uint64_t high = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 1); <span class="comment">// extract</span></div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160;</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160; <span class="keywordflow">if</span> (low == 0) {</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; <span class="keywordflow">if</span> (high != 0) {</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; <span class="keywordtype">int</span> lz = __builtin_clzll(high);</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; p += 8 + (lz &gt;&gt; 3);</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; }</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; <span class="keywordtype">int</span> lz = __builtin_clzll(low);</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; p += lz &gt;&gt; 3;</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; }</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; }</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160;</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; is.src_ = is.dst_ = p;</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; }</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_NEON</span></div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream, <span class="keywordtype">bool</span> backup, <span class="keywordtype">bool</span> pushOnTake&gt;</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; <span class="keyword">class </span>NumberStream;</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160;</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; <span class="keyword">class </span>NumberStream&lt;InputStream, false, false&gt; {</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> InputStream::Ch Ch;</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160;</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; NumberStream(<a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader</a>&amp; reader, InputStream&amp; s) : is(s) { (void)reader; }</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; RAPIDJSON_FORCEINLINE Ch Peek()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> is.Peek(); }</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; RAPIDJSON_FORCEINLINE Ch TakePush() { <span class="keywordflow">return</span> is.Take(); }</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; RAPIDJSON_FORCEINLINE Ch Take() { <span class="keywordflow">return</span> is.Take(); }</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> Push(<span class="keywordtype">char</span>) {}</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; <span class="keywordtype">size_t</span> Tell() { <span class="keywordflow">return</span> is.Tell(); }</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; <span class="keywordtype">size_t</span> Length() { <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* Pop() { <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160; NumberStream&amp; operator=(<span class="keyword">const</span> NumberStream&amp;);</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; InputStream&amp; is;</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; };</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; <span class="keyword">class </span>NumberStream&lt;InputStream, true, false&gt; : <span class="keyword">public</span> NumberStream&lt;InputStream, false, false&gt; {</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="keyword">typedef</span> NumberStream&lt;InputStream, false, false&gt; Base;</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; NumberStream(<a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader</a>&amp; reader, InputStream&amp; is) : Base(reader, is), stackStream(reader.stack_) {}</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160;</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; RAPIDJSON_FORCEINLINE Ch TakePush() {</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; stackStream.Put(static_cast&lt;char&gt;(Base::is.Peek()));</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160; <span class="keywordflow">return</span> Base::is.Take();</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; }</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160;</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> Push(<span class="keywordtype">char</span> c) {</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; stackStream.Put(c);</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; }</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160;</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <span class="keywordtype">size_t</span> Length() { <span class="keywordflow">return</span> stackStream.Length(); }</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* Pop() {</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; stackStream.Put(<span class="charliteral">&#39;\0&#39;</span>);</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <span class="keywordflow">return</span> stackStream.Pop();</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; }</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; StackStream&lt;char&gt; stackStream;</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; };</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; <span class="keyword">class </span>NumberStream&lt;InputStream, true, true&gt; : <span class="keyword">public</span> NumberStream&lt;InputStream, true, false&gt; {</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="keyword">typedef</span> NumberStream&lt;InputStream, true, false&gt; Base;</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; NumberStream(<a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader</a>&amp; reader, InputStream&amp; is) : Base(reader, is) {}</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160;</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; RAPIDJSON_FORCEINLINE Ch Take() { <span class="keywordflow">return</span> Base::TakePush(); }</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; };</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160;</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; <span class="keywordtype">void</span> ParseNumber(InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; internal::StreamLocalCopy&lt;InputStream&gt; copy(is);</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; NumberStream&lt;InputStream,</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; ((parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a13981c0b803803f59d7a01aef3dfc987">kParseNumbersAsStringsFlag</a>) != 0) ?</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; ((parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea">kParseInsituFlag</a>) == 0) :</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; ((parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9adf80892cdfa076b2d1a7dd9530e15cb0">kParseFullPrecisionFlag</a>) != 0),</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a13981c0b803803f59d7a01aef3dfc987">kParseNumbersAsStringsFlag</a>) != 0 &amp;&amp;</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea">kParseInsituFlag</a>) == 0&gt; s(*<span class="keyword">this</span>, copy.s);</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; <span class="keywordtype">size_t</span> startOffset = s.Tell();</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; <span class="keywordtype">double</span> d = 0.0;</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; <span class="keywordtype">bool</span> useNanOrInf = <span class="keyword">false</span>;</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <span class="comment">// Parse minus</span></div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; <span class="keywordtype">bool</span> minus = Consume(s, <span class="charliteral">&#39;-&#39;</span>);</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160;</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <span class="comment">// Parse int: zero / ( digit1-9 *DIGIT )</span></div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; <span class="keywordtype">unsigned</span> i = 0;</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; uint64_t i64 = 0;</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; <span class="keywordtype">bool</span> use64bit = <span class="keyword">false</span>;</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; <span class="keywordtype">int</span> significandDigit = 0;</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(s.Peek() == <span class="charliteral">&#39;0&#39;</span>)) {</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; i = 0;</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; s.TakePush();</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; }</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;1&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; i = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160;</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; <span class="keywordflow">if</span> (minus)</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(i &gt;= 214748364)) { <span class="comment">// 2^31 = 2147483648</span></div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(i != 214748364 || s.Peek() &gt; <span class="charliteral">&#39;8&#39;</span>)) {</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; i64 = i;</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; use64bit = <span class="keyword">true</span>;</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; }</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; }</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; i = i * 10 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; significandDigit++;</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; }</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(i &gt;= 429496729)) { <span class="comment">// 2^32 - 1 = 4294967295</span></div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(i != 429496729 || s.Peek() &gt; <span class="charliteral">&#39;5&#39;</span>)) {</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; i64 = i;</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; use64bit = <span class="keyword">true</span>;</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; }</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; }</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; i = i * 10 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; significandDigit++;</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; }</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; }</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; <span class="comment">// Parse NaN or Infinity here</span></div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a857894ab51cafa62956e9c9f0dafc4d8">kParseNanAndInfFlag</a>) &amp;&amp; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>((s.Peek() == <span class="charliteral">&#39;I&#39;</span> || s.Peek() == <span class="charliteral">&#39;N&#39;</span>))) {</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; <span class="keywordflow">if</span> (Consume(s, <span class="charliteral">&#39;N&#39;</span>)) {</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; <span class="keywordflow">if</span> (Consume(s, <span class="charliteral">&#39;a&#39;</span>) &amp;&amp; Consume(s, <span class="charliteral">&#39;N&#39;</span>)) {</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; d = std::numeric_limits&lt;double&gt;::quiet_NaN();</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; useNanOrInf = <span class="keyword">true</span>;</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; }</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160; }</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(Consume(s, <span class="charliteral">&#39;I&#39;</span>))) {</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; <span class="keywordflow">if</span> (Consume(s, <span class="charliteral">&#39;n&#39;</span>) &amp;&amp; Consume(s, <span class="charliteral">&#39;f&#39;</span>)) {</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; d = (minus ? -std::numeric_limits&lt;double&gt;::infinity() : std::numeric_limits&lt;double&gt;::infinity());</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; useNanOrInf = <span class="keyword">true</span>;</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160;</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(s.Peek() == <span class="charliteral">&#39;i&#39;</span> &amp;&amp; !(Consume(s, <span class="charliteral">&#39;i&#39;</span>) &amp;&amp; Consume(s, <span class="charliteral">&#39;n&#39;</span>)</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; &amp;&amp; Consume(s, <span class="charliteral">&#39;i&#39;</span>) &amp;&amp; Consume(s, <span class="charliteral">&#39;t&#39;</span>) &amp;&amp; Consume(s, <span class="charliteral">&#39;y&#39;</span>)))) {</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, s.Tell());</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; }</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; }</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; }</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; </div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!useNanOrInf)) {</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, s.Tell());</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; }</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; }</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, s.Tell());</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; <span class="comment">// Parse 64bit int</span></div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; <span class="keywordtype">bool</span> useDouble = <span class="keyword">false</span>;</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; <span class="keywordflow">if</span> (use64bit) {</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; <span class="keywordflow">if</span> (minus)</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(i64 &gt;= <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x0CCCCCCC, 0xCCCCCCCC))) <span class="comment">// 2^63 = 9223372036854775808</span></div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(i64 != <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x0CCCCCCC, 0xCCCCCCCC) || s.Peek() &gt; <span class="charliteral">&#39;8&#39;</span>)) {</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(i64);</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; useDouble = <span class="keyword">true</span>;</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160; }</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160; i64 = i64 * 10 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160; significandDigit++;</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; }</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(i64 &gt;= <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x19999999, 0x99999999))) <span class="comment">// 2^64 - 1 = 18446744073709551615</span></div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(i64 != <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x19999999, 0x99999999) || s.Peek() &gt; <span class="charliteral">&#39;5&#39;</span>)) {</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(i64);</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; useDouble = <span class="keyword">true</span>;</div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; }</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; i64 = i64 * 10 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; significandDigit++;</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; }</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; }</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; <span class="comment">// Force double for big integer</span></div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; <span class="keywordflow">if</span> (useDouble) {</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(d &gt;= 1.7976931348623157e307)) <span class="comment">// DBL_MAX / 10.0</span></div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805">kParseErrorNumberTooBig</a>, startOffset);</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; d = d * 10 + (s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; }</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; }</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160;</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; <span class="comment">// Parse frac = decimal-point 1*DIGIT</span></div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; <span class="keywordtype">int</span> expFrac = 0;</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; <span class="keywordtype">size_t</span> decimalPosition;</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; <span class="keywordflow">if</span> (Consume(s, <span class="charliteral">&#39;.&#39;</span>)) {</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; decimalPosition = s.Length();</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160;</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)))</div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ac840ece3ba6874fe6f16c01ebb71031f">kParseErrorNumberMissFraction</a>, s.Tell());</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; <span class="keywordflow">if</span> (!useDouble) {</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;<span class="preprocessor">#if RAPIDJSON_64BIT</span></div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; <span class="comment">// Use i64 to store significand in 64-bit architecture</span></div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160; <span class="keywordflow">if</span> (!use64bit)</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160; i64 = i;</div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>&#160;</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; <span class="keywordflow">if</span> (i64 &gt; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x1FFFFF, 0xFFFFFFFF)) <span class="comment">// 2^53 - 1 for fast path</span></div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; i64 = i64 * 10 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; --expFrac;</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; <span class="keywordflow">if</span> (i64 != 0)</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; significandDigit++;</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; }</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; }</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160;</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(i64);</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; <span class="comment">// Use double to store significand in 32-bit architecture</span></div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(use64bit ? i64 : i);</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; useDouble = <span class="keyword">true</span>;</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; }</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; <span class="keywordflow">if</span> (significandDigit &lt; 17) {</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; d = d * 10.0 + (s.TakePush() - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; --expFrac;</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(d &gt; 0.0))</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; significandDigit++;</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; }</div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; s.TakePush();</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; }</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; }</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; decimalPosition = s.Length(); <span class="comment">// decimal position at the end of integer.</span></div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160;</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; <span class="comment">// Parse exp = e [ minus / plus ] 1*DIGIT</span></div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; <span class="keywordtype">int</span> exp = 0;</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; <span class="keywordflow">if</span> (Consume(s, <span class="charliteral">&#39;e&#39;</span>) || Consume(s, <span class="charliteral">&#39;E&#39;</span>)) {</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; <span class="keywordflow">if</span> (!useDouble) {</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(use64bit ? i64 : i);</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; useDouble = <span class="keyword">true</span>;</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; }</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160;</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; <span class="keywordtype">bool</span> expMinus = <span class="keyword">false</span>;</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; <span class="keywordflow">if</span> (Consume(s, <span class="charliteral">&#39;+&#39;</span>))</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; ;</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Consume(s, <span class="charliteral">&#39;-&#39;</span>))</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; expMinus = <span class="keyword">true</span>;</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160;</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; exp = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(s.Take() - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; <span class="keywordflow">if</span> (expMinus) {</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; exp = exp * 10 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(s.Take() - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; <span class="keywordflow">if</span> (exp &gt;= 214748364) { <span class="comment">// Issue #313: prevent overflow exponent</span></div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) <span class="comment">// Consume the rest of exponent</span></div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; s.Take();</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; }</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; }</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160; }</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; <span class="keywordflow">else</span> { <span class="comment">// positive exp</span></div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160; <span class="keywordtype">int</span> maxExp = 308 - expFrac;</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; <span class="keywordflow">while</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(s.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; s.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>)) {</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; exp = exp * 10 + <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(s.Take() - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(exp &gt; maxExp))</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805">kParseErrorNumberTooBig</a>, startOffset);</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; }</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160; }</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; }</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7">kParseErrorNumberMissExponent</a>, s.Tell());</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; <span class="keywordflow">if</span> (expMinus)</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; exp = -exp;</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; }</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160;</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; <span class="comment">// Finish parsing, call event according to the type of number.</span></div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; <span class="keywordtype">bool</span> cont = <span class="keyword">true</span>;</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160;</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a13981c0b803803f59d7a01aef3dfc987">kParseNumbersAsStringsFlag</a>) {</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; kParseInsituFlag) {</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; s.Pop(); <span class="comment">// Pop stack no matter if it will be used or not.</span></div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; <span class="keyword">typename</span> InputStream::Ch* head = is.PutBegin();</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> length = s.Tell() - startOffset;</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(length &lt;= 0xFFFFFFFF);</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; <span class="comment">// unable to insert the \0 character here, it will erase the comma after this number</span></div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; <span class="keyword">const</span> <span class="keyword">typename</span> TargetEncoding::Ch* <span class="keyword">const</span> str = <span class="keyword">reinterpret_cast&lt;</span>typename TargetEncoding::Ch*<span class="keyword">&gt;</span>(head);</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; cont = handler.RawNumber(str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(length), <span class="keyword">false</span>);</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; }</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> numCharsToCopy = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(s.Length());</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160; <a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a> srcStream(s.Pop());</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160; StackStream&lt;typename TargetEncoding::Ch&gt; dstStream(stack_);</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160; <span class="keywordflow">while</span> (numCharsToCopy--) {</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160; <a class="code" href="structrapidjson_1_1_transcoder.html">Transcoder&lt;UTF8&lt;&gt;</a>, TargetEncoding&gt;::Transcode(srcStream, dstStream);</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; }</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160; dstStream.Put(<span class="charliteral">&#39;\0&#39;</span>);</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160; <span class="keyword">const</span> <span class="keyword">typename</span> TargetEncoding::Ch* str = dstStream.Pop();</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160; <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(dstStream.Length()) - 1;</div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160; cont = handler.RawNumber(str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(length), <span class="keyword">true</span>);</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160; }</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160; }</div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160; <span class="keywordtype">size_t</span> length = s.Length();</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* decimal = s.Pop(); <span class="comment">// Pop stack no matter if it will be used or not.</span></div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; <span class="keywordflow">if</span> (useDouble) {</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; <span class="keywordtype">int</span> p = exp + expFrac;</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160; <span class="keywordflow">if</span> (parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9adf80892cdfa076b2d1a7dd9530e15cb0">kParseFullPrecisionFlag</a>)</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; d = internal::StrtodFullPrecision(d, p, decimal, length, decimalPosition, exp);</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; d = internal::StrtodNormalPrecision(d, p);</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; cont = handler.Double(minus ? -d : d);</div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; }</div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (useNanOrInf) {</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; cont = handler.Double(d);</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160; }</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; <span class="keywordflow">if</span> (use64bit) {</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <span class="keywordflow">if</span> (minus)</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; cont = handler.Int64(static_cast&lt;int64_t&gt;(~i64 + 1));</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; cont = handler.Uint64(i64);</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; }</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; <span class="keywordflow">if</span> (minus)</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; cont = handler.Int(static_cast&lt;int32_t&gt;(~i + 1));</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; cont = handler.Uint(i);</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; }</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; }</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; }</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!cont))</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, startOffset);</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; }</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; <span class="comment">// Parse any JSON value</span></div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; <span class="keyword">template</span>&lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; <span class="keywordtype">void</span> ParseValue(InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; <span class="keywordflow">switch</span> (is.Peek()) {</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;n&#39;</span>: ParseNull &lt;parseFlags&gt;(is, handler); <span class="keywordflow">break</span>;</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;t&#39;</span>: ParseTrue &lt;parseFlags&gt;(is, handler); <span class="keywordflow">break</span>;</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;f&#39;</span>: ParseFalse &lt;parseFlags&gt;(is, handler); <span class="keywordflow">break</span>;</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;&quot;&#39;</span>: ParseString&lt;parseFlags&gt;(is, handler); <span class="keywordflow">break</span>;</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;{&#39;</span>: ParseObject&lt;parseFlags&gt;(is, handler); <span class="keywordflow">break</span>;</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;[&#39;</span>: ParseArray &lt;parseFlags&gt;(is, handler); <span class="keywordflow">break</span>;</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; default :</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; ParseNumber&lt;parseFlags&gt;(is, handler);</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160;</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; }</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; }</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160;</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; <span class="comment">// Iterative Parsing</span></div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160;</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; <span class="comment">// States</span></div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; <span class="keyword">enum</span> IterativeParsingState {</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; IterativeParsingFinishState = 0, <span class="comment">// sink states at top</span></div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; IterativeParsingErrorState, <span class="comment">// sink states at top</span></div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; IterativeParsingStartState,</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160;</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; <span class="comment">// Object states</span></div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; IterativeParsingObjectInitialState,</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; IterativeParsingMemberKeyState,</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; IterativeParsingMemberValueState,</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; IterativeParsingObjectFinishState,</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160;</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; <span class="comment">// Array states</span></div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; IterativeParsingArrayInitialState,</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160; IterativeParsingElementState,</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; IterativeParsingArrayFinishState,</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; <span class="comment">// Single value state</span></div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160; IterativeParsingValueState,</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160; </div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; <span class="comment">// Delimiter states (at bottom)</span></div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; IterativeParsingElementDelimiterState,</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; IterativeParsingMemberDelimiterState,</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; IterativeParsingKeyValueDelimiterState,</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; </div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; cIterativeParsingStateCount</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; };</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160;</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160; <span class="comment">// Tokens</span></div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; <span class="keyword">enum</span> Token {</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; LeftBracketToken = 0,</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; RightBracketToken,</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160;</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; LeftCurlyBracketToken,</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; RightCurlyBracketToken,</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160;</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; CommaToken,</div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; ColonToken,</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; StringToken,</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; FalseToken,</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; TrueToken,</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160; NullToken,</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; NumberToken,</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160;</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; kTokenCount</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; };</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160;</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; RAPIDJSON_FORCEINLINE Token Tokenize(Ch c) {</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160;<span class="comment">//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN</span></div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;<span class="comment"></span><span class="preprocessor">#define N NumberToken</span></div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;<span class="preprocessor">#define N16 N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N</span></div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; <span class="comment">// Maps from ASCII to Token</span></div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> tokenMap[256] = {</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; N16, <span class="comment">// 00~0F</span></div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160; N16, <span class="comment">// 10~1F</span></div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160; N, N, StringToken, N, N, N, N, N, N, N, N, N, CommaToken, N, N, N, <span class="comment">// 20~2F</span></div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; N, N, N, N, N, N, N, N, N, N, ColonToken, N, N, N, N, N, <span class="comment">// 30~3F</span></div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; N16, <span class="comment">// 40~4F</span></div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; N, N, N, N, N, N, N, N, N, N, N, LeftBracketToken, N, RightBracketToken, N, N, <span class="comment">// 50~5F</span></div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; N, N, N, N, N, N, FalseToken, N, N, N, N, N, N, N, NullToken, N, <span class="comment">// 60~6F</span></div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; N, N, N, N, TrueToken, N, N, N, N, N, N, LeftCurlyBracketToken, N, RightCurlyBracketToken, N, N, <span class="comment">// 70~7F</span></div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; N16, N16, N16, N16, N16, N16, N16, N16 <span class="comment">// 80~FF</span></div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; };</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;<span class="preprocessor">#undef N</span></div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160;<span class="preprocessor">#undef N16</span></div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;<span class="comment">//!@endcond</span></div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(Ch) == 1 || static_cast&lt;unsigned&gt;(c) &lt; 256)</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>Token<span class="keyword">&gt;</span>(tokenMap[<span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">&gt;</span>(c)]);</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; <span class="keywordflow">return</span> NumberToken;</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; }</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160;</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; RAPIDJSON_FORCEINLINE IterativeParsingState Predict(IterativeParsingState state, Token token) {</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; <span class="comment">// current state x one lookahead token -&gt; new state</span></div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> G[cIterativeParsingStateCount][kTokenCount] = {</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; <span class="comment">// Finish(sink state)</span></div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; {</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160; IterativeParsingErrorState</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; },</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; <span class="comment">// Error(sink state)</span></div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160; {</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; IterativeParsingErrorState</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; },</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; <span class="comment">// Start</span></div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160; {</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; IterativeParsingArrayInitialState, <span class="comment">// Left bracket</span></div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; IterativeParsingErrorState, <span class="comment">// Right bracket</span></div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; IterativeParsingObjectInitialState, <span class="comment">// Left curly bracket</span></div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; IterativeParsingErrorState, <span class="comment">// Right curly bracket</span></div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; IterativeParsingErrorState, <span class="comment">// Comma</span></div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; IterativeParsingValueState, <span class="comment">// String</span></div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; IterativeParsingValueState, <span class="comment">// False</span></div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; IterativeParsingValueState, <span class="comment">// True</span></div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; IterativeParsingValueState, <span class="comment">// Null</span></div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; IterativeParsingValueState <span class="comment">// Number</span></div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; },</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; <span class="comment">// ObjectInitial</span></div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; {</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; IterativeParsingErrorState, <span class="comment">// Left bracket</span></div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; IterativeParsingErrorState, <span class="comment">// Right bracket</span></div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; IterativeParsingErrorState, <span class="comment">// Left curly bracket</span></div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; IterativeParsingObjectFinishState, <span class="comment">// Right curly bracket</span></div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; IterativeParsingErrorState, <span class="comment">// Comma</span></div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; IterativeParsingMemberKeyState, <span class="comment">// String</span></div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; IterativeParsingErrorState, <span class="comment">// False</span></div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; IterativeParsingErrorState, <span class="comment">// True</span></div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; IterativeParsingErrorState, <span class="comment">// Null</span></div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; IterativeParsingErrorState <span class="comment">// Number</span></div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160; },</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; <span class="comment">// MemberKey</span></div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; {</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; IterativeParsingErrorState, <span class="comment">// Left bracket</span></div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; IterativeParsingErrorState, <span class="comment">// Right bracket</span></div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; IterativeParsingErrorState, <span class="comment">// Left curly bracket</span></div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; IterativeParsingErrorState, <span class="comment">// Right curly bracket</span></div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; IterativeParsingErrorState, <span class="comment">// Comma</span></div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; IterativeParsingKeyValueDelimiterState, <span class="comment">// Colon</span></div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160; IterativeParsingErrorState, <span class="comment">// String</span></div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160; IterativeParsingErrorState, <span class="comment">// False</span></div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; IterativeParsingErrorState, <span class="comment">// True</span></div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; IterativeParsingErrorState, <span class="comment">// Null</span></div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160; IterativeParsingErrorState <span class="comment">// Number</span></div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; },</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; <span class="comment">// MemberValue</span></div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; {</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160; IterativeParsingErrorState, <span class="comment">// Left bracket</span></div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160; IterativeParsingErrorState, <span class="comment">// Right bracket</span></div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160; IterativeParsingErrorState, <span class="comment">// Left curly bracket</span></div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; IterativeParsingObjectFinishState, <span class="comment">// Right curly bracket</span></div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; IterativeParsingMemberDelimiterState, <span class="comment">// Comma</span></div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160; IterativeParsingErrorState, <span class="comment">// String</span></div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; IterativeParsingErrorState, <span class="comment">// False</span></div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; IterativeParsingErrorState, <span class="comment">// True</span></div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; IterativeParsingErrorState, <span class="comment">// Null</span></div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; IterativeParsingErrorState <span class="comment">// Number</span></div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; },</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; <span class="comment">// ObjectFinish(sink state)</span></div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; {</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; IterativeParsingErrorState</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; },</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160; <span class="comment">// ArrayInitial</span></div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; {</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; IterativeParsingArrayInitialState, <span class="comment">// Left bracket(push Element state)</span></div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; IterativeParsingArrayFinishState, <span class="comment">// Right bracket</span></div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; IterativeParsingObjectInitialState, <span class="comment">// Left curly bracket(push Element state)</span></div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; IterativeParsingErrorState, <span class="comment">// Right curly bracket</span></div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; IterativeParsingErrorState, <span class="comment">// Comma</span></div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; IterativeParsingElementState, <span class="comment">// String</span></div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; IterativeParsingElementState, <span class="comment">// False</span></div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; IterativeParsingElementState, <span class="comment">// True</span></div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; IterativeParsingElementState, <span class="comment">// Null</span></div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; IterativeParsingElementState <span class="comment">// Number</span></div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; },</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; <span class="comment">// Element</span></div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; {</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; IterativeParsingErrorState, <span class="comment">// Left bracket</span></div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; IterativeParsingArrayFinishState, <span class="comment">// Right bracket</span></div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; IterativeParsingErrorState, <span class="comment">// Left curly bracket</span></div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; IterativeParsingErrorState, <span class="comment">// Right curly bracket</span></div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; IterativeParsingElementDelimiterState, <span class="comment">// Comma</span></div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160; IterativeParsingErrorState, <span class="comment">// String</span></div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; IterativeParsingErrorState, <span class="comment">// False</span></div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160; IterativeParsingErrorState, <span class="comment">// True</span></div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; IterativeParsingErrorState, <span class="comment">// Null</span></div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; IterativeParsingErrorState <span class="comment">// Number</span></div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; },</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; <span class="comment">// ArrayFinish(sink state)</span></div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; {</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; IterativeParsingErrorState</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; },</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; <span class="comment">// Single Value (sink state)</span></div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; {</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; IterativeParsingErrorState</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; },</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; <span class="comment">// ElementDelimiter</span></div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; {</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; IterativeParsingArrayInitialState, <span class="comment">// Left bracket(push Element state)</span></div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; IterativeParsingArrayFinishState, <span class="comment">// Right bracket</span></div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160; IterativeParsingObjectInitialState, <span class="comment">// Left curly bracket(push Element state)</span></div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; IterativeParsingErrorState, <span class="comment">// Right curly bracket</span></div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; IterativeParsingErrorState, <span class="comment">// Comma</span></div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; IterativeParsingElementState, <span class="comment">// String</span></div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; IterativeParsingElementState, <span class="comment">// False</span></div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; IterativeParsingElementState, <span class="comment">// True</span></div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160; IterativeParsingElementState, <span class="comment">// Null</span></div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160; IterativeParsingElementState <span class="comment">// Number</span></div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; },</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; <span class="comment">// MemberDelimiter</span></div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; {</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; IterativeParsingErrorState, <span class="comment">// Left bracket</span></div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; IterativeParsingErrorState, <span class="comment">// Right bracket</span></div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160; IterativeParsingErrorState, <span class="comment">// Left curly bracket</span></div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; IterativeParsingObjectFinishState, <span class="comment">// Right curly bracket</span></div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160; IterativeParsingErrorState, <span class="comment">// Comma</span></div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; IterativeParsingMemberKeyState, <span class="comment">// String</span></div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160; IterativeParsingErrorState, <span class="comment">// False</span></div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160; IterativeParsingErrorState, <span class="comment">// True</span></div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; IterativeParsingErrorState, <span class="comment">// Null</span></div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; IterativeParsingErrorState <span class="comment">// Number</span></div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; },</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; <span class="comment">// KeyValueDelimiter</span></div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; {</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160; IterativeParsingArrayInitialState, <span class="comment">// Left bracket(push MemberValue state)</span></div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; IterativeParsingErrorState, <span class="comment">// Right bracket</span></div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160; IterativeParsingObjectInitialState, <span class="comment">// Left curly bracket(push MemberValue state)</span></div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; IterativeParsingErrorState, <span class="comment">// Right curly bracket</span></div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; IterativeParsingErrorState, <span class="comment">// Comma</span></div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; IterativeParsingErrorState, <span class="comment">// Colon</span></div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; IterativeParsingMemberValueState, <span class="comment">// String</span></div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; IterativeParsingMemberValueState, <span class="comment">// False</span></div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; IterativeParsingMemberValueState, <span class="comment">// True</span></div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; IterativeParsingMemberValueState, <span class="comment">// Null</span></div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; IterativeParsingMemberValueState <span class="comment">// Number</span></div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160; },</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; }; <span class="comment">// End of G</span></div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160;</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>IterativeParsingState<span class="keyword">&gt;</span>(G[state][token]);</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160; }</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160; <span class="comment">// Make an advance in the token stream and state based on the candidate destination state which was returned by Transit().</span></div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; <span class="comment">// May return a new state on state pop.</span></div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160; RAPIDJSON_FORCEINLINE IterativeParsingState Transit(IterativeParsingState src, Token token, IterativeParsingState dst, InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; (void)token;</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160;</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; <span class="keywordflow">switch</span> (dst) {</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; <span class="keywordflow">case</span> IterativeParsingErrorState:</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; <span class="keywordflow">return</span> dst;</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160;</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160; <span class="keywordflow">case</span> IterativeParsingObjectInitialState:</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160; <span class="keywordflow">case</span> IterativeParsingArrayInitialState:</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; {</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; <span class="comment">// Push the state(Element or MemeberValue) if we are nested in another array or value of member.</span></div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160; <span class="comment">// In this way we can get the correct state on ObjectFinish or ArrayFinish by frame pop.</span></div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160; IterativeParsingState n = src;</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; <span class="keywordflow">if</span> (src == IterativeParsingArrayInitialState || src == IterativeParsingElementDelimiterState)</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; n = IterativeParsingElementState;</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (src == IterativeParsingKeyValueDelimiterState)</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; n = IterativeParsingMemberValueState;</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160; <span class="comment">// Push current state.</span></div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; *stack_.template Push&lt;SizeType&gt;(1) = n;</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; <span class="comment">// Initialize and push the member/element count.</span></div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; *stack_.template Push&lt;SizeType&gt;(1) = 0;</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; <span class="comment">// Call handler</span></div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; <span class="keywordtype">bool</span> hr = (dst == IterativeParsingObjectInitialState) ? handler.StartObject() : handler.StartArray();</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160; <span class="comment">// On handler short circuits the parsing.</span></div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160; <span class="keywordflow">if</span> (!hr) {</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160; }</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160; is.Take();</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160; <span class="keywordflow">return</span> dst;</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160; }</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; }</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160;</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160; <span class="keywordflow">case</span> IterativeParsingMemberKeyState:</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160; ParseString&lt;parseFlags&gt;(is, handler, <span class="keyword">true</span>);</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160; <span class="keywordflow">if</span> (HasParseError())</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160; <span class="keywordflow">return</span> dst;</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160; <span class="keywordflow">case</span> IterativeParsingKeyValueDelimiterState:</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(token == ColonToken);</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; is.Take();</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; <span class="keywordflow">return</span> dst;</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160;</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160; <span class="keywordflow">case</span> IterativeParsingMemberValueState:</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160; <span class="comment">// Must be non-compound value. Or it would be ObjectInitial or ArrayInitial state.</span></div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160; ParseValue&lt;parseFlags&gt;(is, handler);</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160; <span class="keywordflow">if</span> (HasParseError()) {</div><div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160; }</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160; <span class="keywordflow">return</span> dst;</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160;</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; <span class="keywordflow">case</span> IterativeParsingElementState:</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160; <span class="comment">// Must be non-compound value. Or it would be ObjectInitial or ArrayInitial state.</span></div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; ParseValue&lt;parseFlags&gt;(is, handler);</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160; <span class="keywordflow">if</span> (HasParseError()) {</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div><div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>&#160; }</div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160; <span class="keywordflow">return</span> dst;</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160;</div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160; <span class="keywordflow">case</span> IterativeParsingMemberDelimiterState:</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; <span class="keywordflow">case</span> IterativeParsingElementDelimiterState:</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; is.Take();</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; <span class="comment">// Update member/element count.</span></div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; *stack_.template Top&lt;SizeType&gt;() = *stack_.template Top&lt;SizeType&gt;() + 1;</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160; <span class="keywordflow">return</span> dst;</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160;</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160; <span class="keywordflow">case</span> IterativeParsingObjectFinishState:</div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160; {</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160; <span class="comment">// Transit from delimiter is only allowed when trailing commas are enabled</span></div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; <span class="keywordflow">if</span> (!(parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af8b8470221dbc6046a40ff31d758ceec">kParseTrailingCommasFlag</a>) &amp;&amp; src == IterativeParsingMemberDelimiterState) {</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242">kParseErrorObjectMissName</a>, is.Tell());</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160; }</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; <span class="comment">// Get member count.</span></div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> c = *stack_.template Pop&lt;SizeType&gt;(1);</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; <span class="comment">// If the object is not empty, count the last member.</span></div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; <span class="keywordflow">if</span> (src == IterativeParsingMemberValueState)</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160; ++c;</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; <span class="comment">// Restore the state.</span></div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160; IterativeParsingState n = <span class="keyword">static_cast&lt;</span>IterativeParsingState<span class="keyword">&gt;</span>(*stack_.template Pop&lt;SizeType&gt;(1));</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; <span class="comment">// Transit to Finish state if this is the topmost scope.</span></div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; <span class="keywordflow">if</span> (n == IterativeParsingStartState)</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160; n = IterativeParsingFinishState;</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; <span class="comment">// Call handler</span></div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; <span class="keywordtype">bool</span> hr = handler.EndObject(c);</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160; <span class="comment">// On handler short circuits the parsing.</span></div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160; <span class="keywordflow">if</span> (!hr) {</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; }</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160; is.Take();</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160; <span class="keywordflow">return</span> n;</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160; }</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160; }</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160;</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>&#160; <span class="keywordflow">case</span> IterativeParsingArrayFinishState:</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160; {</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160; <span class="comment">// Transit from delimiter is only allowed when trailing commas are enabled</span></div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160; <span class="keywordflow">if</span> (!(parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af8b8470221dbc6046a40ff31d758ceec">kParseTrailingCommasFlag</a>) &amp;&amp; src == IterativeParsingElementDelimiterState) {</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, is.Tell());</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160; }</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160; <span class="comment">// Get element count.</span></div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> c = *stack_.template Pop&lt;SizeType&gt;(1);</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160; <span class="comment">// If the array is not empty, count the last element.</span></div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160; <span class="keywordflow">if</span> (src == IterativeParsingElementState)</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160; ++c;</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160; <span class="comment">// Restore the state.</span></div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160; IterativeParsingState n = <span class="keyword">static_cast&lt;</span>IterativeParsingState<span class="keyword">&gt;</span>(*stack_.template Pop&lt;SizeType&gt;(1));</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160; <span class="comment">// Transit to Finish state if this is the topmost scope.</span></div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160; <span class="keywordflow">if</span> (n == IterativeParsingStartState)</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160; n = IterativeParsingFinishState;</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160; <span class="comment">// Call handler</span></div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160; <span class="keywordtype">bool</span> hr = handler.EndArray(c);</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; <span class="comment">// On handler short circuits the parsing.</span></div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160; <span class="keywordflow">if</span> (!hr) {</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">kParseErrorTermination</a>, is.Tell());</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160; }</div><div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160; is.Take();</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; <span class="keywordflow">return</span> n;</div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; }</div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; }</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160;</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160; <span class="comment">// This branch is for IterativeParsingValueState actually.</span></div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; <span class="comment">// Use `default:` rather than</span></div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160; <span class="comment">// `case IterativeParsingValueState:` is for code coverage.</span></div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; <span class="comment">// The IterativeParsingStartState is not enumerated in this switch-case.</span></div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160; <span class="comment">// It is impossible for that case. And it can be caught by following assertion.</span></div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160;</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; <span class="comment">// The IterativeParsingFinishState is not enumerated in this switch-case either.</span></div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160; <span class="comment">// It is a &quot;derivative&quot; state which cannot triggered from Predict() directly.</span></div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160; <span class="comment">// Therefore it cannot happen here. And it can be caught by following assertion.</span></div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(dst == IterativeParsingValueState);</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160;</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; <span class="comment">// Must be non-compound value. Or it would be ObjectInitial or ArrayInitial state.</span></div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; ParseValue&lt;parseFlags&gt;(is, handler);</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160; <span class="keywordflow">if</span> (HasParseError()) {</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; <span class="keywordflow">return</span> IterativeParsingErrorState;</div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>&#160; }</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160; <span class="keywordflow">return</span> IterativeParsingFinishState;</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160; }</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160; }</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>&#160; <span class="keywordtype">void</span> HandleError(IterativeParsingState src, InputStream&amp; is) {</div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>&#160; <span class="keywordflow">if</span> (HasParseError()) {</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>&#160; <span class="comment">// Error flag has been set.</span></div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>&#160; }</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>&#160;</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160; <span class="keywordflow">switch</span> (src) {</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160; <span class="keywordflow">case</span> IterativeParsingStartState: <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286">kParseErrorDocumentEmpty</a>, is.Tell()); <span class="keywordflow">return</span>;</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160; <span class="keywordflow">case</span> IterativeParsingFinishState: <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5">kParseErrorDocumentRootNotSingular</a>, is.Tell()); <span class="keywordflow">return</span>;</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160; <span class="keywordflow">case</span> IterativeParsingObjectInitialState:</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160; <span class="keywordflow">case</span> IterativeParsingMemberDelimiterState: <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242">kParseErrorObjectMissName</a>, is.Tell()); <span class="keywordflow">return</span>;</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; <span class="keywordflow">case</span> IterativeParsingMemberKeyState: <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c">kParseErrorObjectMissColon</a>, is.Tell()); <span class="keywordflow">return</span>;</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160; <span class="keywordflow">case</span> IterativeParsingMemberValueState: <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73">kParseErrorObjectMissCommaOrCurlyBracket</a>, is.Tell()); <span class="keywordflow">return</span>;</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; <span class="keywordflow">case</span> IterativeParsingKeyValueDelimiterState:</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160; <span class="keywordflow">case</span> IterativeParsingArrayInitialState:</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; <span class="keywordflow">case</span> IterativeParsingElementDelimiterState: <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab7fa69bce0c393cf3a2b6065111f2f57">kParseErrorValueInvalid</a>, is.Tell()); <span class="keywordflow">return</span>;</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; <span class="keywordflow">default</span>: <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(src == IterativeParsingElementState); <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a>(<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93">kParseErrorArrayMissCommaOrSquareBracket</a>, is.Tell()); <span class="keywordflow">return</span>;</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160; }</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; }</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> IsIterativeParsingDelimiterState(IterativeParsingState s) {</div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>&#160; <span class="keywordflow">return</span> s &gt;= IterativeParsingElementDelimiterState;</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160; }</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160; </div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> IsIterativeParsingCompleteState(IterativeParsingState s) {</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; <span class="keywordflow">return</span> s &lt;= IterativeParsingErrorState;</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; }</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160; </div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">unsigned</span> parseFlags, <span class="keyword">typename</span> InputStream, <span class="keyword">typename</span> Handler&gt;</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> IterativeParse(InputStream&amp; is, <a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; parseResult_.<a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f">Clear</a>();</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; ClearStackOnExit scope(*<span class="keyword">this</span>);</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; IterativeParsingState state = IterativeParsingStartState;</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; </div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);</div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; <span class="keywordflow">while</span> (is.Peek() != <span class="charliteral">&#39;\0&#39;</span>) {</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; Token t = Tokenize(is.Peek());</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160; IterativeParsingState n = Predict(state, t);</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160; IterativeParsingState d = Transit&lt;parseFlags&gt;(state, t, n, is, handler);</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; </div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160; <span class="keywordflow">if</span> (d == IterativeParsingErrorState) {</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160; HandleError(state, is);</div><div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160; }</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; </div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160; state = d;</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160; </div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160; <span class="comment">// Do not further consume streams if a root JSON has been parsed.</span></div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; <span class="keywordflow">if</span> ((parseFlags &amp; <a class="code" href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af84c60868704433b80aa51a62e042bb1">kParseStopWhenDoneFlag</a>) &amp;&amp; state == IterativeParsingFinishState)</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; </div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160; SkipWhitespaceAndComments&lt;parseFlags&gt;(is);</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160; RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160; }</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160; </div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160; <span class="comment">// Handle the end of file.</span></div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160; <span class="keywordflow">if</span> (state != IterativeParsingFinishState)</div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160; HandleError(state, is);</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160; </div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160; <span class="keywordflow">return</span> parseResult_;</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160; }</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;</div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultStackCapacity = 256; <span class="comment">//!&lt; Default stack capacity in bytes for storing a single decoded string.</span></div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160;<span class="comment"></span> internal::Stack&lt;StackAllocator&gt; stack_; <span class="comment">//!&lt; A stack for storing decoded string temporarily during non-destructive parsing.</span></div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160;<span class="comment"></span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> parseResult_;</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160; IterativeParsingState state_;</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160;}; <span class="comment">// class GenericReader</span></div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>&#160;<span class="comment"></span></div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160;<span class="comment">//! Reader with UTF8 encoding and default allocator.</span></div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader&lt;UTF8&lt;&gt;</a>, <a class="code" href="structrapidjson_1_1_u_t_f8.html">UTF8&lt;&gt;</a> &gt; <a class="code" href="classrapidjson_1_1_generic_reader.html">Reader</a>;</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160;</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160;</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160;</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160;</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160;</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_READER_H_</span></div><div class="ttc" id="namespacerapidjson_html_a81379eb4e94a0386d71d15fda882ebc9a857894ab51cafa62956e9c9f0dafc4d8"><div class="ttname"><a href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a857894ab51cafa62956e9c9f0dafc4d8">rapidjson::kParseNanAndInfFlag</a></div><div class="ttdoc">Allow parsing NaN, Inf, Infinity, -Inf and -Infinity as doubles. </div><div class="ttdef"><b>Definition:</b> reader.h:157</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_string_stream_html"><div class="ttname"><a href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream</a></div><div class="ttdoc">Read-only string stream. </div><div class="ttdef"><b>Definition:</b> fwd.h:47</div></div>
<div class="ttc" id="namespacerapidjson_html_a81379eb4e94a0386d71d15fda882ebc9a7923686c8bdb7614699f1fb1bb615bb2"><div class="ttname"><a href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a7923686c8bdb7614699f1fb1bb615bb2">rapidjson::kParseIterativeFlag</a></div><div class="ttdoc">Iterative(constant complexity in terms of function call stack size) parsing. </div><div class="ttdef"><b>Definition:</b> reader.h:151</div></div>
<div class="ttc" id="classrapidjson_1_1_handler_html"><div class="ttname"><a href="classrapidjson_1_1_handler.html">rapidjson::Handler</a></div><div class="ttdoc">Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...</div></div>
@@ -2312,20 +92,22 @@ $(document).ready(function(){initNavTree('reader_8h_source.html','');});
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a636209a2e516fbdb4db5ad0a83a6b386">rapidjson::kParseErrorStringUnicodeSurrogateInvalid</a></div><div class="ttdoc">The surrogate pair in string is invalid. </div><div class="ttdef"><b>Definition:</b> error.h:79</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gae3689840fa6e89a241313f33b602f865"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gae3689840fa6e89a241313f33b602f865">RAPIDJSON_PARSE_ERROR</a></div><div class="ttdeci">#define RAPIDJSON_PARSE_ERROR(parseErrorCode, offset)</div><div class="ttdoc">(Internal) macro to indicate and handle a parse error. </div><div class="ttdef"><b>Definition:</b> reader.h:120</div></div>
<div class="ttc" id="rapidjson_8h_html_aaee1245f375a71be1ac9b8a07ba5fb8f"><div class="ttname"><a href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a></div><div class="ttdeci">#define RAPIDJSON_UINT64_C2(high32, low32)</div><div class="ttdoc">Construct a 64-bit literal by a pair of 32-bit integer. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:294</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_reader_html"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html">rapidjson::GenericReader</a></div><div class="ttdoc">SAX-style JSON parser. Use Reader for UTF8 encoding and default allocator. </div><div class="ttdef"><b>Definition:</b> fwd.h:88</div></div>
+<div class="ttc" id="structrapidjson_1_1_transcoder_html"><div class="ttname"><a href="structrapidjson_1_1_transcoder.html">rapidjson::Transcoder</a></div><div class="ttdoc">Encoding conversion. </div><div class="ttdef"><b>Definition:</b> encodings.h:658</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a58e952084a0dfdbc5630f624252aef5c">rapidjson::kParseErrorObjectMissColon</a></div><div class="ttdoc">Missing a colon after a name of object member. </div><div class="ttdef"><b>Definition:</b> error.h:73</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a23c38bf88b8448555c0eb41e1735bd92"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a23c38bf88b8448555c0eb41e1735bd92">rapidjson::kParseErrorStringUnicodeEscapeInvalidHex</a></div><div class="ttdoc">Incorrect hex digit after \u escape in string. </div><div class="ttdef"><b>Definition:</b> error.h:78</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_reader_html_a46ded2951b8fa395ed421989d66e71fe"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#a46ded2951b8fa395ed421989d66e71fe">rapidjson::GenericReader::HasParseError</a></div><div class="ttdeci">bool HasParseError() const </div><div class="ttdoc">Whether a parse error has occured in the last parsing. </div><div class="ttdef"><b>Definition:</b> reader.h:681</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_reader_html_a042c621cf745c5ed3a6f5ff9418dd05e"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#a042c621cf745c5ed3a6f5ff9418dd05e">rapidjson::GenericReader::GetParseErrorCode</a></div><div class="ttdeci">ParseErrorCode GetParseErrorCode() const</div><div class="ttdoc">Get the ParseErrorCode of last parsing. </div><div class="ttdef"><b>Definition:</b> reader.h:684</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60ac840ece3ba6874fe6f16c01ebb71031f"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ac840ece3ba6874fe6f16c01ebb71031f">rapidjson::kParseErrorNumberMissFraction</a></div><div class="ttdoc">Miss fraction part in number. </div><div class="ttdef"><b>Definition:</b> error.h:85</div></div>
<div class="ttc" id="namespacerapidjson_html_a44eb33eaa523e36d466b1ced64b85c84"><div class="ttname"><a href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">rapidjson::SizeType</a></div><div class="ttdeci">unsigned SizeType</div><div class="ttdoc">Size type (for string lengths, array sizes, etc.) </div><div class="ttdef"><b>Definition:</b> rapidjson.h:389</div></div>
<div class="ttc" id="structrapidjson_1_1_base_reader_handler_html_a0de969fd05528960c2a7de51b2265bf1"><div class="ttname"><a href="structrapidjson_1_1_base_reader_handler.html#a0de969fd05528960c2a7de51b2265bf1">rapidjson::BaseReaderHandler::RawNumber</a></div><div class="ttdeci">bool RawNumber(const Ch *str, SizeType len, bool copy)</div><div class="ttdoc">enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length) ...</div><div class="ttdef"><b>Definition:</b> reader.h:212</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ga7d3acf640886b1f2552dc8c4cd6dea60"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60">rapidjson::ParseErrorCode</a></div><div class="ttdeci">ParseErrorCode</div><div class="ttdoc">Error code of parsing. </div><div class="ttdef"><b>Definition:</b> error.h:64</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_reader_html_a56ab1065ea75167aeacb4802425bf57f"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#a56ab1065ea75167aeacb4802425bf57f">rapidjson::GenericReader::GenericReader</a></div><div class="ttdeci">GenericReader(StackAllocator *stackAllocator=0, size_t stackCapacity=kDefaultStackCapacity)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> reader.h:547</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_reader_html_ab907a36c410e96154c99797a6a0ce16d"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#ab907a36c410e96154c99797a6a0ce16d">rapidjson::GenericReader::GetErrorOffset</a></div><div class="ttdeci">size_t GetErrorOffset() const </div><div class="ttdoc">Get the position of last parsing error in input, 0 otherwise. </div><div class="ttdef"><b>Definition:</b> reader.h:687</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_reader_html_a60fa11ff60f71b3a466bbd962f35dfdb"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#a60fa11ff60f71b3a466bbd962f35dfdb">rapidjson::GenericReader::IterativeParseComplete</a></div><div class="ttdeci">RAPIDJSON_FORCEINLINE bool IterativeParseComplete()</div><div class="ttdoc">Check if token-by-token parsing JSON text is complete. </div><div class="ttdef"><b>Definition:</b> reader.h:676</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_reader_html_a60fa11ff60f71b3a466bbd962f35dfdb"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#a60fa11ff60f71b3a466bbd962f35dfdb">rapidjson::GenericReader::IterativeParseComplete</a></div><div class="ttdeci">RAPIDJSON_FORCEINLINE bool IterativeParseComplete()</div><div class="ttdoc">Check if token-by-token parsing JSON text is complete </div><div class="ttdef"><b>Definition:</b> reader.h:676</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_a17c9f7f81675283393222658d613000f"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f">rapidjson::ParseResult::Clear</a></div><div class="ttdeci">void Clear()</div><div class="ttdoc">Reset error code. </div><div class="ttdef"><b>Definition:</b> error.h:134</div></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93">rapidjson::kParseErrorArrayMissCommaOrSquareBracket</a></div><div class="ttdoc">Missing a comma or &#39;]&#39; after an array element. </div><div class="ttdef"><b>Definition:</b> error.h:76</div></div>
-<div class="ttc" id="namespacerapidjson_html_ad5310edd1226f5b3ea82dc0d4d3740c6"><div class="ttname"><a href="namespacerapidjson.html#ad5310edd1226f5b3ea82dc0d4d3740c6">rapidjson::Reader</a></div><div class="ttdeci">GenericReader&lt; UTF8&lt; char &gt;, UTF8&lt; char &gt;, CrtAllocator &gt; Reader</div><div class="ttdoc">Reader with UTF8 encoding and default allocator. </div><div class="ttdef"><b>Definition:</b> fwd.h:88</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_reader_html_a0781d19e8c6bc044d9cc5f5d3dde287e"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#a0781d19e8c6bc044d9cc5f5d3dde287e">rapidjson::GenericReader::Ch</a></div><div class="ttdeci">SourceEncoding::Ch Ch</div><div class="ttdoc">SourceEncoding character type. </div><div class="ttdef"><b>Definition:</b> reader.h:541</div></div>
+<div class="ttc" id="structrapidjson_1_1_memory_stream_html"><div class="ttname"><a href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></div><div class="ttdoc">Represents an in-memory input byte stream. </div><div class="ttdef"><b>Definition:</b> memorystream.h:40</div></div>
+<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a1a4ac97731f997e9591b40f98ecd9f93">rapidjson::kParseErrorArrayMissCommaOrSquareBracket</a></div><div class="ttdoc">Missing a comma or &amp;#39;]&amp;#39; after an array element. </div><div class="ttdef"><b>Definition:</b> error.h:76</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_reader_html_ac42370c3497a0e2b6973110f298e3a59"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#ac42370c3497a0e2b6973110f298e3a59">rapidjson::GenericReader::HasParseError</a></div><div class="ttdeci">bool HasParseError() const</div><div class="ttdoc">Whether a parse error has occured in the last parsing. </div><div class="ttdef"><b>Definition:</b> reader.h:681</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_reader_html_a0781d19e8c6bc044d9cc5f5d3dde287e"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#a0781d19e8c6bc044d9cc5f5d3dde287e">rapidjson::GenericReader::Ch</a></div><div class="ttdeci">SourceEncoding::Ch Ch</div><div class="ttdoc">SourceEncoding character type </div><div class="ttdef"><b>Definition:</b> reader.h:541</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2022599bcd4f64d58885a026f95751d5">rapidjson::kParseErrorDocumentRootNotSingular</a></div><div class="ttdoc">The document root must not follow by other values. </div><div class="ttdef"><b>Definition:</b> error.h:68</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_string_stream_html_a9a38a9d5b1ce782cacd4ec1bdf87fc2d"><div class="ttname"><a href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">rapidjson::GenericStringStream::src_</a></div><div class="ttdeci">const Ch * src_</div><div class="ttdoc">Current read position. </div><div class="ttdef"><b>Definition:</b> stream.h:124</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_ga7f8c4265b2edda78568ae3338aaf1461"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7f8c4265b2edda78568ae3338aaf1461">RAPIDJSON_PARSE_ERROR_NORETURN</a></div><div class="ttdeci">#define RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode, offset)</div><div class="ttdoc">Macro to indicate a parse error. </div><div class="ttdef"><b>Definition:</b> reader.h:101</div></div>
@@ -2339,24 +121,26 @@ $(document).ready(function(){initNavTree('reader_8h_source.html','');});
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a8dd0af5e6103a6503c61c38cb2b0bab9"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a8dd0af5e6103a6503c61c38cb2b0bab9">rapidjson::kParseErrorStringEscapeInvalid</a></div><div class="ttdoc">Invalid escape character in string. </div><div class="ttdef"><b>Definition:</b> error.h:80</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_structrapidjson_1_1_parse_result"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">rapidjson::ParseResult</a></div><div class="ttdoc">Result of parsing (wraps ParseErrorCode) </div><div class="ttdef"><b>Definition:</b> error.h:106</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab707b848425668e765def25554735242">rapidjson::kParseErrorObjectMissName</a></div><div class="ttdoc">Missing a name for object member. </div><div class="ttdef"><b>Definition:</b> error.h:72</div></div>
-<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
+<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
<div class="ttc" id="namespacerapidjson_html_a81379eb4e94a0386d71d15fda882ebc9af84c60868704433b80aa51a62e042bb1"><div class="ttname"><a href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9af84c60868704433b80aa51a62e042bb1">rapidjson::kParseStopWhenDoneFlag</a></div><div class="ttdoc">After parsing a complete JSON root from stream, stop further processing the rest of stream...</div><div class="ttdef"><b>Definition:</b> reader.h:152</div></div>
<div class="ttc" id="namespacerapidjson_html_a6efb0f4d2a6f81477a59718d42e9464a"><div class="ttname"><a href="namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a">rapidjson::SkipWhitespace</a></div><div class="ttdeci">void SkipWhitespace(InputStream &amp;is)</div><div class="ttdoc">Skip the JSON white spaces in a stream. </div><div class="ttdef"><b>Definition:</b> reader.h:266</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_ga6a2b1695c13e77ae425e3cbac980ccb5"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a></div><div class="ttdeci">#define RAPIDJSON_UNLIKELY(x)</div><div class="ttdoc">Compiler branching hint for expression with low probability to be true. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:481</div></div>
-<div class="ttc" id="namespacerapidjson_html_a81379eb4e94a0386d71d15fda882ebc9a5640cb00db7814b7f22be3683dda9835"><div class="ttname"><a href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a5640cb00db7814b7f22be3683dda9835">rapidjson::kParseDefaultFlags</a></div><div class="ttdoc">Default parse flags. Can be customized by defining RAPIDJSON_PARSE_DEFAULT_FLAGS. ...</div><div class="ttdef"><b>Definition:</b> reader.h:158</div></div>
-<div class="ttc" id="namespacerapidjson_html_a81379eb4e94a0386d71d15fda882ebc9"><div class="ttname"><a href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9">rapidjson::ParseFlag</a></div><div class="ttdeci">ParseFlag</div><div class="ttdoc">Combination of parseFlags. </div><div class="ttdef"><b>Definition:</b> reader.h:147</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_reader_html_ab50019e0a715320f83b7610b83dcef8f"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#ab50019e0a715320f83b7610b83dcef8f">rapidjson::GenericReader::GetErrorOffset</a></div><div class="ttdeci">size_t GetErrorOffset() const</div><div class="ttdoc">Get the position of last parsing error in input, 0 otherwise. </div><div class="ttdef"><b>Definition:</b> reader.h:687</div></div>
+<div class="ttc" id="namespacerapidjson_html_a81379eb4e94a0386d71d15fda882ebc9a5640cb00db7814b7f22be3683dda9835"><div class="ttname"><a href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a5640cb00db7814b7f22be3683dda9835">rapidjson::kParseDefaultFlags</a></div><div class="ttdoc">Default parse flags. Can be customized by defining RAPIDJSON_PARSE_DEFAULT_FLAGS </div><div class="ttdef"><b>Definition:</b> reader.h:158</div></div>
+<div class="ttc" id="namespacerapidjson_html_a81379eb4e94a0386d71d15fda882ebc9"><div class="ttname"><a href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9">rapidjson::ParseFlag</a></div><div class="ttdeci">ParseFlag</div><div class="ttdoc">Combination of parseFlags </div><div class="ttdef"><b>Definition:</b> reader.h:147</div></div>
<div class="ttc" id="namespacerapidjson_html_a81379eb4e94a0386d71d15fda882ebc9ab5d719b36aac626135d5d622d0d837c1"><div class="ttname"><a href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9ab5d719b36aac626135d5d622d0d837c1">rapidjson::kParseCommentsFlag</a></div><div class="ttdoc">Allow one-line (//) and multi-line (/**/) comments. </div><div class="ttdef"><b>Definition:</b> reader.h:154</div></div>
+<div class="ttc" id="classrapidjson_1_1_encoded_input_stream_html"><div class="ttname"><a href="classrapidjson_1_1_encoded_input_stream.html">rapidjson::EncodedInputStream</a></div><div class="ttdoc">Input byte stream wrapper with a statically bound encoding. </div><div class="ttdef"><b>Definition:</b> encodedstream.h:39</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60ab250f87c3d8454c579364b5a0f697a50">rapidjson::kParseErrorTermination</a></div><div class="ttdoc">Parsing was terminated. </div><div class="ttdef"><b>Definition:</b> error.h:88</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a240cebadea89f7282ab263b5a22c9805">rapidjson::kParseErrorNumberTooBig</a></div><div class="ttdoc">Number too big to be stored in double. </div><div class="ttdef"><b>Definition:</b> error.h:84</div></div>
+<div class="ttc" id="structrapidjson_1_1_base_reader_handler_html"><div class="ttname"><a href="structrapidjson_1_1_base_reader_handler.html">rapidjson::BaseReaderHandler</a></div><div class="ttdoc">Default implementation of Handler. </div><div class="ttdef"><b>Definition:</b> fwd.h:85</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a28a1c720ae63560780ccd992dc999ab7">rapidjson::kParseErrorNumberMissExponent</a></div><div class="ttdoc">Miss exponent in number. </div><div class="ttdef"><b>Definition:</b> error.h:86</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_reader_html_a90403a2c55dadf82fd2bb9d4c66b3280"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#a90403a2c55dadf82fd2bb9d4c66b3280">rapidjson::GenericReader::IterativeParseInit</a></div><div class="ttdeci">void IterativeParseInit()</div><div class="ttdoc">Initialize JSON text token-by-token parsing. </div><div class="ttdef"><b>Definition:</b> reader.h:606</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_reader_html_a90403a2c55dadf82fd2bb9d4c66b3280"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#a90403a2c55dadf82fd2bb9d4c66b3280">rapidjson::GenericReader::IterativeParseInit</a></div><div class="ttdeci">void IterativeParseInit()</div><div class="ttdoc">Initialize JSON text token-by-token parsing </div><div class="ttdef"><b>Definition:</b> reader.h:606</div></div>
<div class="ttc" id="namespacerapidjson_html_a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea"><div class="ttname"><a href="namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9a02748971d6ea0c5e22c69b8aa7f344ea">rapidjson::kParseInsituFlag</a></div><div class="ttdoc">In-situ(destructive) parsing. </div><div class="ttdef"><b>Definition:</b> reader.h:149</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_reader_html_a2bac14d193873d661d79ad000473a908"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#a2bac14d193873d661d79ad000473a908">rapidjson::GenericReader::Parse</a></div><div class="ttdeci">ParseResult Parse(InputStream &amp;is, Handler &amp;handler)</div><div class="ttdoc">Parse JSON text (with kParseDefaultFlags) </div><div class="ttdef"><b>Definition:</b> reader.h:599</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_reader_html_a40fd326bad7d7033f096b549cbf159db"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#a40fd326bad7d7033f096b549cbf159db">rapidjson::GenericReader::GetParseErrorCode</a></div><div class="ttdeci">ParseErrorCode GetParseErrorCode() const </div><div class="ttdoc">Get the ParseErrorCode of last parsing. </div><div class="ttdef"><b>Definition:</b> reader.h:684</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_reader_html_abac6611bec17167de50fede5cd5194ca"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#abac6611bec17167de50fede5cd5194ca">rapidjson::GenericReader::IterativeParseNext</a></div><div class="ttdeci">bool IterativeParseNext(InputStream &amp;is, Handler &amp;handler)</div><div class="ttdoc">Parse one token from JSON text. </div><div class="ttdef"><b>Definition:</b> reader.h:619</div></div>
-<div class="ttc" id="namespacerapidjson_html_a021f77051e9f85188fc2f71ff5a15ebc"><div class="ttname"><a href="namespacerapidjson.html#a021f77051e9f85188fc2f71ff5a15ebc">rapidjson::StringStream</a></div><div class="ttdeci">GenericStringStream&lt; UTF8&lt; char &gt; &gt; StringStream</div><div class="ttdoc">String stream with UTF8 encoding. </div><div class="ttdef"><b>Definition:</b> fwd.h:47</div></div>
+<div class="ttc" id="structrapidjson_1_1_u_t_f8_html"><div class="ttname"><a href="structrapidjson_1_1_u_t_f8.html">rapidjson::UTF8</a></div><div class="ttdoc">UTF-8 encoding. </div><div class="ttdef"><b>Definition:</b> encodings.h:96</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_reader_html_abac6611bec17167de50fede5cd5194ca"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html#abac6611bec17167de50fede5cd5194ca">rapidjson::GenericReader::IterativeParseNext</a></div><div class="ttdeci">bool IterativeParseNext(InputStream &amp;is, Handler &amp;handler)</div><div class="ttdoc">Parse one token from JSON text </div><div class="ttdef"><b>Definition:</b> reader.h:619</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a06183076357ebd9eca228666f614c286">rapidjson::kParseErrorDocumentEmpty</a></div><div class="ttdoc">The document is empty. </div><div class="ttdef"><b>Definition:</b> error.h:67</div></div>
-<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73">rapidjson::kParseErrorObjectMissCommaOrCurlyBracket</a></div><div class="ttdoc">Missing a comma or &#39;}&#39; after an object member. </div><div class="ttdef"><b>Definition:</b> error.h:74</div></div>
+<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a2a81a684f39fc882ec99f07e86343f73">rapidjson::kParseErrorObjectMissCommaOrCurlyBracket</a></div><div class="ttdoc">Missing a comma or &amp;#39;}&amp;#39; after an object member. </div><div class="ttdef"><b>Definition:</b> error.h:74</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gga7d3acf640886b1f2552dc8c4cd6dea60a62ce0f5c74e4ab34ac325d2adda8fa8f">rapidjson::kParseErrorStringInvalidEncoding</a></div><div class="ttdoc">Invalid encoding in string. </div><div class="ttdef"><b>Definition:</b> error.h:82</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_ga77005e892e6601599beaf421b0395c31"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga77005e892e6601599beaf421b0395c31">RAPIDJSON_PARSE_DEFAULT_FLAGS</a></div><div class="ttdeci">#define RAPIDJSON_PARSE_DEFAULT_FLAGS</div><div class="ttdoc">User-defined kParseDefaultFlags definition. </div><div class="ttdef"><b>Definition:</b> reader.h:141</div></div>
@@ -2367,7 +151,7 @@ $(document).ready(function(){initNavTree('reader_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="reader_8h.html">reader.h</a></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="reader_8h.html">reader.h</a></li>
</ul>
</div>
</body>
diff --git a/zh-cn/regex_8h_source.html b/zh-cn/regex_8h_source.html
index 895cb26e..fe7f6b04 100644
--- a/zh-cn/regex_8h_source.html
+++ b/zh-cn/regex_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/internal/regex.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('regex_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,741 +81,7 @@ $(document).ready(function(){initNavTree('regex_8h_source.html','');});
<div class="title">regex.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_INTERNAL_REGEX_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_INTERNAL_REGEX_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../allocators.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;../stream.h&quot;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;stack.h&quot;</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;RAPIDJSON_DIAG_OFF(switch-enum)</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_DIAG_OFF(implicit-fallthrough)</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#if __GNUC__ &gt;= 7</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;RAPIDJSON_DIAG_OFF(implicit-fallthrough)</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;RAPIDJSON_DIAG_OFF(4512) <span class="comment">// assignment operator could not be generated</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_REGEX_VERBOSE</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#define RAPIDJSON_REGEX_VERBOSE 0</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"></span><span class="comment">// DecodedStream</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceStream, <span class="keyword">typename</span> Encoding&gt;</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">class </span>DecodedStream {</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; DecodedStream(SourceStream&amp; ss) : ss_(ss), codepoint_() { Decode(); }</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">unsigned</span> Peek() { <span class="keywordflow">return</span> codepoint_; }</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">unsigned</span> Take() {</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">unsigned</span> c = codepoint_;</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span> (c) <span class="comment">// No further decoding when &#39;\0&#39;</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; Decode();</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> c;</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">void</span> Decode() {</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (!Encoding::Decode(ss_, &amp;codepoint_))</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; codepoint_ = 0;</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; SourceStream&amp; ss_;</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">unsigned</span> codepoint_;</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;};</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"></span><span class="comment">// GenericRegex</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> kRegexInvalidState = ~<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(0); <span class="comment">//!&lt; Represents an invalid index in GenericRegex::State::out, out1</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"></span><span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> kRegexInvalidRange = ~<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(0);</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keyword">class </span>GenericRegexSearch;</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment">//! Regular expression engine with subset of ECMAscript grammar.</span></div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> Supported regular expression syntax:</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> - \c ab Concatenation</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> - \c a|b Alternation</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> - \c a? Zero or one</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> - \c a* Zero or more</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> - \c a+ One or more</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> - \c a{3} Exactly 3 times</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> - \c a{3,} At least 3 times</span></div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> - \c a{3,5} 3 to 5 times</span></div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> - \c (ab) Grouping</span></div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> - \c ^a At the beginning</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> - \c a$ At the end</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> - \c . Any character</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> - \c [abc] Character classes</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> - \c [a-c] Character class range</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> - \c [a-z0-9_] Character class combination</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> - \c [^abc] Negated character classes</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> - \c [^a-c] Negated character class range</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> - \c [\b] Backspace (U+0008)</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> - \c \\| \\\\ ... Escape characters</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> - \c \\f Form feed (U+000C)</span></div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> - \c \\n Line feed (U+000A)</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> - \c \\r Carriage return (U+000D)</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> - \c \\t Tab (U+0009)</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> - \c \\v Vertical tab (U+000B)</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> \note This is a Thompson NFA engine, implemented with reference to </span></div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> Cox, Russ. &quot;Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby,...).&quot;, </span></div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"> https://swtch.com/~rsc/regexp/regexp1.html </span></div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator = CrtAllocator&gt;</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="keyword">class </span>GenericRegex {</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">typedef</span> Encoding EncodingType;</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>&gt; <span class="keyword">friend</span> <span class="keyword">class </span>GenericRegexSearch;</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; GenericRegex(<span class="keyword">const</span> Ch* source, Allocator* allocator = 0) : </div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; states_(allocator, 256), ranges_(allocator, 256), root_(kRegexInvalidState), stateCount_(), rangeCount_(), </div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; anchorBegin_(), anchorEnd_()</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; GenericStringStream&lt;Encoding&gt; ss(source);</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; DecodedStream&lt;GenericStringStream&lt;Encoding&gt;, Encoding&gt; ds(ss);</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; Parse(ds);</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; ~GenericRegex() {}</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordtype">bool</span> IsValid()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> root_ != kRegexInvalidState;</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">enum</span> Operator {</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; kZeroOrOne,</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; kZeroOrMore,</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; kOneOrMore,</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; kConcatenation,</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; kAlternation,</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; kLeftParenthesis</div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; };</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> kAnyCharacterClass = 0xFFFFFFFF; <span class="comment">//!&lt; For &#39;.&#39;</span></div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> kRangeCharacterClass = 0xFFFFFFFE;</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> kRangeNegationFlag = 0x80000000;</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">struct </span>Range {</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordtype">unsigned</span> start; <span class="comment">// </span></div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordtype">unsigned</span> end;</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> next;</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; };</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">struct </span>State {</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> out; <span class="comment">//!&lt; Equals to kInvalid for matching state</span></div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> out1; <span class="comment">//!&lt; Equals to non-kInvalid for split</span></div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> rangeStart;</div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; };</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">struct </span>Frag {</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; Frag(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> o, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> m) : start(s), out(o), minIndex(m) {}</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> start;</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> out; <span class="comment">//!&lt; link-list of all output states</span></div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> minIndex;</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; };</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; State&amp; GetState(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) {</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(index &lt; stateCount_);</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> states_.template Bottom&lt;State&gt;()[index];</div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keyword">const</span> State&amp; GetState(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(index &lt; stateCount_);</div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> states_.template Bottom&lt;State&gt;()[index];</div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; Range&amp; GetRange(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) {</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(index &lt; rangeCount_);</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> ranges_.template Bottom&lt;Range&gt;()[index];</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keyword">const</span> Range&amp; GetRange(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(index &lt; rangeCount_);</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> ranges_.template Bottom&lt;Range&gt;()[index];</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordtype">void</span> Parse(DecodedStream&lt;InputStream, Encoding&gt;&amp; ds) {</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; Allocator allocator;</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; Stack&lt;Allocator&gt; operandStack(&amp;allocator, 256); <span class="comment">// Frag</span></div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; Stack&lt;Allocator&gt; operatorStack(&amp;allocator, 256); <span class="comment">// Operator</span></div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; Stack&lt;Allocator&gt; atomCountStack(&amp;allocator, 256); <span class="comment">// unsigned (Atom per parenthesis)</span></div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; *atomCountStack.template Push&lt;unsigned&gt;() = 0;</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">while</span> (ds.Peek() != 0) {</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">switch</span> (codepoint = ds.Take()) {</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;^&#39;</span>:</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; anchorBegin_ = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;$&#39;</span>:</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; anchorEnd_ = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;|&#39;</span>:</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">while</span> (!operatorStack.Empty() &amp;&amp; *operatorStack.template Top&lt;Operator&gt;() &lt; kAlternation)</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">if</span> (!Eval(operandStack, *operatorStack.template Pop&lt;Operator&gt;(1)))</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; *operatorStack.template Push&lt;Operator&gt;() = kAlternation;</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; *atomCountStack.template Top&lt;unsigned&gt;() = 0;</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;(&#39;</span>:</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; *operatorStack.template Push&lt;Operator&gt;() = kLeftParenthesis;</div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; *atomCountStack.template Push&lt;unsigned&gt;() = 0;</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;)&#39;</span>:</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">while</span> (!operatorStack.Empty() &amp;&amp; *operatorStack.template Top&lt;Operator&gt;() != kLeftParenthesis)</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (!Eval(operandStack, *operatorStack.template Pop&lt;Operator&gt;(1)))</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (operatorStack.Empty())</div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; operatorStack.template Pop&lt;Operator&gt;(1);</div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; atomCountStack.template Pop&lt;unsigned&gt;(1);</div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; ImplicitConcatenation(atomCountStack, operatorStack);</div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;?&#39;</span>:</div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> (!Eval(operandStack, kZeroOrOne))</div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;*&#39;</span>:</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span> (!Eval(operandStack, kZeroOrMore))</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;+&#39;</span>:</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">if</span> (!Eval(operandStack, kOneOrMore))</div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;{&#39;</span>:</div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordtype">unsigned</span> n, m;</div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span> (!ParseUnsigned(ds, &amp;n))</div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span> (ds.Peek() == <span class="charliteral">&#39;,&#39;</span>) {</div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; ds.Take();</div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (ds.Peek() == <span class="charliteral">&#39;}&#39;</span>)</div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; m = kInfinityQuantifier;</div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!ParseUnsigned(ds, &amp;m) || m &lt; n)</div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; m = n;</div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (!EvalQuantifier(operandStack, n, m) || ds.Peek() != <span class="charliteral">&#39;}&#39;</span>)</div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; ds.Take();</div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;.&#39;</span>:</div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; PushOperand(operandStack, kAnyCharacterClass);</div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; ImplicitConcatenation(atomCountStack, operatorStack);</div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;[&#39;</span>:</div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> range;</div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (!ParseRange(ds, &amp;range))</div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s = NewState(kRegexInvalidState, kRegexInvalidState, kRangeCharacterClass);</div>
-<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; GetState(s).rangeStart = range;</div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(s, s, s);</div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div>
-<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; ImplicitConcatenation(atomCountStack, operatorStack);</div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div>
-<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\\&#39;</span>: <span class="comment">// Escape character</span></div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> (!CharacterEscape(ds, &amp;codepoint))</div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// Unsupported escape character</span></div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="comment">// fall through to default</span></div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// Pattern character</span></div>
-<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; PushOperand(operandStack, codepoint);</div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; ImplicitConcatenation(atomCountStack, operatorStack);</div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div>
-<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">while</span> (!operatorStack.Empty())</div>
-<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">if</span> (!Eval(operandStack, *operatorStack.template Pop&lt;Operator&gt;(1)))</div>
-<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div>
-<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="comment">// Link the operand to matching state.</span></div>
-<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (operandStack.GetSize() == <span class="keyword">sizeof</span>(Frag)) {</div>
-<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; Frag* e = operandStack.template Pop&lt;Frag&gt;(1);</div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; Patch(e-&gt;out, NewState(kRegexInvalidState, kRegexInvalidState, 0));</div>
-<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; root_ = e-&gt;start;</div>
-<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div>
-<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="preprocessor">#if RAPIDJSON_REGEX_VERBOSE</span></div>
-<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; printf(<span class="stringliteral">&quot;root: %d\n&quot;</span>, root_);</div>
-<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; stateCount_ ; i++) {</div>
-<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; State&amp; s = GetState(i);</div>
-<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; printf(<span class="stringliteral">&quot;[%2d] out: %2d out1: %2d c: &#39;%c&#39;\n&quot;</span>, i, s.out, s.out1, (<span class="keywordtype">char</span>)s.codepoint);</div>
-<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div>
-<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; printf(<span class="stringliteral">&quot;\n&quot;</span>);</div>
-<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div>
-<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div>
-<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> NewState(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> out, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> out1, <span class="keywordtype">unsigned</span> codepoint) {</div>
-<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; State* s = states_.template Push&lt;State&gt;();</div>
-<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; s-&gt;out = out;</div>
-<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; s-&gt;out1 = out1;</div>
-<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; s-&gt;codepoint = codepoint;</div>
-<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; s-&gt;rangeStart = kRegexInvalidRange;</div>
-<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> stateCount_++;</div>
-<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div>
-<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div>
-<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordtype">void</span> PushOperand(Stack&lt;Allocator&gt;&amp; operandStack, <span class="keywordtype">unsigned</span> codepoint) {</div>
-<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s = NewState(kRegexInvalidState, kRegexInvalidState, codepoint);</div>
-<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(s, s, s);</div>
-<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; }</div>
-<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div>
-<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordtype">void</span> ImplicitConcatenation(Stack&lt;Allocator&gt;&amp; atomCountStack, Stack&lt;Allocator&gt;&amp; operatorStack) {</div>
-<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span> (*atomCountStack.template Top&lt;unsigned&gt;())</div>
-<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; *operatorStack.template Push&lt;Operator&gt;() = kConcatenation;</div>
-<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; (*atomCountStack.template Top&lt;unsigned&gt;())++;</div>
-<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div>
-<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div>
-<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> Append(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> l1, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> l2) {</div>
-<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> old = l1;</div>
-<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">while</span> (GetState(l1).out != kRegexInvalidState)</div>
-<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; l1 = GetState(l1).out;</div>
-<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; GetState(l1).out = l2;</div>
-<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">return</span> old;</div>
-<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div>
-<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div>
-<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordtype">void</span> Patch(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> l, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s) {</div>
-<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> next; l != kRegexInvalidState; l = next) {</div>
-<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; next = GetState(l).out;</div>
-<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; GetState(l).out = s;</div>
-<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div>
-<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div>
-<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div>
-<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordtype">bool</span> Eval(Stack&lt;Allocator&gt;&amp; operandStack, Operator op) {</div>
-<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">switch</span> (op) {</div>
-<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">case</span> kConcatenation:</div>
-<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(operandStack.GetSize() &gt;= <span class="keyword">sizeof</span>(Frag) * 2);</div>
-<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div>
-<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; Frag e2 = *operandStack.template Pop&lt;Frag&gt;(1);</div>
-<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; Frag e1 = *operandStack.template Pop&lt;Frag&gt;(1);</div>
-<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; Patch(e1.out, e2.start);</div>
-<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(e1.start, e2.out, Min(e1.minIndex, e2.minIndex));</div>
-<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div>
-<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div>
-<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">case</span> kAlternation:</div>
-<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">if</span> (operandStack.GetSize() &gt;= <span class="keyword">sizeof</span>(Frag) * 2) {</div>
-<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; Frag e2 = *operandStack.template Pop&lt;Frag&gt;(1);</div>
-<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; Frag e1 = *operandStack.template Pop&lt;Frag&gt;(1);</div>
-<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s = NewState(e1.start, e2.start, 0);</div>
-<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(s, Append(e1.out, e2.out), Min(e1.minIndex, e2.minIndex));</div>
-<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div>
-<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div>
-<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">case</span> kZeroOrOne:</div>
-<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span> (operandStack.GetSize() &gt;= <span class="keyword">sizeof</span>(Frag)) {</div>
-<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; Frag e = *operandStack.template Pop&lt;Frag&gt;(1);</div>
-<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s = NewState(kRegexInvalidState, e.start, 0);</div>
-<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(s, Append(e.out, s), e.minIndex);</div>
-<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div>
-<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div>
-<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">case</span> kZeroOrMore:</div>
-<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span> (operandStack.GetSize() &gt;= <span class="keyword">sizeof</span>(Frag)) {</div>
-<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; Frag e = *operandStack.template Pop&lt;Frag&gt;(1);</div>
-<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s = NewState(kRegexInvalidState, e.start, 0);</div>
-<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; Patch(e.out, s);</div>
-<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(s, s, e.minIndex);</div>
-<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</div>
-<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div>
-<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">default</span>: </div>
-<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(op == kOneOrMore);</div>
-<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">if</span> (operandStack.GetSize() &gt;= <span class="keyword">sizeof</span>(Frag)) {</div>
-<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; Frag e = *operandStack.template Pop&lt;Frag&gt;(1);</div>
-<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s = NewState(kRegexInvalidState, e.start, 0);</div>
-<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; Patch(e.out, s);</div>
-<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(e.start, s, e.minIndex);</div>
-<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div>
-<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div>
-<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div>
-<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div>
-<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordtype">bool</span> EvalQuantifier(Stack&lt;Allocator&gt;&amp; operandStack, <span class="keywordtype">unsigned</span> n, <span class="keywordtype">unsigned</span> m) {</div>
-<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(n &lt;= m);</div>
-<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(operandStack.GetSize() &gt;= <span class="keyword">sizeof</span>(Frag));</div>
-<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;</div>
-<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">if</span> (n == 0) {</div>
-<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">if</span> (m == 0) <span class="comment">// a{0} not support</span></div>
-<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (m == kInfinityQuantifier)</div>
-<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; Eval(operandStack, kZeroOrMore); <span class="comment">// a{0,} -&gt; a*</span></div>
-<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; Eval(operandStack, kZeroOrOne); <span class="comment">// a{0,5} -&gt; a?</span></div>
-<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; m - 1; i++)</div>
-<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; CloneTopOperand(operandStack); <span class="comment">// a{0,5} -&gt; a? a? a? a? a?</span></div>
-<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; m - 1; i++)</div>
-<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; Eval(operandStack, kConcatenation); <span class="comment">// a{0,5} -&gt; a?a?a?a?a?</span></div>
-<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div>
-<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div>
-<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div>
-<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; n - 1; i++) <span class="comment">// a{3} -&gt; a a a</span></div>
-<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; CloneTopOperand(operandStack);</div>
-<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;</div>
-<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span> (m == kInfinityQuantifier)</div>
-<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; Eval(operandStack, kOneOrMore); <span class="comment">// a{3,} -&gt; a a a+</span></div>
-<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (m &gt; n) {</div>
-<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; CloneTopOperand(operandStack); <span class="comment">// a{3,5} -&gt; a a a a</span></div>
-<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; Eval(operandStack, kZeroOrOne); <span class="comment">// a{3,5} -&gt; a a a a?</span></div>
-<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = n; i &lt; m - 1; i++)</div>
-<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; CloneTopOperand(operandStack); <span class="comment">// a{3,5} -&gt; a a a a? a?</span></div>
-<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = n; i &lt; m; i++)</div>
-<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; Eval(operandStack, kConcatenation); <span class="comment">// a{3,5} -&gt; a a aa?a?</span></div>
-<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div>
-<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div>
-<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; n - 1; i++)</div>
-<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; Eval(operandStack, kConcatenation); <span class="comment">// a{3} -&gt; aaa, a{3,} -&gt; aaa+, a{3.5} -&gt; aaaa?a?</span></div>
-<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div>
-<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div>
-<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;</div>
-<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keyword">static</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> Min(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> a, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> b) { <span class="keywordflow">return</span> a &lt; b ? a : b; }</div>
-<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div>
-<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordtype">void</span> CloneTopOperand(Stack&lt;Allocator&gt;&amp; operandStack) {</div>
-<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keyword">const</span> Frag src = *operandStack.template Top&lt;Frag&gt;(); <span class="comment">// Copy constructor to prevent invalidation</span></div>
-<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count = stateCount_ - src.minIndex; <span class="comment">// Assumes top operand contains states in [src-&gt;minIndex, stateCount_)</span></div>
-<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; State* s = states_.template Push&lt;State&gt;(count);</div>
-<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; memcpy(s, &amp;GetState(src.minIndex), count * <span class="keyword">sizeof</span>(State));</div>
-<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> j = 0; j &lt; count; j++) {</div>
-<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">if</span> (s[j].out != kRegexInvalidState)</div>
-<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; s[j].out += count;</div>
-<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span> (s[j].out1 != kRegexInvalidState)</div>
-<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; s[j].out1 += count;</div>
-<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div>
-<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(src.start + count, src.out + count, src.minIndex + count);</div>
-<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; stateCount_ += count;</div>
-<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div>
-<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div>
-<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordtype">bool</span> ParseUnsigned(DecodedStream&lt;InputStream, Encoding&gt;&amp; ds, <span class="keywordtype">unsigned</span>* u) {</div>
-<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordtype">unsigned</span> r = 0;</div>
-<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">if</span> (ds.Peek() &lt; <span class="charliteral">&#39;0&#39;</span> || ds.Peek() &gt; <span class="charliteral">&#39;9&#39;</span>)</div>
-<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">while</span> (ds.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; ds.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>) {</div>
-<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span> (r &gt;= 429496729 &amp;&amp; ds.Peek() &gt; <span class="charliteral">&#39;5&#39;</span>) <span class="comment">// 2^32 - 1 = 4294967295</span></div>
-<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// overflow</span></div>
-<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; r = r * 10 + (ds.Take() - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; }</div>
-<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; *u = r;</div>
-<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div>
-<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div>
-<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordtype">bool</span> ParseRange(DecodedStream&lt;InputStream, Encoding&gt;&amp; ds, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>* range) {</div>
-<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordtype">bool</span> isBegin = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordtype">bool</span> negate = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordtype">int</span> step = 0;</div>
-<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> start = kRegexInvalidRange;</div>
-<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> current = kRegexInvalidRange;</div>
-<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div>
-<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">while</span> ((codepoint = ds.Take()) != 0) {</div>
-<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">if</span> (isBegin) {</div>
-<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; isBegin = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">if</span> (codepoint == <span class="charliteral">&#39;^&#39;</span>) {</div>
-<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; negate = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">continue</span>;</div>
-<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; }</div>
-<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div>
-<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;</div>
-<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">switch</span> (codepoint) {</div>
-<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;]&#39;</span>:</div>
-<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span> (start == kRegexInvalidRange)</div>
-<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Error: nothing inside []</span></div>
-<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">if</span> (step == 2) { <span class="comment">// Add trailing &#39;-&#39;</span></div>
-<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> r = NewRange(<span class="charliteral">&#39;-&#39;</span>);</div>
-<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(current != kRegexInvalidRange);</div>
-<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; GetRange(current).next = r;</div>
-<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; }</div>
-<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span> (negate)</div>
-<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; GetRange(start).start |= kRangeNegationFlag;</div>
-<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; *range = start;</div>
-<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;</div>
-<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\\&#39;</span>:</div>
-<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">if</span> (ds.Peek() == <span class="charliteral">&#39;b&#39;</span>) {</div>
-<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; ds.Take();</div>
-<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; codepoint = 0x0008; <span class="comment">// Escape backspace character</span></div>
-<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div>
-<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!CharacterEscape(ds, &amp;codepoint))</div>
-<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="comment">// fall through to default</span></div>
-<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;</div>
-<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">switch</span> (step) {</div>
-<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">case</span> 1:</div>
-<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">if</span> (codepoint == <span class="charliteral">&#39;-&#39;</span>) {</div>
-<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; step++;</div>
-<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; }</div>
-<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="comment">// fall through to step 0 for other characters</span></div>
-<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;</div>
-<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">case</span> 0:</div>
-<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; {</div>
-<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> r = NewRange(codepoint);</div>
-<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span> (current != kRegexInvalidRange)</div>
-<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; GetRange(current).next = r;</div>
-<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">if</span> (start == kRegexInvalidRange)</div>
-<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; start = r;</div>
-<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; current = r;</div>
-<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div>
-<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; step = 1;</div>
-<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;</div>
-<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(step == 2);</div>
-<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; GetRange(current).end = codepoint;</div>
-<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; step = 0;</div>
-<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</div>
-<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div>
-<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; }</div>
-<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; }</div>
-<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; </div>
-<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> NewRange(<span class="keywordtype">unsigned</span> codepoint) {</div>
-<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; Range* r = ranges_.template Push&lt;Range&gt;();</div>
-<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; r-&gt;start = r-&gt;end = codepoint;</div>
-<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; r-&gt;next = kRegexInvalidRange;</div>
-<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">return</span> rangeCount_++;</div>
-<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div>
-<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div>
-<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordtype">bool</span> CharacterEscape(DecodedStream&lt;InputStream, Encoding&gt;&amp; ds, <span class="keywordtype">unsigned</span>* escapedCodepoint) {</div>
-<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div>
-<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">switch</span> (codepoint = ds.Take()) {</div>
-<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;^&#39;</span>:</div>
-<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;$&#39;</span>:</div>
-<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;|&#39;</span>:</div>
-<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;(&#39;</span>:</div>
-<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;)&#39;</span>:</div>
-<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;?&#39;</span>:</div>
-<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;*&#39;</span>:</div>
-<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;+&#39;</span>:</div>
-<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;.&#39;</span>:</div>
-<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;[&#39;</span>:</div>
-<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;]&#39;</span>:</div>
-<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;{&#39;</span>:</div>
-<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;}&#39;</span>:</div>
-<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\\&#39;</span>:</div>
-<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; *escapedCodepoint = codepoint; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;f&#39;</span>: *escapedCodepoint = 0x000C; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;n&#39;</span>: *escapedCodepoint = 0x000A; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;r&#39;</span>: *escapedCodepoint = 0x000D; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;t&#39;</span>: *escapedCodepoint = 0x0009; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;v&#39;</span>: *escapedCodepoint = 0x000B; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">default</span>:</div>
-<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Unsupported escape character</span></div>
-<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div>
-<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div>
-<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;</div>
-<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; Stack&lt;Allocator&gt; states_;</div>
-<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; Stack&lt;Allocator&gt; ranges_;</div>
-<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> root_;</div>
-<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> stateCount_;</div>
-<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> rangeCount_;</div>
-<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;</div>
-<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> kInfinityQuantifier = ~0u;</div>
-<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;</div>
-<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="comment">// For SearchWithAnchoring()</span></div>
-<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordtype">bool</span> anchorBegin_;</div>
-<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordtype">bool</span> anchorEnd_;</div>
-<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;};</div>
-<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;</div>
-<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> RegexType, <span class="keyword">typename</span> Allocator = CrtAllocator&gt;</div>
-<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="keyword">class </span>GenericRegexSearch {</div>
-<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> RegexType::EncodingType Encoding;</div>
-<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div>
-<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div>
-<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; GenericRegexSearch(<span class="keyword">const</span> RegexType&amp; regex, Allocator* allocator = 0) : </div>
-<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; regex_(regex), allocator_(allocator), ownAllocator_(0),</div>
-<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; state0_(allocator, 0), state1_(allocator, 0), stateSet_()</div>
-<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {</div>
-<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(regex_.IsValid());</div>
-<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">if</span> (!allocator_)</div>
-<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; ownAllocator_ = allocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(Allocator)();</div>
-<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; stateSet_ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span>*<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(GetStateSetSize()));</div>
-<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; state0_.template Reserve&lt;SizeType&gt;(regex_.stateCount_);</div>
-<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; state1_.template Reserve&lt;SizeType&gt;(regex_.stateCount_);</div>
-<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; }</div>
-<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;</div>
-<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; ~GenericRegexSearch() {</div>
-<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; Allocator::Free(stateSet_);</div>
-<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a>(ownAllocator_);</div>
-<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; }</div>
-<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;</div>
-<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordtype">bool</span> Match(InputStream&amp; is) {</div>
-<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">return</span> SearchWithAnchoring(is, <span class="keyword">true</span>, <span class="keyword">true</span>);</div>
-<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div>
-<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div>
-<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordtype">bool</span> Match(<span class="keyword">const</span> Ch* s) {</div>
-<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; GenericStringStream&lt;Encoding&gt; is(s);</div>
-<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">return</span> Match(is);</div>
-<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; }</div>
-<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;</div>
-<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordtype">bool</span> Search(InputStream&amp; is) {</div>
-<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">return</span> SearchWithAnchoring(is, regex_.anchorBegin_, regex_.anchorEnd_);</div>
-<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div>
-<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;</div>
-<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordtype">bool</span> Search(<span class="keyword">const</span> Ch* s) {</div>
-<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; GenericStringStream&lt;Encoding&gt; is(s);</div>
-<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">return</span> Search(is);</div>
-<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div>
-<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;</div>
-<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> RegexType::State State;</div>
-<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> RegexType::Range Range;</div>
-<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;</div>
-<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div>
-<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordtype">bool</span> SearchWithAnchoring(InputStream&amp; is, <span class="keywordtype">bool</span> anchorBegin, <span class="keywordtype">bool</span> anchorEnd) {</div>
-<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; DecodedStream&lt;InputStream, Encoding&gt; ds(is);</div>
-<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;</div>
-<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; state0_.Clear();</div>
-<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; Stack&lt;Allocator&gt; *current = &amp;state0_, *next = &amp;state1_;</div>
-<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> stateSetSize = GetStateSetSize();</div>
-<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; std::memset(stateSet_, 0, stateSetSize);</div>
-<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;</div>
-<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordtype">bool</span> matched = AddState(*current, regex_.root_);</div>
-<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div>
-<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">while</span> (!current-&gt;Empty() &amp;&amp; (codepoint = ds.Take()) != 0) {</div>
-<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; std::memset(stateSet_, 0, stateSetSize);</div>
-<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; next-&gt;Clear();</div>
-<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; matched = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>* s = current-&gt;template Bottom&lt;SizeType&gt;(); s != current-&gt;template End&lt;SizeType&gt;(); ++s) {</div>
-<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keyword">const</span> State&amp; sr = regex_.GetState(*s);</div>
-<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">if</span> (sr.codepoint == codepoint ||</div>
-<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; sr.codepoint == RegexType::kAnyCharacterClass || </div>
-<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; (sr.codepoint == RegexType::kRangeCharacterClass &amp;&amp; MatchRange(sr.rangeStart, codepoint)))</div>
-<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; {</div>
-<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; matched = AddState(*next, sr.out) || matched;</div>
-<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">if</span> (!anchorEnd &amp;&amp; matched)</div>
-<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div>
-<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">if</span> (!anchorBegin)</div>
-<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; AddState(*next, regex_.root_);</div>
-<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; }</div>
-<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; internal::Swap(current, next);</div>
-<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div>
-<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;</div>
-<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">return</span> matched;</div>
-<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; }</div>
-<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;</div>
-<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordtype">size_t</span> GetStateSetSize()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">return</span> (regex_.stateCount_ + 31) / 32 * 4;</div>
-<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div>
-<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;</div>
-<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="comment">// Return whether the added states is a match state</span></div>
-<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordtype">bool</span> AddState(Stack&lt;Allocator&gt;&amp; l, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) {</div>
-<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(index != kRegexInvalidState);</div>
-<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;</div>
-<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keyword">const</span> State&amp; s = regex_.GetState(index);</div>
-<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">if</span> (s.out1 != kRegexInvalidState) { <span class="comment">// Split</span></div>
-<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordtype">bool</span> matched = AddState(l, s.out);</div>
-<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> AddState(l, s.out1) || matched;</div>
-<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div>
-<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!(stateSet_[index &gt;&gt; 5] &amp; (1u &lt;&lt; (index &amp; 31)))) {</div>
-<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; stateSet_[index &gt;&gt; 5] |= (1u &lt;&lt; (index &amp; 31));</div>
-<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; *l.template PushUnsafe&lt;SizeType&gt;() = index;</div>
-<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div>
-<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">return</span> s.out == kRegexInvalidState; <span class="comment">// by using PushUnsafe() above, we can ensure s is not validated due to reallocation.</span></div>
-<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; }</div>
-<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;</div>
-<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordtype">bool</span> MatchRange(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> rangeIndex, <span class="keywordtype">unsigned</span> codepoint)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordtype">bool</span> yes = (regex_.GetRange(rangeIndex).start &amp; RegexType::kRangeNegationFlag) == 0;</div>
-<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">while</span> (rangeIndex != kRegexInvalidRange) {</div>
-<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keyword">const</span> Range&amp; r = regex_.GetRange(rangeIndex);</div>
-<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">if</span> (codepoint &gt;= (r.start &amp; ~RegexType::kRangeNegationFlag) &amp;&amp; codepoint &lt;= r.end)</div>
-<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">return</span> yes;</div>
-<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; rangeIndex = r.next;</div>
-<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; }</div>
-<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">return</span> !yes;</div>
-<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div>
-<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;</div>
-<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keyword">const</span> RegexType&amp; regex_;</div>
-<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; Allocator* allocator_;</div>
-<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; Allocator* ownAllocator_;</div>
-<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; Stack&lt;Allocator&gt; state0_;</div>
-<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; Stack&lt;Allocator&gt; state1_;</div>
-<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; uint32_t* stateSet_;</div>
-<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;};</div>
-<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;</div>
-<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;<span class="keyword">typedef</span> GenericRegex&lt;UTF8&lt;&gt; &gt; Regex;</div>
-<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;<span class="keyword">typedef</span> GenericRegexSearch&lt;Regex&gt; RegexSearch;</div>
-<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;</div>
-<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;</div>
-<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;</div>
-<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
-<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;</div>
-<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_INTERNAL_REGEX_H_</span></div>
-<div class="ttc" id="namespacerapidjson_html_a44eb33eaa523e36d466b1ced64b85c84"><div class="ttname"><a href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">rapidjson::SizeType</a></div><div class="ttdeci">unsigned SizeType</div><div class="ttdoc">Size type (for string lengths, array sizes, etc.) </div><div class="ttdef"><b>Definition:</b> rapidjson.h:389</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_INTERNAL_REGEX_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_INTERNAL_REGEX_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../allocators.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;../stream.h&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;stack.h&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;RAPIDJSON_DIAG_OFF(<span class="keywordflow">switch</span>-<span class="keyword">enum</span>)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_DIAG_OFF(implicit-fallthrough)</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#ifdef __GNUC__</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#if __GNUC__ &gt;= 7</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;RAPIDJSON_DIAG_OFF(implicit-fallthrough)</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;RAPIDJSON_DIAG_OFF(4512) <span class="comment">// assignment operator could not be generated</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_REGEX_VERBOSE</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#define RAPIDJSON_REGEX_VERBOSE 0</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"></span><span class="comment">// DecodedStream</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SourceStream, <span class="keyword">typename</span> Encoding&gt;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="keyword">class </span>DecodedStream {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; DecodedStream(SourceStream&amp; ss) : ss_(ss), codepoint_() { Decode(); }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">unsigned</span> Peek() { <span class="keywordflow">return</span> codepoint_; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">unsigned</span> Take() {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">unsigned</span> c = codepoint_;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span> (c) <span class="comment">// No further decoding when &#39;\0&#39;</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; Decode();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> c;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordtype">void</span> Decode() {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">if</span> (!Encoding::Decode(ss_, &amp;codepoint_))</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; codepoint_ = 0;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; SourceStream&amp; ss_;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">unsigned</span> codepoint_;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;};</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"></span><span class="comment">// GenericRegex</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> kRegexInvalidState = ~<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(0); <span class="comment">//!&lt; Represents an invalid index in GenericRegex::State::out, out1</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"></span><span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> kRegexInvalidRange = ~<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(0);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keyword">class </span>GenericRegexSearch;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment">//! Regular expression engine with subset of ECMAscript grammar.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> Supported regular expression syntax:</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> - \c ab Concatenation</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> - \c a|b Alternation</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> - \c a? Zero or one</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment"> - \c a* Zero or more</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"> - \c a+ One or more</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment"> - \c a{3} Exactly 3 times</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment"> - \c a{3,} At least 3 times</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment"> - \c a{3,5} 3 to 5 times</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"> - \c (ab) Grouping</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"> - \c ^a At the beginning</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"> - \c a$ At the end</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> - \c . Any character</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"> - \c [abc] Character classes</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> - \c [a-c] Character class range</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> - \c [a-z0-9_] Character class combination</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> - \c [^abc] Negated character classes</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> - \c [^a-c] Negated character class range</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> - \c [\b] Backspace (U+0008)</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> - \c \\| \\\\ ... Escape characters</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> - \c \\f Form feed (U+000C)</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> - \c \\n Line feed (U+000A)</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"> - \c \\r Carriage return (U+000D)</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> - \c \\t Tab (U+0009)</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"> - \c \\v Vertical tab (U+000B)</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> \note This is a Thompson NFA engine, implemented with reference to </span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> Cox, Russ. &quot;Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby,...).&quot;, </span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"> https://swtch.com/~rsc/regexp/regexp1.html </span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator = CrtAllocator&gt;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="keyword">class </span>GenericRegex {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keyword">typedef</span> Encoding EncodingType;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>&gt; <span class="keyword">friend</span> <span class="keyword">class </span>GenericRegexSearch;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; GenericRegex(<span class="keyword">const</span> Ch* source, Allocator* allocator = 0) : </div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; states_(allocator, 256), ranges_(allocator, 256), root_(kRegexInvalidState), stateCount_(), rangeCount_(), </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; anchorBegin_(), anchorEnd_()</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; GenericStringStream&lt;Encoding&gt; ss(source);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; DecodedStream&lt;GenericStringStream&lt;Encoding&gt;, Encoding&gt; ds(ss);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; Parse(ds);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; ~GenericRegex() {}</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordtype">bool</span> IsValid()<span class="keyword"> const </span>{</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> root_ != kRegexInvalidState;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">enum</span> Operator {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; kZeroOrOne,</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; kZeroOrMore,</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; kOneOrMore,</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; kConcatenation,</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; kAlternation,</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; kLeftParenthesis</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; };</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> kAnyCharacterClass = 0xFFFFFFFF; <span class="comment">//!&lt; For &#39;.&#39;</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment"></span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> kRangeCharacterClass = 0xFFFFFFFE;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> kRangeNegationFlag = 0x80000000;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">struct </span>Range {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordtype">unsigned</span> start; <span class="comment">// </span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordtype">unsigned</span> end;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> next;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; };</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">struct </span>State {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> out; <span class="comment">//!&lt; Equals to kInvalid for matching state</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> out1; <span class="comment">//!&lt; Equals to non-kInvalid for split</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> rangeStart;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; };</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">struct </span>Frag {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; Frag(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> o, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> m) : start(s), out(o), minIndex(m) {}</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> start;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> out; <span class="comment">//!&lt; link-list of all output states</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> minIndex;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; };</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; State&amp; GetState(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(index &lt; stateCount_);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> states_.template Bottom&lt;State&gt;()[index];</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keyword">const</span> State&amp; GetState(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index)<span class="keyword"> const </span>{</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(index &lt; stateCount_);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordflow">return</span> states_.template Bottom&lt;State&gt;()[index];</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; Range&amp; GetRange(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) {</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(index &lt; rangeCount_);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> ranges_.template Bottom&lt;Range&gt;()[index];</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keyword">const</span> Range&amp; GetRange(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index)<span class="keyword"> const </span>{</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(index &lt; rangeCount_);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> ranges_.template Bottom&lt;Range&gt;()[index];</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordtype">void</span> Parse(DecodedStream&lt;InputStream, Encoding&gt;&amp; ds) {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; Allocator allocator;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; Stack&lt;Allocator&gt; operandStack(&amp;allocator, 256); <span class="comment">// Frag</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; Stack&lt;Allocator&gt; operatorStack(&amp;allocator, 256); <span class="comment">// Operator</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; Stack&lt;Allocator&gt; atomCountStack(&amp;allocator, 256); <span class="comment">// unsigned (Atom per parenthesis)</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; *atomCountStack.template Push&lt;unsigned&gt;() = 0;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">while</span> (ds.Peek() != 0) {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">switch</span> (codepoint = ds.Take()) {</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;^&#39;</span>:</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; anchorBegin_ = <span class="keyword">true</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;$&#39;</span>:</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; anchorEnd_ = <span class="keyword">true</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;|&#39;</span>:</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">while</span> (!operatorStack.Empty() &amp;&amp; *operatorStack.template Top&lt;Operator&gt;() &lt; kAlternation)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">if</span> (!Eval(operandStack, *operatorStack.template Pop&lt;Operator&gt;(1)))</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; *operatorStack.template Push&lt;Operator&gt;() = kAlternation;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; *atomCountStack.template Top&lt;unsigned&gt;() = 0;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;(&#39;</span>:</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; *operatorStack.template Push&lt;Operator&gt;() = kLeftParenthesis;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; *atomCountStack.template Push&lt;unsigned&gt;() = 0;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;)&#39;</span>:</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">while</span> (!operatorStack.Empty() &amp;&amp; *operatorStack.template Top&lt;Operator&gt;() != kLeftParenthesis)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">if</span> (!Eval(operandStack, *operatorStack.template Pop&lt;Operator&gt;(1)))</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">if</span> (operatorStack.Empty())</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; operatorStack.template Pop&lt;Operator&gt;(1);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; atomCountStack.template Pop&lt;unsigned&gt;(1);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; ImplicitConcatenation(atomCountStack, operatorStack);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;?&#39;</span>:</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">if</span> (!Eval(operandStack, kZeroOrOne))</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;*&#39;</span>:</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span> (!Eval(operandStack, kZeroOrMore))</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;+&#39;</span>:</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">if</span> (!Eval(operandStack, kOneOrMore))</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;{&#39;</span>:</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordtype">unsigned</span> n, m;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span> (!ParseUnsigned(ds, &amp;n))</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span> (ds.Peek() == <span class="charliteral">&#39;,&#39;</span>) {</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; ds.Take();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (ds.Peek() == <span class="charliteral">&#39;}&#39;</span>)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; m = kInfinityQuantifier;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!ParseUnsigned(ds, &amp;m) || m &lt; n)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; m = n;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (!EvalQuantifier(operandStack, n, m) || ds.Peek() != <span class="charliteral">&#39;}&#39;</span>)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; ds.Take();</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;.&#39;</span>:</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; PushOperand(operandStack, kAnyCharacterClass);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; ImplicitConcatenation(atomCountStack, operatorStack);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;[&#39;</span>:</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> range;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (!ParseRange(ds, &amp;range))</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s = NewState(kRegexInvalidState, kRegexInvalidState, kRangeCharacterClass);</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; GetState(s).rangeStart = range;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(s, s, s);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; ImplicitConcatenation(atomCountStack, operatorStack);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\\&#39;</span>: <span class="comment">// Escape character</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> (!CharacterEscape(ds, &amp;codepoint))</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// Unsupported escape character</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="comment">// fall through to default</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">default</span>: <span class="comment">// Pattern character</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; PushOperand(operandStack, codepoint);</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; ImplicitConcatenation(atomCountStack, operatorStack);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; }</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">while</span> (!operatorStack.Empty())</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">if</span> (!Eval(operandStack, *operatorStack.template Pop&lt;Operator&gt;(1)))</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="comment">// Link the operand to matching state.</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (operandStack.GetSize() == <span class="keyword">sizeof</span>(Frag)) {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; Frag* e = operandStack.template Pop&lt;Frag&gt;(1);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; Patch(e-&gt;out, NewState(kRegexInvalidState, kRegexInvalidState, 0));</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; root_ = e-&gt;start;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="preprocessor">#if RAPIDJSON_REGEX_VERBOSE</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; printf(<span class="stringliteral">&quot;root: %d\n&quot;</span>, root_);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; stateCount_ ; i++) {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; State&amp; s = GetState(i);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; printf(<span class="stringliteral">&quot;[%2d] out: %2d out1: %2d c: &#39;%c&#39;\n&quot;</span>, i, s.out, s.out1, (<span class="keywordtype">char</span>)s.codepoint);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; printf(<span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> NewState(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> out, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> out1, <span class="keywordtype">unsigned</span> codepoint) {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; State* s = states_.template Push&lt;State&gt;();</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; s-&gt;out = out;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; s-&gt;out1 = out1;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; s-&gt;codepoint = codepoint;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; s-&gt;rangeStart = kRegexInvalidRange;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> stateCount_++;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordtype">void</span> PushOperand(Stack&lt;Allocator&gt;&amp; operandStack, <span class="keywordtype">unsigned</span> codepoint) {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s = NewState(kRegexInvalidState, kRegexInvalidState, codepoint);</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(s, s, s);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordtype">void</span> ImplicitConcatenation(Stack&lt;Allocator&gt;&amp; atomCountStack, Stack&lt;Allocator&gt;&amp; operatorStack) {</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span> (*atomCountStack.template Top&lt;unsigned&gt;())</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; *operatorStack.template Push&lt;Operator&gt;() = kConcatenation;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; (*atomCountStack.template Top&lt;unsigned&gt;())++;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> Append(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> l1, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> l2) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> old = l1;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">while</span> (GetState(l1).out != kRegexInvalidState)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; l1 = GetState(l1).out;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; GetState(l1).out = l2;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">return</span> old;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordtype">void</span> Patch(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> l, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s) {</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> next; l != kRegexInvalidState; l = next) {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; next = GetState(l).out;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; GetState(l).out = s;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; }</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordtype">bool</span> Eval(Stack&lt;Allocator&gt;&amp; operandStack, Operator op) {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">switch</span> (op) {</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">case</span> kConcatenation:</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(operandStack.GetSize() &gt;= <span class="keyword">sizeof</span>(Frag) * 2);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; {</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; Frag e2 = *operandStack.template Pop&lt;Frag&gt;(1);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; Frag e1 = *operandStack.template Pop&lt;Frag&gt;(1);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; Patch(e1.out, e2.start);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(e1.start, e2.out, Min(e1.minIndex, e2.minIndex));</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">case</span> kAlternation:</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">if</span> (operandStack.GetSize() &gt;= <span class="keyword">sizeof</span>(Frag) * 2) {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; Frag e2 = *operandStack.template Pop&lt;Frag&gt;(1);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; Frag e1 = *operandStack.template Pop&lt;Frag&gt;(1);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s = NewState(e1.start, e2.start, 0);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(s, Append(e1.out, e2.out), Min(e1.minIndex, e2.minIndex));</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">case</span> kZeroOrOne:</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span> (operandStack.GetSize() &gt;= <span class="keyword">sizeof</span>(Frag)) {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; Frag e = *operandStack.template Pop&lt;Frag&gt;(1);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s = NewState(kRegexInvalidState, e.start, 0);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(s, Append(e.out, s), e.minIndex);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">case</span> kZeroOrMore:</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span> (operandStack.GetSize() &gt;= <span class="keyword">sizeof</span>(Frag)) {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; Frag e = *operandStack.template Pop&lt;Frag&gt;(1);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s = NewState(kRegexInvalidState, e.start, 0);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; Patch(e.out, s);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(s, s, e.minIndex);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">default</span>: </div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(op == kOneOrMore);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">if</span> (operandStack.GetSize() &gt;= <span class="keyword">sizeof</span>(Frag)) {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; Frag e = *operandStack.template Pop&lt;Frag&gt;(1);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> s = NewState(kRegexInvalidState, e.start, 0);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; Patch(e.out, s);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(e.start, s, e.minIndex);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; }</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <span class="keywordtype">bool</span> EvalQuantifier(Stack&lt;Allocator&gt;&amp; operandStack, <span class="keywordtype">unsigned</span> n, <span class="keywordtype">unsigned</span> m) {</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(n &lt;= m);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(operandStack.GetSize() &gt;= <span class="keyword">sizeof</span>(Frag));</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">if</span> (n == 0) {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">if</span> (m == 0) <span class="comment">// a{0} not support</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (m == kInfinityQuantifier)</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; Eval(operandStack, kZeroOrMore); <span class="comment">// a{0,} -&gt; a*</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; Eval(operandStack, kZeroOrOne); <span class="comment">// a{0,5} -&gt; a?</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; m - 1; i++)</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; CloneTopOperand(operandStack); <span class="comment">// a{0,5} -&gt; a? a? a? a? a?</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; m - 1; i++)</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; Eval(operandStack, kConcatenation); <span class="comment">// a{0,5} -&gt; a?a?a?a?a?</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; }</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; n - 1; i++) <span class="comment">// a{3} -&gt; a a a</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; CloneTopOperand(operandStack);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span> (m == kInfinityQuantifier)</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; Eval(operandStack, kOneOrMore); <span class="comment">// a{3,} -&gt; a a a+</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (m &gt; n) {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; CloneTopOperand(operandStack); <span class="comment">// a{3,5} -&gt; a a a a</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; Eval(operandStack, kZeroOrOne); <span class="comment">// a{3,5} -&gt; a a a a?</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = n; i &lt; m - 1; i++)</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; CloneTopOperand(operandStack); <span class="comment">// a{3,5} -&gt; a a a a? a?</span></div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = n; i &lt; m; i++)</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; Eval(operandStack, kConcatenation); <span class="comment">// a{3,5} -&gt; a a aa?a?</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i &lt; n - 1; i++)</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; Eval(operandStack, kConcatenation); <span class="comment">// a{3} -&gt; aaa, a{3,} -&gt; aaa+, a{3.5} -&gt; aaaa?a?</span></div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keyword">static</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> Min(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> a, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> b) { <span class="keywordflow">return</span> a &lt; b ? a : b; }</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordtype">void</span> CloneTopOperand(Stack&lt;Allocator&gt;&amp; operandStack) {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keyword">const</span> Frag src = *operandStack.template Top&lt;Frag&gt;(); <span class="comment">// Copy constructor to prevent invalidation</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count = stateCount_ - src.minIndex; <span class="comment">// Assumes top operand contains states in [src-&gt;minIndex, stateCount_)</span></div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; State* s = states_.template Push&lt;State&gt;(count);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; memcpy(s, &amp;GetState(src.minIndex), count * <span class="keyword">sizeof</span>(State));</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> j = 0; j &lt; count; j++) {</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">if</span> (s[j].out != kRegexInvalidState)</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; s[j].out += count;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">if</span> (s[j].out1 != kRegexInvalidState)</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; s[j].out1 += count;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; }</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; *operandStack.template Push&lt;Frag&gt;() = Frag(src.start + count, src.out + count, src.minIndex + count);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; stateCount_ += count;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; }</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordtype">bool</span> ParseUnsigned(DecodedStream&lt;InputStream, Encoding&gt;&amp; ds, <span class="keywordtype">unsigned</span>* u) {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <span class="keywordtype">unsigned</span> r = 0;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">if</span> (ds.Peek() &lt; <span class="charliteral">&#39;0&#39;</span> || ds.Peek() &gt; <span class="charliteral">&#39;9&#39;</span>)</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">while</span> (ds.Peek() &gt;= <span class="charliteral">&#39;0&#39;</span> &amp;&amp; ds.Peek() &lt;= <span class="charliteral">&#39;9&#39;</span>) {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span> (r &gt;= 429496729 &amp;&amp; ds.Peek() &gt; <span class="charliteral">&#39;5&#39;</span>) <span class="comment">// 2^32 - 1 = 4294967295</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// overflow</span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; r = r * 10 + (ds.Take() - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; }</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; *u = r;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <span class="keywordtype">bool</span> ParseRange(DecodedStream&lt;InputStream, Encoding&gt;&amp; ds, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>* range) {</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <span class="keywordtype">bool</span> isBegin = <span class="keyword">true</span>;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordtype">bool</span> negate = <span class="keyword">false</span>;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordtype">int</span> step = 0;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> start = kRegexInvalidRange;</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> current = kRegexInvalidRange;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">while</span> ((codepoint = ds.Take()) != 0) {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">if</span> (isBegin) {</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; isBegin = <span class="keyword">false</span>;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordflow">if</span> (codepoint == <span class="charliteral">&#39;^&#39;</span>) {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; negate = <span class="keyword">true</span>;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">switch</span> (codepoint) {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;]&#39;</span>:</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span> (start == kRegexInvalidRange)</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Error: nothing inside []</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">if</span> (step == 2) { <span class="comment">// Add trailing &#39;-&#39;</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> r = NewRange(<span class="charliteral">&#39;-&#39;</span>);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(current != kRegexInvalidRange);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; GetRange(current).next = r;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; }</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">if</span> (negate)</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; GetRange(start).start |= kRangeNegationFlag;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; *range = start;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\\&#39;</span>:</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">if</span> (ds.Peek() == <span class="charliteral">&#39;b&#39;</span>) {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; ds.Take();</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; codepoint = 0x0008; <span class="comment">// Escape backspace character</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!CharacterEscape(ds, &amp;codepoint))</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="comment">// fall through to default</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">switch</span> (step) {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">case</span> 1:</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">if</span> (codepoint == <span class="charliteral">&#39;-&#39;</span>) {</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; step++;</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; }</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="comment">// fall through to step 0 for other characters</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keywordflow">case</span> 0:</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; {</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> r = NewRange(codepoint);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span> (current != kRegexInvalidRange)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; GetRange(current).next = r;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">if</span> (start == kRegexInvalidRange)</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; start = r;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; current = r;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; }</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; step = 1;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(step == 2);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; GetRange(current).end = codepoint;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; step = 0;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; }</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; </div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> NewRange(<span class="keywordtype">unsigned</span> codepoint) {</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; Range* r = ranges_.template Push&lt;Range&gt;();</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; r-&gt;start = r-&gt;end = codepoint;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; r-&gt;next = kRegexInvalidRange;</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">return</span> rangeCount_++;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordtype">bool</span> CharacterEscape(DecodedStream&lt;InputStream, Encoding&gt;&amp; ds, <span class="keywordtype">unsigned</span>* escapedCodepoint) {</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">switch</span> (codepoint = ds.Take()) {</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;^&#39;</span>:</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;$&#39;</span>:</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;|&#39;</span>:</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;(&#39;</span>:</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;)&#39;</span>:</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;?&#39;</span>:</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;*&#39;</span>:</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;+&#39;</span>:</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;.&#39;</span>:</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;[&#39;</span>:</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;]&#39;</span>:</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;{&#39;</span>:</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;}&#39;</span>:</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;\\&#39;</span>:</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; *escapedCodepoint = codepoint; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;f&#39;</span>: *escapedCodepoint = 0x000C; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;n&#39;</span>: *escapedCodepoint = 0x000A; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;r&#39;</span>: *escapedCodepoint = 0x000D; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;t&#39;</span>: *escapedCodepoint = 0x0009; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">case</span> <span class="charliteral">&#39;v&#39;</span>: *escapedCodepoint = 0x000B; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Unsupported escape character</span></div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; Stack&lt;Allocator&gt; states_;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; Stack&lt;Allocator&gt; ranges_;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> root_;</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> stateCount_;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> rangeCount_;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> kInfinityQuantifier = ~0u;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="comment">// For SearchWithAnchoring()</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordtype">bool</span> anchorBegin_;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keywordtype">bool</span> anchorEnd_;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;};</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> RegexType, <span class="keyword">typename</span> Allocator = CrtAllocator&gt;</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="keyword">class </span>GenericRegexSearch {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> RegexType::EncodingType Encoding;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; GenericRegexSearch(<span class="keyword">const</span> RegexType&amp; regex, Allocator* allocator = 0) : </div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; regex_(regex), allocator_(allocator), ownAllocator_(0),</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; state0_(allocator, 0), state1_(allocator, 0), stateSet_()</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; {</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(regex_.IsValid());</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">if</span> (!allocator_)</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; ownAllocator_ = allocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(Allocator)();</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; stateSet_ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span>*<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(GetStateSetSize()));</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; state0_.template Reserve&lt;SizeType&gt;(regex_.stateCount_);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; state1_.template Reserve&lt;SizeType&gt;(regex_.stateCount_);</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; }</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; ~GenericRegexSearch() {</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; Allocator::Free(stateSet_);</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a>(ownAllocator_);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; }</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordtype">bool</span> Match(InputStream&amp; is) {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">return</span> SearchWithAnchoring(is, <span class="keyword">true</span>, <span class="keyword">true</span>);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordtype">bool</span> Match(<span class="keyword">const</span> Ch* s) {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; GenericStringStream&lt;Encoding&gt; is(s);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">return</span> Match(is);</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; }</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordtype">bool</span> Search(InputStream&amp; is) {</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">return</span> SearchWithAnchoring(is, regex_.anchorBegin_, regex_.anchorEnd_);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordtype">bool</span> Search(<span class="keyword">const</span> Ch* s) {</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; GenericStringStream&lt;Encoding&gt; is(s);</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">return</span> Search(is);</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> RegexType::State State;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> RegexType::Range Range;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> InputStream&gt;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordtype">bool</span> SearchWithAnchoring(InputStream&amp; is, <span class="keywordtype">bool</span> anchorBegin, <span class="keywordtype">bool</span> anchorEnd) {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; DecodedStream&lt;InputStream, Encoding&gt; ds(is);</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; state0_.Clear();</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; Stack&lt;Allocator&gt; *current = &amp;state0_, *next = &amp;state1_;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> stateSetSize = GetStateSetSize();</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; std::memset(stateSet_, 0, stateSetSize);</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordtype">bool</span> matched = AddState(*current, regex_.root_);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">while</span> (!current-&gt;Empty() &amp;&amp; (codepoint = ds.Take()) != 0) {</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; std::memset(stateSet_, 0, stateSetSize);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; next-&gt;Clear();</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; matched = <span class="keyword">false</span>;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>* s = current-&gt;template Bottom&lt;SizeType&gt;(); s != current-&gt;template End&lt;SizeType&gt;(); ++s) {</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keyword">const</span> State&amp; sr = regex_.GetState(*s);</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">if</span> (sr.codepoint == codepoint ||</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; sr.codepoint == RegexType::kAnyCharacterClass || </div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; (sr.codepoint == RegexType::kRangeCharacterClass &amp;&amp; MatchRange(sr.rangeStart, codepoint)))</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; {</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; matched = AddState(*next, sr.out) || matched;</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">if</span> (!anchorEnd &amp;&amp; matched)</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; }</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">if</span> (!anchorBegin)</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; AddState(*next, regex_.root_);</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; }</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; internal::Swap(current, next);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">return</span> matched;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; }</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordtype">size_t</span> GetStateSetSize()<span class="keyword"> const </span>{</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; <span class="keywordflow">return</span> (regex_.stateCount_ + 31) / 32 * 4;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="comment">// Return whether the added states is a match state</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordtype">bool</span> AddState(Stack&lt;Allocator&gt;&amp; l, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) {</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(index != kRegexInvalidState);</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keyword">const</span> State&amp; s = regex_.GetState(index);</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">if</span> (s.out1 != kRegexInvalidState) { <span class="comment">// Split</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordtype">bool</span> matched = AddState(l, s.out);</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> AddState(l, s.out1) || matched;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; }</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!(stateSet_[index &gt;&gt; 5] &amp; (1u &lt;&lt; (index &amp; 31)))) {</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; stateSet_[index &gt;&gt; 5] |= (1u &lt;&lt; (index &amp; 31));</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; *l.template PushUnsafe&lt;SizeType&gt;() = index;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">return</span> s.out == kRegexInvalidState; <span class="comment">// by using PushUnsafe() above, we can ensure s is not validated due to reallocation.</span></div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; }</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <span class="keywordtype">bool</span> MatchRange(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> rangeIndex, <span class="keywordtype">unsigned</span> codepoint)<span class="keyword"> const </span>{</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordtype">bool</span> yes = (regex_.GetRange(rangeIndex).start &amp; RegexType::kRangeNegationFlag) == 0;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">while</span> (rangeIndex != kRegexInvalidRange) {</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keyword">const</span> Range&amp; r = regex_.GetRange(rangeIndex);</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">if</span> (codepoint &gt;= (r.start &amp; ~RegexType::kRangeNegationFlag) &amp;&amp; codepoint &lt;= r.end)</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">return</span> yes;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; rangeIndex = r.next;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordflow">return</span> !yes;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keyword">const</span> RegexType&amp; regex_;</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; Allocator* allocator_;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; Allocator* ownAllocator_;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; Stack&lt;Allocator&gt; state0_;</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; Stack&lt;Allocator&gt; state1_;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; uint32_t* stateSet_;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;};</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;<span class="keyword">typedef</span> GenericRegex&lt;UTF8&lt;&gt; &gt; Regex;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;<span class="keyword">typedef</span> GenericRegexSearch&lt;Regex&gt; RegexSearch;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_INTERNAL_REGEX_H_</span></div><div class="ttc" id="namespacerapidjson_html_a44eb33eaa523e36d466b1ced64b85c84"><div class="ttname"><a href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">rapidjson::SizeType</a></div><div class="ttdeci">unsigned SizeType</div><div class="ttdoc">Size type (for string lengths, array sizes, etc.) </div><div class="ttdef"><b>Definition:</b> rapidjson.h:389</div></div>
<div class="ttc" id="rapidjson_8h_html_abdc7cd7902748ffe6626d71c59a73c3b"><div class="ttname"><a href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a></div><div class="ttdeci">#define RAPIDJSON_NEW(TypeName)</div><div class="ttdoc">! customization point for global new </div><div class="ttdef"><b>Definition:</b> rapidjson.h:599</div></div>
<div class="ttc" id="rapidjson_8h_html_a52c941c3fdd646527cdcd42aa846a28a"><div class="ttname"><a href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a></div><div class="ttdeci">#define RAPIDJSON_DELETE(x)</div><div class="ttdoc">! customization point for global delete </div><div class="ttdef"><b>Definition:</b> rapidjson.h:603</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
@@ -824,7 +91,7 @@ $(document).ready(function(){initNavTree('regex_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5167ae66a3a40cb9e5e46c75b7477e81.html">internal</a></li><li class="navelem"><b>regex.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_8d7584a8244d286291cd37b99676a43b.html">internal</a></li><li class="navelem"><b>regex.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/resize.js b/zh-cn/resize.js
index 304fcb6b..56e4a023 100644
--- a/zh-cn/resize.js
+++ b/zh-cn/resize.js
@@ -1,73 +1,104 @@
-var cookie_namespace = 'doxygen';
-var sidenav,navtree,content,header;
-
-function readCookie(cookie)
+function initResizable()
{
- var myCookie = cookie_namespace+"_"+cookie+"=";
- if (document.cookie)
+ var cookie_namespace = 'doxygen';
+ var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight;
+
+ function readCookie(cookie)
{
- var index = document.cookie.indexOf(myCookie);
- if (index != -1)
- {
- var valStart = index + myCookie.length;
- var valEnd = document.cookie.indexOf(";", valStart);
- if (valEnd == -1)
- {
- valEnd = document.cookie.length;
+ var myCookie = cookie_namespace+"_"+cookie+"=";
+ if (document.cookie) {
+ var index = document.cookie.indexOf(myCookie);
+ if (index != -1) {
+ var valStart = index + myCookie.length;
+ var valEnd = document.cookie.indexOf(";", valStart);
+ if (valEnd == -1) {
+ valEnd = document.cookie.length;
+ }
+ var val = document.cookie.substring(valStart, valEnd);
+ return val;
}
- var val = document.cookie.substring(valStart, valEnd);
- return val;
}
+ return 0;
}
- return 0;
-}
-function writeCookie(cookie, val, expiration)
-{
- if (val==undefined) return;
- if (expiration == null)
+ function writeCookie(cookie, val, expiration)
{
- var date = new Date();
- date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week
- expiration = date.toGMTString();
+ if (val==undefined) return;
+ if (expiration == null) {
+ var date = new Date();
+ date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week
+ expiration = date.toGMTString();
+ }
+ document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/";
}
- document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/";
-}
-
-function resizeWidth()
-{
- var windowWidth = $(window).width() + "px";
- var sidenavWidth = $(sidenav).outerWidth();
- content.css({marginLeft:parseInt(sidenavWidth)+"px"});
- writeCookie('width',sidenavWidth, null);
-}
-function restoreWidth(navWidth)
-{
- var windowWidth = $(window).width() + "px";
- content.css({marginLeft:parseInt(navWidth)+6+"px"});
- sidenav.css({width:navWidth + "px"});
-}
+ function resizeWidth()
+ {
+ var windowWidth = $(window).width() + "px";
+ var sidenavWidth = $(sidenav).outerWidth();
+ content.css({marginLeft:parseInt(sidenavWidth)+"px"});
+ writeCookie('width',sidenavWidth-barWidth, null);
+ }
-function resizeHeight()
-{
- var headerHeight = header.outerHeight();
- var footerHeight = footer.outerHeight();
- var windowHeight = $(window).height() - headerHeight - footerHeight;
- content.css({height:windowHeight + "px"});
- navtree.css({height:windowHeight + "px"});
- sidenav.css({height:windowHeight + "px",top: headerHeight+"px"});
-}
+ function restoreWidth(navWidth)
+ {
+ var windowWidth = $(window).width() + "px";
+ content.css({marginLeft:parseInt(navWidth)+barWidth+"px"});
+ sidenav.css({width:navWidth + "px"});
+ }
+
+ function resizeHeight()
+ {
+ var headerHeight = header.outerHeight();
+ var footerHeight = footer.outerHeight();
+ var windowHeight = $(window).height() - headerHeight - footerHeight;
+ content.css({height:windowHeight + "px"});
+ navtree.css({height:windowHeight + "px"});
+ sidenav.css({height:windowHeight + "px"});
+ var width=$(window).width();
+ if (width!=collapsedWidth) {
+ if (width<desktop_vp && collapsedWidth>=desktop_vp) {
+ if (!collapsed) {
+ collapseExpand();
+ }
+ } else if (width>desktop_vp && collapsedWidth<desktop_vp) {
+ if (collapsed) {
+ collapseExpand();
+ }
+ }
+ collapsedWidth=width;
+ }
+ }
+
+ function collapseExpand()
+ {
+ if (sidenav.width()>0) {
+ restoreWidth(0);
+ collapsed=true;
+ }
+ else {
+ var width = readCookie('width');
+ if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); }
+ collapsed=false;
+ }
+ }
-function initResizable()
-{
header = $("#top");
sidenav = $("#side-nav");
content = $("#doc-content");
navtree = $("#nav-tree");
footer = $("#nav-path");
$(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } });
+ $(sidenav).resizable({ minWidth: 0 });
$(window).resize(function() { resizeHeight(); });
+ var device = navigator.userAgent.toLowerCase();
+ var touch_device = device.match(/(iphone|ipod|ipad|android)/);
+ if (touch_device) { /* wider split bar for touch only devices */
+ $(sidenav).css({ paddingRight:'20px' });
+ $('.ui-resizable-e').css({ width:'20px' });
+ $('#nav-sync').css({ right:'34px' });
+ barWidth=20;
+ }
var width = readCookie('width');
if (width) { restoreWidth(width); } else { resizeWidth(); }
resizeHeight();
@@ -76,22 +107,8 @@ function initResizable()
if (i>=0) window.location.hash=url.substr(i);
var _preventDefault = function(evt) { evt.preventDefault(); };
$("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault);
- $(document).bind('touchmove',function(e){
- var device = navigator.userAgent.toLowerCase();
- var ios = device.match(/(iphone|ipod|ipad)/);
- if (ios) {
- try {
- var target = e.target;
- while (target) {
- if ($(target).css('-webkit-overflow-scrolling')=='touch') return;
- target = target.parentNode;
- }
- e.preventDefault();
- } catch(err) {
- e.preventDefault();
- }
- }
- });
+ $(".ui-resizable-handle").dblclick(collapseExpand);
+ $(window).load(resizeHeight);
}
diff --git a/zh-cn/schema_8h_source.html b/zh-cn/schema_8h_source.html
index c911dd97..213a8808 100644
--- a/zh-cn/schema_8h_source.html
+++ b/zh-cn/schema_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/schema.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('schema_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,2067 +81,49 @@ $(document).ready(function(){initNavTree('schema_8h_source.html','');});
<div class="title">schema.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available-&gt;</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip-&gt; All rights reserved-&gt;</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License-&gt; You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource-&gt;org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied-&gt; See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License-&gt;</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_SCHEMA_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">document.h</a>&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;pointer.h&quot;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span> <span class="comment">// abs, floor</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#if !defined(RAPIDJSON_SCHEMA_USE_INTERNALREGEX)</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_USE_INTERNALREGEX 1</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_USE_INTERNALREGEX 0</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#if !RAPIDJSON_SCHEMA_USE_INTERNALREGEX &amp;&amp; !defined(RAPIDJSON_SCHEMA_USE_STDREGEX) &amp;&amp; (__cplusplus &gt;=201103L || (defined(_MSC_VER) &amp;&amp; _MSC_VER &gt;= 1800))</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_USE_STDREGEX 1</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_USE_STDREGEX 0</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;internal/regex.h&quot;</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#elif RAPIDJSON_SCHEMA_USE_STDREGEX</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &lt;regex&gt;</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX || RAPIDJSON_SCHEMA_USE_STDREGEX</span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HAS_REGEX 1</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HAS_REGEX 0</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_SCHEMA_VERBOSE</span></div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_VERBOSE 0</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_VERBOSE</span></div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &quot;stringbuffer.h&quot;</span></div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#if defined(__GNUC__)</span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;RAPIDJSON_DIAG_OFF(weak-vtables)</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;RAPIDJSON_DIAG_OFF(exit-time-destructors)</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;RAPIDJSON_DIAG_OFF(c++98-compat-pedantic)</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;RAPIDJSON_DIAG_OFF(variadic-macros)</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;RAPIDJSON_DIAG_OFF(4512) <span class="comment">// assignment operator could not be generated</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"></span><span class="comment">// Verbose Utilities</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_VERBOSE</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> PrintInvalidKeyword(<span class="keyword">const</span> <span class="keywordtype">char</span>* keyword) {</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; printf(<span class="stringliteral">&quot;Fail keyword: %s\n&quot;</span>, keyword);</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;}</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> PrintInvalidKeyword(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* keyword) {</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; wprintf(L<span class="stringliteral">&quot;Fail keyword: %ls\n&quot;</span>, keyword);</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> PrintInvalidDocument(<span class="keyword">const</span> <span class="keywordtype">char</span>* document) {</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; printf(<span class="stringliteral">&quot;Fail document: %s\n\n&quot;</span>, document);</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> PrintInvalidDocument(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* document) {</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; wprintf(L<span class="stringliteral">&quot;Fail document: %ls\n\n&quot;</span>, document);</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> PrintValidatorPointers(<span class="keywordtype">unsigned</span> depth, <span class="keyword">const</span> <span class="keywordtype">char</span>* s, <span class="keyword">const</span> <span class="keywordtype">char</span>* d) {</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; printf(<span class="stringliteral">&quot;S: %*s%s\nD: %*s%s\n\n&quot;</span>, depth * 4, <span class="stringliteral">&quot; &quot;</span>, s, depth * 4, <span class="stringliteral">&quot; &quot;</span>, d);</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;}</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> PrintValidatorPointers(<span class="keywordtype">unsigned</span> depth, <span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* s, <span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* d) {</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; wprintf(L<span class="stringliteral">&quot;S: %*ls%ls\nD: %*ls%ls\n\n&quot;</span>, depth * 4, L<span class="stringliteral">&quot; &quot;</span>, s, depth * 4, L<span class="stringliteral">&quot; &quot;</span>, d);</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_SCHEMA_VERBOSE</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_INVALID_KEYWORD_RETURN</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_VERBOSE</span></div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="preprocessor">#define RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword) internal::PrintInvalidKeyword(keyword)</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor">#define RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword)</span></div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor">#define RAPIDJSON_INVALID_KEYWORD_RETURN(keyword)\</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="preprocessor">RAPIDJSON_MULTILINEMACRO_BEGIN\</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor"> context.invalidKeyword = keyword.GetString();\</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="preprocessor"> RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword.GetString());\</span></div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor"> return false;\</span></div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor">RAPIDJSON_MULTILINEMACRO_END</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"></span><span class="comment">// Forward declarations</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueType, <span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword">class </span>GenericSchemaDocument;</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SchemaDocumentType&gt;</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="keyword">class </span>Schema;</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"></span><span class="comment">// ISchemaValidator</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="keyword">class </span>ISchemaValidator {</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">virtual</span> ~ISchemaValidator() {}</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsValid() <span class="keyword">const</span> = 0;</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;};</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"></span><span class="comment">// ISchemaStateFactory</span></div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SchemaType&gt;</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="keyword">class </span>ISchemaStateFactory {</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">virtual</span> ~ISchemaStateFactory() {}</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">virtual</span> ISchemaValidator* CreateSchemaValidator(<span class="keyword">const</span> SchemaType&amp;) = 0;</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> DestroySchemaValidator(ISchemaValidator* validator) = 0;</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span>* CreateHasher() = 0;</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">virtual</span> uint64_t GetHashCode(<span class="keywordtype">void</span>* hasher) = 0;</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> DestroryHasher(<span class="keywordtype">void</span>* hasher) = 0;</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span>* MallocState(<span class="keywordtype">size_t</span> size) = 0;</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> FreeState(<span class="keywordtype">void</span>* p) = 0;</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;};</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"></span><span class="comment">// Hasher</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment">// For comparison of compound value</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="keyword">class </span>Hasher {</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; Hasher(Allocator* allocator = 0, <span class="keywordtype">size_t</span> stackCapacity = kDefaultSize) : stack_(allocator, stackCapacity) {}</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordtype">bool</span> Null() { <span class="keywordflow">return</span> WriteType(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">kNullType</a>); }</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b) { <span class="keywordflow">return</span> WriteType(b ? <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">kTrueType</a> : <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">kFalseType</a>); }</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i) { Number n; n.u.i = i; n.d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(i); <span class="keywordflow">return</span> WriteNumber(n); }</div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> u) { Number n; n.u.u = u; n.d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(u); <span class="keywordflow">return</span> WriteNumber(n); }</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordtype">bool</span> Int64(int64_t i) { Number n; n.u.i = i; n.d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(i); <span class="keywordflow">return</span> WriteNumber(n); }</div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordtype">bool</span> Uint64(uint64_t u) { Number n; n.u.u = u; n.d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(u); <span class="keywordflow">return</span> WriteNumber(n); }</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span> d) { </div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; Number n; </div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span> (d &lt; 0) n.u.i = <span class="keyword">static_cast&lt;</span>int64_t<span class="keyword">&gt;</span>(d);</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">else</span> n.u.u = <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(d); </div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; n.d = d;</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> WriteNumber(n);</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordtype">bool</span> RawNumber(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, <span class="keywordtype">bool</span>) {</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; WriteBuffer(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>, str, len * <span class="keyword">sizeof</span>(Ch));</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, <span class="keywordtype">bool</span>) {</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; WriteBuffer(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>, str, len * <span class="keyword">sizeof</span>(Ch));</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordtype">bool</span> StartObject() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, <span class="keywordtype">bool</span> copy) { <span class="keywordflow">return</span> String(str, len, copy); }</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount) { </div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; uint64_t h = Hash(0, <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>);</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; uint64_t* kv = stack_.template Pop&lt;uint64_t&gt;(memberCount * 2);</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; memberCount; i++)</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; h ^= Hash(kv[i * 2], kv[i * 2 + 1]); <span class="comment">// Use xor to achieve member order insensitive</span></div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; *stack_.template Push&lt;uint64_t&gt;() = h;</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; </div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordtype">bool</span> StartArray() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount) { </div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; uint64_t h = Hash(0, <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; uint64_t* e = stack_.template Pop&lt;uint64_t&gt;(elementCount);</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; elementCount; i++)</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; h = Hash(h, e[i]); <span class="comment">// Use hash to achieve element order sensitive</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; *stack_.template Push&lt;uint64_t&gt;() = h;</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordtype">bool</span> IsValid()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stack_.GetSize() == <span class="keyword">sizeof</span>(uint64_t); }</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; uint64_t GetHashCode()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsValid());</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> *stack_.template Top&lt;uint64_t&gt;();</div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultSize = 256;</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keyword">struct </span>Number {</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keyword">union </span>U {</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; uint64_t u;</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; int64_t i;</div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }u;</div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordtype">double</span> d;</div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; };</div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordtype">bool</span> WriteType(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type) { <span class="keywordflow">return</span> WriteBuffer(type, 0, 0); }</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordtype">bool</span> WriteNumber(<span class="keyword">const</span> Number&amp; n) { <span class="keywordflow">return</span> WriteBuffer(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>, &amp;n, <span class="keyword">sizeof</span>(n)); }</div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; </div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordtype">bool</span> WriteBuffer(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type, <span class="keyword">const</span> <span class="keywordtype">void</span>* data, <span class="keywordtype">size_t</span> len) {</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// FNV-1a from http://isthe.com/chongo/tech/comp/fnv/</span></div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; uint64_t h = Hash(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x84222325, 0xcbf29ce4), type);</div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* d = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(data);</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; len; i++)</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; h = Hash(h, d[i]);</div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; *stack_.template Push&lt;uint64_t&gt;() = h;</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">static</span> uint64_t Hash(uint64_t h, uint64_t d) {</div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kPrime = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x00000100, 0x000001b3);</div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; h ^= d;</div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; h *= kPrime;</div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">return</span> h;</div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; Stack&lt;Allocator&gt; stack_;</div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;};</div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"></span><span class="comment">// SchemaValidationContext</span></div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SchemaDocumentType&gt;</div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keyword">struct </span>SchemaValidationContext {</div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">typedef</span> Schema&lt;SchemaDocumentType&gt; SchemaType;</div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keyword">typedef</span> ISchemaStateFactory&lt;SchemaType&gt; SchemaValidatorFactoryType;</div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaType::ValueType ValueType;</div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::Ch Ch;</div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keyword">enum</span> PatternValidatorType {</div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; kPatternValidatorOnly,</div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; kPatternValidatorWithProperty,</div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; kPatternValidatorWithAdditionalProperty</div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; };</div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div>
-<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; SchemaValidationContext(SchemaValidatorFactoryType&amp; f, <span class="keyword">const</span> SchemaType* s) :</div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; factory(f),</div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; schema(s),</div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; valueSchema(),</div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; invalidKeyword(),</div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; hasher(),</div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; arrayElementHashCodes(),</div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; validators(),</div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; validatorCount(),</div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; patternPropertiesValidators(),</div>
-<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; patternPropertiesValidatorCount(),</div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; patternPropertiesSchemas(),</div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; patternPropertiesSchemaCount(),</div>
-<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; valuePatternValidatorType(kPatternValidatorOnly),</div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; propertyExist(),</div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; inArray(false),</div>
-<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; valueUniqueness(false),</div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; arrayUniqueness(false)</div>
-<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div>
-<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; ~SchemaValidationContext() {</div>
-<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span> (hasher)</div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; factory.DestroryHasher(hasher);</div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span> (validators) {</div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; validatorCount; i++)</div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; factory.DestroySchemaValidator(validators[i]);</div>
-<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; factory.FreeState(validators);</div>
-<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div>
-<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span> (patternPropertiesValidators) {</div>
-<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; patternPropertiesValidatorCount; i++)</div>
-<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; factory.DestroySchemaValidator(patternPropertiesValidators[i]);</div>
-<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; factory.FreeState(patternPropertiesValidators);</div>
-<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (patternPropertiesSchemas)</div>
-<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; factory.FreeState(patternPropertiesSchemas);</div>
-<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span> (propertyExist)</div>
-<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; factory.FreeState(propertyExist);</div>
-<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div>
-<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div>
-<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; SchemaValidatorFactoryType&amp; factory;</div>
-<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keyword">const</span> SchemaType* schema;</div>
-<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">const</span> SchemaType* valueSchema;</div>
-<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keyword">const</span> Ch* invalidKeyword;</div>
-<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordtype">void</span>* hasher; <span class="comment">// Only validator access</span></div>
-<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordtype">void</span>* arrayElementHashCodes; <span class="comment">// Only validator access this</span></div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; ISchemaValidator** validators;</div>
-<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> validatorCount;</div>
-<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; ISchemaValidator** patternPropertiesValidators;</div>
-<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> patternPropertiesValidatorCount;</div>
-<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">const</span> SchemaType** patternPropertiesSchemas;</div>
-<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> patternPropertiesSchemaCount;</div>
-<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; PatternValidatorType valuePatternValidatorType;</div>
-<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; PatternValidatorType objectPatternValidatorType;</div>
-<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> arrayElementIndex;</div>
-<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordtype">bool</span>* propertyExist;</div>
-<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordtype">bool</span> inArray;</div>
-<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordtype">bool</span> valueUniqueness;</div>
-<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordtype">bool</span> arrayUniqueness;</div>
-<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;};</div>
-<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment"></span><span class="comment">// Schema</span></div>
-<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div>
-<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SchemaDocumentType&gt;</div>
-<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="keyword">class </span>Schema {</div>
-<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::ValueType ValueType;</div>
-<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::AllocatorType AllocatorType;</div>
-<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::PointerType PointerType;</div>
-<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::EncodingType EncodingType;</div>
-<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> EncodingType::Ch Ch;</div>
-<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keyword">typedef</span> SchemaValidationContext&lt;SchemaDocumentType&gt; Context;</div>
-<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keyword">typedef</span> Schema&lt;SchemaDocumentType&gt; SchemaType;</div>
-<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keyword">typedef</span> GenericValue&lt;EncodingType, AllocatorType&gt; SValue;</div>
-<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span>GenericSchemaDocument&lt;ValueType, AllocatorType&gt;;</div>
-<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div>
-<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; Schema(SchemaDocumentType* schemaDocument, <span class="keyword">const</span> PointerType&amp; p, <span class="keyword">const</span> ValueType&amp; value, <span class="keyword">const</span> ValueType&amp; document, AllocatorType* allocator) :</div>
-<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; allocator_(allocator),</div>
-<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; typeless_(schemaDocument-&gt;GetTypeless()),</div>
-<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; enum_(),</div>
-<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; enumCount_(),</div>
-<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; not_(),</div>
-<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; type_((1 &lt;&lt; kTotalSchemaType) - 1), <span class="comment">// typeless</span></div>
-<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; validatorCount_(),</div>
-<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; properties_(),</div>
-<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; additionalPropertiesSchema_(),</div>
-<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; patternProperties_(),</div>
-<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; patternPropertyCount_(),</div>
-<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; propertyCount_(),</div>
-<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; minProperties_(),</div>
-<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; maxProperties_(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(~0)),</div>
-<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; additionalProperties_(true),</div>
-<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; hasDependencies_(),</div>
-<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; hasRequired_(),</div>
-<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; hasSchemaDependencies_(),</div>
-<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; additionalItemsSchema_(),</div>
-<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; itemsList_(),</div>
-<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; itemsTuple_(),</div>
-<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; itemsTupleCount_(),</div>
-<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; minItems_(),</div>
-<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; maxItems_(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(~0)),</div>
-<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; additionalItems_(true),</div>
-<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; uniqueItems_(false),</div>
-<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; pattern_(),</div>
-<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; minLength_(0),</div>
-<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; maxLength_(~<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(0)),</div>
-<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; exclusiveMinimum_(false),</div>
-<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; exclusiveMaximum_(false)</div>
-<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div>
-<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::ValueType ValueType;</div>
-<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::ConstValueIterator ConstValueIterator;</div>
-<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::ConstMemberIterator ConstMemberIterator;</div>
-<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div>
-<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">if</span> (!value.IsObject())</div>
-<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div>
-<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetTypeString())) {</div>
-<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; type_ = 0;</div>
-<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsString())</div>
-<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; AddType(*v);</div>
-<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v-&gt;IsArray())</div>
-<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">for</span> (ConstValueIterator itr = v-&gt;Begin(); itr != v-&gt;End(); ++itr)</div>
-<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; AddType(*itr);</div>
-<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div>
-<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div>
-<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetEnumString()))</div>
-<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsArray() &amp;&amp; v-&gt;Size() &gt; 0) {</div>
-<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; enum_ = <span class="keyword">static_cast&lt;</span>uint64_t*<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(uint64_t) * v-&gt;Size()));</div>
-<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">for</span> (ConstValueIterator itr = v-&gt;Begin(); itr != v-&gt;End(); ++itr) {</div>
-<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keyword">typedef</span> Hasher&lt;EncodingType, MemoryPoolAllocator&lt;&gt; &gt; EnumHasherType;</div>
-<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordtype">char</span> buffer[256 + 24];</div>
-<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; MemoryPoolAllocator&lt;&gt; hasherAllocator(buffer, <span class="keyword">sizeof</span>(buffer));</div>
-<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; EnumHasherType h(&amp;hasherAllocator, 256);</div>
-<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; itr-&gt;Accept(h);</div>
-<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; enum_[enumCount_++] = h.GetHashCode();</div>
-<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div>
-<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div>
-<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;</div>
-<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">if</span> (schemaDocument) {</div>
-<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; AssignIfExist(allOf_, *schemaDocument, p, value, GetAllOfString(), document);</div>
-<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; AssignIfExist(anyOf_, *schemaDocument, p, value, GetAnyOfString(), document);</div>
-<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; AssignIfExist(oneOf_, *schemaDocument, p, value, GetOneOfString(), document);</div>
-<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div>
-<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div>
-<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetNotString())) {</div>
-<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; schemaDocument-&gt;CreateSchema(&amp;not_, p.Append(GetNotString(), allocator_), *v, document);</div>
-<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; notValidatorIndex_ = validatorCount_;</div>
-<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; validatorCount_++;</div>
-<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; }</div>
-<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div>
-<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="comment">// Object</span></div>
-<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div>
-<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keyword">const</span> ValueType* properties = GetMember(value, GetPropertiesString());</div>
-<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">const</span> ValueType* required = GetMember(value, GetRequiredString());</div>
-<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keyword">const</span> ValueType* dependencies = GetMember(value, GetDependenciesString());</div>
-<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div>
-<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="comment">// Gather properties from properties/required/dependencies</span></div>
-<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; SValue allProperties(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div>
-<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;</div>
-<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">if</span> (properties &amp;&amp; properties-&gt;IsObject())</div>
-<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">for</span> (ConstMemberIterator itr = properties-&gt;MemberBegin(); itr != properties-&gt;MemberEnd(); ++itr)</div>
-<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; AddUniqueElement(allProperties, itr-&gt;name);</div>
-<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; </div>
-<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">if</span> (required &amp;&amp; required-&gt;IsArray())</div>
-<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">for</span> (ConstValueIterator itr = required-&gt;Begin(); itr != required-&gt;End(); ++itr)</div>
-<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">if</span> (itr-&gt;IsString())</div>
-<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; AddUniqueElement(allProperties, *itr);</div>
-<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div>
-<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span> (dependencies &amp;&amp; dependencies-&gt;IsObject())</div>
-<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">for</span> (ConstMemberIterator itr = dependencies-&gt;MemberBegin(); itr != dependencies-&gt;MemberEnd(); ++itr) {</div>
-<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; AddUniqueElement(allProperties, itr-&gt;name);</div>
-<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span> (itr-&gt;value.IsArray())</div>
-<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">for</span> (ConstValueIterator i = itr-&gt;value.Begin(); i != itr-&gt;value.End(); ++i)</div>
-<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">if</span> (i-&gt;IsString())</div>
-<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; AddUniqueElement(allProperties, *i);</div>
-<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div>
-<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div>
-<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span> (allProperties.Size() &gt; 0) {</div>
-<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; propertyCount_ = allProperties.Size();</div>
-<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; properties_ = <span class="keyword">static_cast&lt;</span>Property*<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(Property) * propertyCount_));</div>
-<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; propertyCount_; i++) {</div>
-<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keyword">new</span> (&amp;properties_[i]) Property();</div>
-<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; properties_[i].name = allProperties[i];</div>
-<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; properties_[i].schema = typeless_;</div>
-<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div>
-<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div>
-<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div>
-<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;</div>
-<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">if</span> (properties &amp;&amp; properties-&gt;IsObject()) {</div>
-<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; PointerType q = p.Append(GetPropertiesString(), allocator_);</div>
-<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">for</span> (ConstMemberIterator itr = properties-&gt;MemberBegin(); itr != properties-&gt;MemberEnd(); ++itr) {</div>
-<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index;</div>
-<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">if</span> (FindPropertyIndex(itr-&gt;name, &amp;index))</div>
-<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; schemaDocument-&gt;CreateSchema(&amp;properties_[index].schema, q.Append(itr-&gt;name, allocator_), itr-&gt;value, document);</div>
-<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; }</div>
-<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; }</div>
-<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div>
-<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetPatternPropertiesString())) {</div>
-<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; PointerType q = p.Append(GetPatternPropertiesString(), allocator_);</div>
-<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; patternProperties_ = <span class="keyword">static_cast&lt;</span>PatternProperty*<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(PatternProperty) * v-&gt;MemberCount()));</div>
-<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; patternPropertyCount_ = 0;</div>
-<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div>
-<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">for</span> (ConstMemberIterator itr = v-&gt;MemberBegin(); itr != v-&gt;MemberEnd(); ++itr) {</div>
-<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keyword">new</span> (&amp;patternProperties_[patternPropertyCount_]) PatternProperty();</div>
-<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; patternProperties_[patternPropertyCount_].pattern = CreatePattern(itr-&gt;name);</div>
-<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; schemaDocument-&gt;CreateSchema(&amp;patternProperties_[patternPropertyCount_].schema, q.Append(itr-&gt;name, allocator_), itr-&gt;value, document);</div>
-<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; patternPropertyCount_++;</div>
-<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div>
-<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div>
-<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div>
-<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span> (required &amp;&amp; required-&gt;IsArray())</div>
-<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">for</span> (ConstValueIterator itr = required-&gt;Begin(); itr != required-&gt;End(); ++itr)</div>
-<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span> (itr-&gt;IsString()) {</div>
-<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index;</div>
-<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">if</span> (FindPropertyIndex(*itr, &amp;index)) {</div>
-<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; properties_[index].required = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; hasRequired_ = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div>
-<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; }</div>
-<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;</div>
-<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span> (dependencies &amp;&amp; dependencies-&gt;IsObject()) {</div>
-<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; PointerType q = p.Append(GetDependenciesString(), allocator_);</div>
-<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; hasDependencies_ = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">for</span> (ConstMemberIterator itr = dependencies-&gt;MemberBegin(); itr != dependencies-&gt;MemberEnd(); ++itr) {</div>
-<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> sourceIndex;</div>
-<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span> (FindPropertyIndex(itr-&gt;name, &amp;sourceIndex)) {</div>
-<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">if</span> (itr-&gt;value.IsArray()) {</div>
-<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; properties_[sourceIndex].dependencies = <span class="keyword">static_cast&lt;</span><span class="keywordtype">bool</span>*<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(<span class="keywordtype">bool</span>) * propertyCount_));</div>
-<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; std::memset(properties_[sourceIndex].dependencies, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">bool</span>)* propertyCount_);</div>
-<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">for</span> (ConstValueIterator targetItr = itr-&gt;value.Begin(); targetItr != itr-&gt;value.End(); ++targetItr) {</div>
-<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> targetIndex;</div>
-<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span> (FindPropertyIndex(*targetItr, &amp;targetIndex))</div>
-<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; properties_[sourceIndex].dependencies[targetIndex] = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div>
-<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div>
-<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (itr-&gt;value.IsObject()) {</div>
-<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; hasSchemaDependencies_ = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; schemaDocument-&gt;CreateSchema(&amp;properties_[sourceIndex].dependenciesSchema, q.Append(itr-&gt;name, allocator_), itr-&gt;value, document);</div>
-<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; properties_[sourceIndex].dependenciesValidatorIndex = validatorCount_;</div>
-<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; validatorCount_++;</div>
-<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div>
-<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div>
-<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div>
-<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; }</div>
-<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;</div>
-<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetAdditionalPropertiesString())) {</div>
-<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsBool())</div>
-<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; additionalProperties_ = v-&gt;GetBool();</div>
-<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v-&gt;IsObject())</div>
-<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; schemaDocument-&gt;CreateSchema(&amp;additionalPropertiesSchema_, p.Append(GetAdditionalPropertiesString(), allocator_), *v, document);</div>
-<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div>
-<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div>
-<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; AssignIfExist(minProperties_, value, GetMinPropertiesString());</div>
-<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; AssignIfExist(maxProperties_, value, GetMaxPropertiesString());</div>
-<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;</div>
-<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="comment">// Array</span></div>
-<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetItemsString())) {</div>
-<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; PointerType q = p.Append(GetItemsString(), allocator_);</div>
-<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsObject()) <span class="comment">// List validation</span></div>
-<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; schemaDocument-&gt;CreateSchema(&amp;itemsList_, q, *v, document);</div>
-<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v-&gt;IsArray()) { <span class="comment">// Tuple validation</span></div>
-<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; itemsTuple_ = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>Schema**<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(<span class="keyword">const</span> Schema*) * v-&gt;Size()));</div>
-<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index = 0;</div>
-<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">for</span> (ConstValueIterator itr = v-&gt;Begin(); itr != v-&gt;End(); ++itr, index++)</div>
-<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; schemaDocument-&gt;CreateSchema(&amp;itemsTuple_[itemsTupleCount_++], q.Append(index, allocator_), *itr, document);</div>
-<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div>
-<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; }</div>
-<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;</div>
-<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; AssignIfExist(minItems_, value, GetMinItemsString());</div>
-<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; AssignIfExist(maxItems_, value, GetMaxItemsString());</div>
-<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;</div>
-<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetAdditionalItemsString())) {</div>
-<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsBool())</div>
-<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; additionalItems_ = v-&gt;GetBool();</div>
-<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v-&gt;IsObject())</div>
-<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; schemaDocument-&gt;CreateSchema(&amp;additionalItemsSchema_, p.Append(GetAdditionalItemsString(), allocator_), *v, document);</div>
-<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }</div>
-<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div>
-<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; AssignIfExist(uniqueItems_, value, GetUniqueItemsString());</div>
-<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div>
-<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="comment">// String</span></div>
-<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; AssignIfExist(minLength_, value, GetMinLengthString());</div>
-<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; AssignIfExist(maxLength_, value, GetMaxLengthString());</div>
-<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div>
-<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetPatternString()))</div>
-<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; pattern_ = CreatePattern(*v);</div>
-<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div>
-<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="comment">// Number</span></div>
-<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetMinimumString()))</div>
-<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsNumber())</div>
-<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; minimum_.CopyFrom(*v, *allocator_);</div>
-<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div>
-<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetMaximumString()))</div>
-<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsNumber())</div>
-<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; maximum_.CopyFrom(*v, *allocator_);</div>
-<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div>
-<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; AssignIfExist(exclusiveMinimum_, value, GetExclusiveMinimumString());</div>
-<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; AssignIfExist(exclusiveMaximum_, value, GetExclusiveMaximumString());</div>
-<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div>
-<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetMultipleOfString()))</div>
-<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsNumber() &amp;&amp; v-&gt;GetDouble() &gt; 0.0)</div>
-<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; multipleOf_.CopyFrom(*v, *allocator_);</div>
-<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; }</div>
-<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;</div>
-<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; ~Schema() {</div>
-<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; AllocatorType::Free(enum_);</div>
-<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">if</span> (properties_) {</div>
-<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; propertyCount_; i++)</div>
-<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; properties_[i].~Property();</div>
-<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; AllocatorType::Free(properties_);</div>
-<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div>
-<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">if</span> (patternProperties_) {</div>
-<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; patternPropertyCount_; i++)</div>
-<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; patternProperties_[i].~PatternProperty();</div>
-<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; AllocatorType::Free(patternProperties_);</div>
-<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; }</div>
-<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; AllocatorType::Free(itemsTuple_);</div>
-<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_HAS_REGEX</span></div>
-<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">if</span> (pattern_) {</div>
-<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; pattern_-&gt;~RegexType();</div>
-<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; AllocatorType::Free(pattern_);</div>
-<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; }</div>
-<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div>
-<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div>
-<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordtype">bool</span> BeginValue(Context&amp; context)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">if</span> (context.inArray) {</div>
-<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">if</span> (uniqueItems_)</div>
-<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; context.valueUniqueness = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;</div>
-<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">if</span> (itemsList_)</div>
-<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; context.valueSchema = itemsList_;</div>
-<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (itemsTuple_) {</div>
-<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">if</span> (context.arrayElementIndex &lt; itemsTupleCount_)</div>
-<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; context.valueSchema = itemsTuple_[context.arrayElementIndex];</div>
-<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (additionalItemsSchema_)</div>
-<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; context.valueSchema = additionalItemsSchema_;</div>
-<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (additionalItems_)</div>
-<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; context.valueSchema = typeless_;</div>
-<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetItemsString());</div>
-<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; }</div>
-<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; context.valueSchema = typeless_;</div>
-<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;</div>
-<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; context.arrayElementIndex++;</div>
-<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div>
-<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; }</div>
-<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div>
-<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> EndValue(Context&amp; context)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">if</span> (context.patternPropertiesValidatorCount &gt; 0) {</div>
-<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordtype">bool</span> otherValid = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count = context.patternPropertiesValidatorCount;</div>
-<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span> (context.objectPatternValidatorType != Context::kPatternValidatorOnly)</div>
-<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; otherValid = context.patternPropertiesValidators[--count]-&gt;IsValid();</div>
-<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div>
-<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordtype">bool</span> patternValid = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; count; i++)</div>
-<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">if</span> (!context.patternPropertiesValidators[i]-&gt;IsValid()) {</div>
-<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; patternValid = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div>
-<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;</div>
-<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">if</span> (context.objectPatternValidatorType == Context::kPatternValidatorOnly) {</div>
-<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">if</span> (!patternValid)</div>
-<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternPropertiesString());</div>
-<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div>
-<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (context.objectPatternValidatorType == Context::kPatternValidatorWithProperty) {</div>
-<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">if</span> (!patternValid || !otherValid)</div>
-<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternPropertiesString());</div>
-<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; }</div>
-<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!patternValid &amp;&amp; !otherValid) <span class="comment">// kPatternValidatorWithAdditionalProperty)</span></div>
-<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternPropertiesString());</div>
-<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div>
-<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;</div>
-<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">if</span> (enum_) {</div>
-<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keyword">const</span> uint64_t h = context.factory.GetHashCode(context.hasher);</div>
-<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; enumCount_; i++)</div>
-<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">if</span> (enum_[i] == h)</div>
-<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">goto</span> foundEnum;</div>
-<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetEnumString());</div>
-<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; foundEnum:;</div>
-<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div>
-<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;</div>
-<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">if</span> (allOf_.schemas)</div>
-<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = allOf_.begin; i &lt; allOf_.begin + allOf_.count; i++)</div>
-<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (!context.validators[i]-&gt;IsValid())</div>
-<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetAllOfString());</div>
-<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; </div>
-<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">if</span> (anyOf_.schemas) {</div>
-<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = anyOf_.begin; i &lt; anyOf_.begin + anyOf_.count; i++)</div>
-<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">if</span> (context.validators[i]-&gt;IsValid())</div>
-<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">goto</span> foundAny;</div>
-<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetAnyOfString());</div>
-<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; foundAny:;</div>
-<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; }</div>
-<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;</div>
-<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">if</span> (oneOf_.schemas) {</div>
-<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordtype">bool</span> oneValid = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = oneOf_.begin; i &lt; oneOf_.begin + oneOf_.count; i++)</div>
-<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">if</span> (context.validators[i]-&gt;IsValid()) {</div>
-<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">if</span> (oneValid)</div>
-<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetOneOfString());</div>
-<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; oneValid = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</div>
-<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">if</span> (!oneValid)</div>
-<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetOneOfString());</div>
-<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div>
-<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;</div>
-<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">if</span> (not_ &amp;&amp; context.validators[notValidatorIndex_]-&gt;IsValid())</div>
-<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetNotString());</div>
-<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;</div>
-<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; }</div>
-<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;</div>
-<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordtype">bool</span> Null(Context&amp; context)<span class="keyword"> const </span>{ </div>
-<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; (1 &lt;&lt; kNullSchemaType)))</div>
-<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div>
-<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div>
-<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; }</div>
-<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; </div>
-<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordtype">bool</span> Bool(Context&amp; context, <span class="keywordtype">bool</span>)<span class="keyword"> const </span>{ </div>
-<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; (1 &lt;&lt; kBooleanSchemaType)))</div>
-<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div>
-<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div>
-<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; }</div>
-<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;</div>
-<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordtype">bool</span> Int(Context&amp; context, <span class="keywordtype">int</span> i)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">if</span> (!CheckInt(context, i))</div>
-<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div>
-<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; }</div>
-<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;</div>
-<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordtype">bool</span> Uint(Context&amp; context, <span class="keywordtype">unsigned</span> u)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">if</span> (!CheckUint(context, u))</div>
-<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div>
-<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; }</div>
-<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;</div>
-<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordtype">bool</span> Int64(Context&amp; context, int64_t i)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">if</span> (!CheckInt(context, i))</div>
-<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div>
-<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div>
-<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;</div>
-<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordtype">bool</span> Uint64(Context&amp; context, uint64_t u)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">if</span> (!CheckUint(context, u))</div>
-<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div>
-<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; }</div>
-<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;</div>
-<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordtype">bool</span> Double(Context&amp; context, <span class="keywordtype">double</span> d)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; (1 &lt;&lt; kNumberSchemaType)))</div>
-<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div>
-<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;</div>
-<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">if</span> (!minimum_.IsNull() &amp;&amp; !CheckDoubleMinimum(context, d))</div>
-<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;</div>
-<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">if</span> (!maximum_.IsNull() &amp;&amp; !CheckDoubleMaximum(context, d))</div>
-<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; </div>
-<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">if</span> (!multipleOf_.IsNull() &amp;&amp; !CheckDoubleMultipleOf(context, d))</div>
-<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; </div>
-<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div>
-<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; }</div>
-<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; </div>
-<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordtype">bool</span> String(Context&amp; context, <span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span>)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; (1 &lt;&lt; kStringSchemaType)))</div>
-<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div>
-<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;</div>
-<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">if</span> (minLength_ != 0 || maxLength_ != <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(~0)) {</div>
-<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count;</div>
-<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">if</span> (internal::CountStringCodePoint&lt;EncodingType&gt;(str, length, &amp;count)) {</div>
-<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordflow">if</span> (count &lt; minLength_)</div>
-<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinLengthString());</div>
-<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordflow">if</span> (count &gt; maxLength_)</div>
-<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaxLengthString());</div>
-<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; }</div>
-<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; }</div>
-<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;</div>
-<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">if</span> (pattern_ &amp;&amp; !IsPatternMatch(pattern_, str, length))</div>
-<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternString());</div>
-<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;</div>
-<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div>
-<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; }</div>
-<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;</div>
-<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordtype">bool</span> StartObject(Context&amp; context)<span class="keyword"> const </span>{ </div>
-<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; (1 &lt;&lt; kObjectSchemaType)))</div>
-<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div>
-<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;</div>
-<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">if</span> (hasDependencies_ || hasRequired_) {</div>
-<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; context.propertyExist = <span class="keyword">static_cast&lt;</span><span class="keywordtype">bool</span>*<span class="keyword">&gt;</span>(context.factory.MallocState(<span class="keyword">sizeof</span>(<span class="keywordtype">bool</span>) * propertyCount_));</div>
-<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; std::memset(context.propertyExist, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">bool</span>) * propertyCount_);</div>
-<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div>
-<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;</div>
-<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">if</span> (patternProperties_) { <span class="comment">// pre-allocate schema array</span></div>
-<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count = patternPropertyCount_ + 1; <span class="comment">// extra for valuePatternValidatorType</span></div>
-<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; context.patternPropertiesSchemas = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>SchemaType**<span class="keyword">&gt;</span>(context.factory.MallocState(<span class="keyword">sizeof</span>(<span class="keyword">const</span> SchemaType*) * count));</div>
-<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; context.patternPropertiesSchemaCount = 0;</div>
-<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; std::memset(context.patternPropertiesSchemas, 0, <span class="keyword">sizeof</span>(SchemaType*) * count);</div>
-<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; }</div>
-<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;</div>
-<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div>
-<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; }</div>
-<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; </div>
-<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordtype">bool</span> Key(Context&amp; context, <span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, <span class="keywordtype">bool</span>)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">if</span> (patternProperties_) {</div>
-<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; context.patternPropertiesSchemaCount = 0;</div>
-<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; patternPropertyCount_; i++)</div>
-<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">if</span> (patternProperties_[i].pattern &amp;&amp; IsPatternMatch(patternProperties_[i].pattern, str, len)) {</div>
-<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = patternProperties_[i].schema;</div>
-<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; context.valueSchema = typeless_;</div>
-<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; }</div>
-<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; }</div>
-<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;</div>
-<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index;</div>
-<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">if</span> (FindPropertyIndex(ValueType(str, len).Move(), &amp;index)) {</div>
-<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">if</span> (context.patternPropertiesSchemaCount &gt; 0) {</div>
-<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = properties_[index].schema;</div>
-<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; context.valueSchema = typeless_;</div>
-<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; context.valuePatternValidatorType = Context::kPatternValidatorWithProperty;</div>
-<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; }</div>
-<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; context.valueSchema = properties_[index].schema;</div>
-<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;</div>
-<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordflow">if</span> (context.propertyExist)</div>
-<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; context.propertyExist[index] = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;</div>
-<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; }</div>
-<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;</div>
-<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">if</span> (additionalPropertiesSchema_) {</div>
-<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">if</span> (additionalPropertiesSchema_ &amp;&amp; context.patternPropertiesSchemaCount &gt; 0) {</div>
-<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = additionalPropertiesSchema_;</div>
-<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; context.valueSchema = typeless_;</div>
-<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; context.valuePatternValidatorType = Context::kPatternValidatorWithAdditionalProperty;</div>
-<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; }</div>
-<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; context.valueSchema = additionalPropertiesSchema_;</div>
-<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; }</div>
-<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (additionalProperties_) {</div>
-<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; context.valueSchema = typeless_;</div>
-<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div>
-<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;</div>
-<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">if</span> (context.patternPropertiesSchemaCount == 0) <span class="comment">// patternProperties are not additional properties</span></div>
-<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetAdditionalPropertiesString());</div>
-<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160;</div>
-<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; }</div>
-<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;</div>
-<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordtype">bool</span> EndObject(Context&amp; context, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">if</span> (hasRequired_)</div>
-<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index = 0; index &lt; propertyCount_; index++)</div>
-<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">if</span> (properties_[index].required)</div>
-<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">if</span> (!context.propertyExist[index])</div>
-<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetRequiredString());</div>
-<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160;</div>
-<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">if</span> (memberCount &lt; minProperties_)</div>
-<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinPropertiesString());</div>
-<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;</div>
-<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">if</span> (memberCount &gt; maxProperties_)</div>
-<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaxPropertiesString());</div>
-<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;</div>
-<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">if</span> (hasDependencies_) {</div>
-<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> sourceIndex = 0; sourceIndex &lt; propertyCount_; sourceIndex++)</div>
-<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">if</span> (context.propertyExist[sourceIndex]) {</div>
-<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">if</span> (properties_[sourceIndex].dependencies) {</div>
-<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> targetIndex = 0; targetIndex &lt; propertyCount_; targetIndex++)</div>
-<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">if</span> (properties_[sourceIndex].dependencies[targetIndex] &amp;&amp; !context.propertyExist[targetIndex])</div>
-<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetDependenciesString());</div>
-<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; }</div>
-<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (properties_[sourceIndex].dependenciesSchema)</div>
-<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">if</span> (!context.validators[properties_[sourceIndex].dependenciesValidatorIndex]-&gt;IsValid())</div>
-<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetDependenciesString());</div>
-<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div>
-<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; }</div>
-<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;</div>
-<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; }</div>
-<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;</div>
-<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordtype">bool</span> StartArray(Context&amp; context)<span class="keyword"> const </span>{ </div>
-<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; (1 &lt;&lt; kArraySchemaType)))</div>
-<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div>
-<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;</div>
-<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; context.arrayElementIndex = 0;</div>
-<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; context.inArray = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;</div>
-<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div>
-<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; }</div>
-<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;</div>
-<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordtype">bool</span> EndArray(Context&amp; context, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount)<span class="keyword"> const </span>{ </div>
-<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; context.inArray = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; </div>
-<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">if</span> (elementCount &lt; minItems_)</div>
-<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinItemsString());</div>
-<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; </div>
-<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordflow">if</span> (elementCount &gt; maxItems_)</div>
-<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaxItemsString());</div>
-<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;</div>
-<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; }</div>
-<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;</div>
-<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="comment">// Generate functions for string literal according to Ch</span></div>
-<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160;<span class="preprocessor">#define RAPIDJSON_STRING_(name, ...) \</span></div>
-<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;<span class="preprocessor"> static const ValueType&amp; Get##name##String() {\</span></div>
-<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;<span class="preprocessor"> static const Ch s[] = { __VA_ARGS__, &#39;\0&#39; };\</span></div>
-<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160;<span class="preprocessor"> static const ValueType v(s, static_cast&lt;SizeType&gt;(sizeof(s) / sizeof(Ch) - 1));\</span></div>
-<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160;<span class="preprocessor"> return v;\</span></div>
-<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160;<span class="preprocessor"> }</span></div>
-<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;</div>
-<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; RAPIDJSON_STRING_(Null, <span class="charliteral">&#39;n&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;l&#39;</span>, <span class="charliteral">&#39;l&#39;</span>)</div>
-<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; RAPIDJSON_STRING_(Boolean, &#39;b&#39;, &#39;o&#39;, &#39;o&#39;, &#39;l&#39;, &#39;e&#39;, &#39;a&#39;, &#39;n&#39;)</div>
-<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; RAPIDJSON_STRING_(Object, &#39;o&#39;, &#39;b&#39;, &#39;j&#39;, &#39;e&#39;, &#39;c&#39;, &#39;t&#39;)</div>
-<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; RAPIDJSON_STRING_(Array, &#39;a&#39;, &#39;r&#39;, &#39;r&#39;, &#39;a&#39;, &#39;y&#39;)</div>
-<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; RAPIDJSON_STRING_(String, &#39;s&#39;, &#39;t&#39;, &#39;r&#39;, &#39;i&#39;, &#39;n&#39;, &#39;g&#39;)</div>
-<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; RAPIDJSON_STRING_(Number, &#39;n&#39;, &#39;u&#39;, &#39;m&#39;, &#39;b&#39;, &#39;e&#39;, &#39;r&#39;)</div>
-<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; RAPIDJSON_STRING_(Integer, &#39;i&#39;, &#39;n&#39;, &#39;t&#39;, &#39;e&#39;, &#39;g&#39;, &#39;e&#39;, &#39;r&#39;)</div>
-<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; RAPIDJSON_STRING_(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>, &#39;t&#39;, &#39;y&#39;, &#39;p&#39;, &#39;e&#39;)</div>
-<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; RAPIDJSON_STRING_(Enum, &#39;e&#39;, &#39;n&#39;, &#39;u&#39;, &#39;m&#39;)</div>
-<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; RAPIDJSON_STRING_(AllOf, &#39;a&#39;, &#39;l&#39;, &#39;l&#39;, &#39;O&#39;, &#39;f&#39;)</div>
-<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; RAPIDJSON_STRING_(AnyOf, &#39;a&#39;, &#39;n&#39;, &#39;y&#39;, &#39;O&#39;, &#39;f&#39;)</div>
-<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; RAPIDJSON_STRING_(OneOf, &#39;o&#39;, &#39;n&#39;, &#39;e&#39;, &#39;O&#39;, &#39;f&#39;)</div>
-<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; RAPIDJSON_STRING_(Not, &#39;n&#39;, &#39;o&#39;, &#39;t&#39;)</div>
-<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; RAPIDJSON_STRING_(Properties, &#39;p&#39;, &#39;r&#39;, &#39;o&#39;, &#39;p&#39;, &#39;e&#39;, &#39;r&#39;, &#39;t&#39;, &#39;i&#39;, &#39;e&#39;, &#39;s&#39;)</div>
-<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; RAPIDJSON_STRING_(Required, &#39;r&#39;, &#39;e&#39;, &#39;q&#39;, &#39;u&#39;, &#39;i&#39;, &#39;r&#39;, &#39;e&#39;, &#39;d&#39;)</div>
-<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; RAPIDJSON_STRING_(Dependencies, &#39;d&#39;, &#39;e&#39;, &#39;p&#39;, &#39;e&#39;, &#39;n&#39;, &#39;d&#39;, &#39;e&#39;, &#39;n&#39;, &#39;c&#39;, &#39;i&#39;, &#39;e&#39;, &#39;s&#39;)</div>
-<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; RAPIDJSON_STRING_(PatternProperties, &#39;p&#39;, &#39;a&#39;, &#39;t&#39;, &#39;t&#39;, &#39;e&#39;, &#39;r&#39;, &#39;n&#39;, &#39;P&#39;, &#39;r&#39;, &#39;o&#39;, &#39;p&#39;, &#39;e&#39;, &#39;r&#39;, &#39;t&#39;, &#39;i&#39;, &#39;e&#39;, &#39;s&#39;)</div>
-<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; RAPIDJSON_STRING_(AdditionalProperties, &#39;a&#39;, &#39;d&#39;, &#39;d&#39;, &#39;i&#39;, &#39;t&#39;, &#39;i&#39;, &#39;o&#39;, &#39;n&#39;, &#39;a&#39;, &#39;l&#39;, &#39;P&#39;, &#39;r&#39;, &#39;o&#39;, &#39;p&#39;, &#39;e&#39;, &#39;r&#39;, &#39;t&#39;, &#39;i&#39;, &#39;e&#39;, &#39;s&#39;)</div>
-<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; RAPIDJSON_STRING_(MinProperties, &#39;m&#39;, &#39;i&#39;, &#39;n&#39;, &#39;P&#39;, &#39;r&#39;, &#39;o&#39;, &#39;p&#39;, &#39;e&#39;, &#39;r&#39;, &#39;t&#39;, &#39;i&#39;, &#39;e&#39;, &#39;s&#39;)</div>
-<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; RAPIDJSON_STRING_(MaxProperties, &#39;m&#39;, &#39;a&#39;, &#39;x&#39;, &#39;P&#39;, &#39;r&#39;, &#39;o&#39;, &#39;p&#39;, &#39;e&#39;, &#39;r&#39;, &#39;t&#39;, &#39;i&#39;, &#39;e&#39;, &#39;s&#39;)</div>
-<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; RAPIDJSON_STRING_(Items, &#39;i&#39;, &#39;t&#39;, &#39;e&#39;, &#39;m&#39;, &#39;s&#39;)</div>
-<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; RAPIDJSON_STRING_(MinItems, &#39;m&#39;, &#39;i&#39;, &#39;n&#39;, &#39;I&#39;, &#39;t&#39;, &#39;e&#39;, &#39;m&#39;, &#39;s&#39;)</div>
-<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; RAPIDJSON_STRING_(MaxItems, &#39;m&#39;, &#39;a&#39;, &#39;x&#39;, &#39;I&#39;, &#39;t&#39;, &#39;e&#39;, &#39;m&#39;, &#39;s&#39;)</div>
-<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; RAPIDJSON_STRING_(AdditionalItems, &#39;a&#39;, &#39;d&#39;, &#39;d&#39;, &#39;i&#39;, &#39;t&#39;, &#39;i&#39;, &#39;o&#39;, &#39;n&#39;, &#39;a&#39;, &#39;l&#39;, &#39;I&#39;, &#39;t&#39;, &#39;e&#39;, &#39;m&#39;, &#39;s&#39;)</div>
-<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; RAPIDJSON_STRING_(UniqueItems, &#39;u&#39;, &#39;n&#39;, &#39;i&#39;, &#39;q&#39;, &#39;u&#39;, &#39;e&#39;, &#39;I&#39;, &#39;t&#39;, &#39;e&#39;, &#39;m&#39;, &#39;s&#39;)</div>
-<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; RAPIDJSON_STRING_(MinLength, &#39;m&#39;, &#39;i&#39;, &#39;n&#39;, &#39;L&#39;, &#39;e&#39;, &#39;n&#39;, &#39;g&#39;, &#39;t&#39;, &#39;h&#39;)</div>
-<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; RAPIDJSON_STRING_(MaxLength, &#39;m&#39;, &#39;a&#39;, &#39;x&#39;, &#39;L&#39;, &#39;e&#39;, &#39;n&#39;, &#39;g&#39;, &#39;t&#39;, &#39;h&#39;)</div>
-<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; RAPIDJSON_STRING_(Pattern, &#39;p&#39;, &#39;a&#39;, &#39;t&#39;, &#39;t&#39;, &#39;e&#39;, &#39;r&#39;, &#39;n&#39;)</div>
-<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; RAPIDJSON_STRING_(Minimum, &#39;m&#39;, &#39;i&#39;, &#39;n&#39;, &#39;i&#39;, &#39;m&#39;, &#39;u&#39;, &#39;m&#39;)</div>
-<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; RAPIDJSON_STRING_(Maximum, &#39;m&#39;, &#39;a&#39;, &#39;x&#39;, &#39;i&#39;, &#39;m&#39;, &#39;u&#39;, &#39;m&#39;)</div>
-<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; RAPIDJSON_STRING_(ExclusiveMinimum, &#39;e&#39;, &#39;x&#39;, &#39;c&#39;, &#39;l&#39;, &#39;u&#39;, &#39;s&#39;, &#39;i&#39;, &#39;v&#39;, &#39;e&#39;, &#39;M&#39;, &#39;i&#39;, &#39;n&#39;, &#39;i&#39;, &#39;m&#39;, &#39;u&#39;, &#39;m&#39;)</div>
-<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; RAPIDJSON_STRING_(ExclusiveMaximum, &#39;e&#39;, &#39;x&#39;, &#39;c&#39;, &#39;l&#39;, &#39;u&#39;, &#39;s&#39;, &#39;i&#39;, &#39;v&#39;, &#39;e&#39;, &#39;M&#39;, &#39;a&#39;, &#39;x&#39;, &#39;i&#39;, &#39;m&#39;, &#39;u&#39;, &#39;m&#39;)</div>
-<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; RAPIDJSON_STRING_(MultipleOf, &#39;m&#39;, &#39;u&#39;, &#39;l&#39;, &#39;t&#39;, &#39;i&#39;, &#39;p&#39;, &#39;l&#39;, &#39;e&#39;, &#39;O&#39;, &#39;f&#39;)</div>
-<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160;</div>
-<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;<span class="preprocessor">#undef RAPIDJSON_STRING_</span></div>
-<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;</div>
-<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keyword">enum</span> SchemaValueType {</div>
-<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; kNullSchemaType,</div>
-<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; kBooleanSchemaType,</div>
-<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; kObjectSchemaType,</div>
-<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; kArraySchemaType,</div>
-<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; kStringSchemaType,</div>
-<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; kNumberSchemaType,</div>
-<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; kIntegerSchemaType,</div>
-<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; kTotalSchemaType</div>
-<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; };</div>
-<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;</div>
-<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX</span></div>
-<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keyword">typedef</span> internal::GenericRegex&lt;EncodingType&gt; RegexType;</div>
-<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;<span class="preprocessor">#elif RAPIDJSON_SCHEMA_USE_STDREGEX</span></div>
-<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keyword">typedef</span> std::basic_regex&lt;Ch&gt; RegexType;</div>
-<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">char</span> RegexType;</div>
-<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;</div>
-<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keyword">struct </span>SchemaArray {</div>
-<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; SchemaArray() : schemas(), count() {}</div>
-<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; ~SchemaArray() { AllocatorType::Free(schemas); }</div>
-<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keyword">const</span> SchemaType** schemas;</div>
-<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> begin; <span class="comment">// begin index of context.validators</span></div>
-<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count;</div>
-<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; };</div>
-<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;</div>
-<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> V1, <span class="keyword">typename</span> V2&gt;</div>
-<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordtype">void</span> AddUniqueElement(V1&amp; a, <span class="keyword">const</span> V2&amp; v) {</div>
-<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> V1::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr)</div>
-<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keywordflow">if</span> (*itr == v)</div>
-<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">return</span>;</div>
-<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; V1 c(v, *allocator_);</div>
-<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; a.PushBack(c, *allocator_);</div>
-<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; }</div>
-<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;</div>
-<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> ValueType* GetMember(<span class="keyword">const</span> ValueType&amp; value, <span class="keyword">const</span> ValueType&amp; name) {</div>
-<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keyword">typename</span> ValueType::ConstMemberIterator itr = value.FindMember(name);</div>
-<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">return</span> itr != value.MemberEnd() ? &amp;(itr-&gt;value) : 0;</div>
-<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; }</div>
-<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160;</div>
-<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> AssignIfExist(<span class="keywordtype">bool</span>&amp; out, <span class="keyword">const</span> ValueType&amp; value, <span class="keyword">const</span> ValueType&amp; name) {</div>
-<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, name))</div>
-<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsBool())</div>
-<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; out = v-&gt;GetBool();</div>
-<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; }</div>
-<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160;</div>
-<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> AssignIfExist(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&amp; out, <span class="keyword">const</span> ValueType&amp; value, <span class="keyword">const</span> ValueType&amp; name) {</div>
-<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, name))</div>
-<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsUint64() &amp;&amp; v-&gt;GetUint64() &lt;= <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(~0))</div>
-<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; out = static_cast&lt;SizeType&gt;(v-&gt;GetUint64());</div>
-<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; }</div>
-<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;</div>
-<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordtype">void</span> AssignIfExist(SchemaArray&amp; out, SchemaDocumentType&amp; schemaDocument, <span class="keyword">const</span> PointerType&amp; p, <span class="keyword">const</span> ValueType&amp; value, <span class="keyword">const</span> ValueType&amp; name, <span class="keyword">const</span> ValueType&amp; document) {</div>
-<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, name)) {</div>
-<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsArray() &amp;&amp; v-&gt;Size() &gt; 0) {</div>
-<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; PointerType q = p.Append(name, allocator_);</div>
-<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; out.count = v-&gt;Size();</div>
-<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; out.schemas = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>Schema**<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(out.count * <span class="keyword">sizeof</span>(<span class="keyword">const</span> Schema*)));</div>
-<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; memset(out.schemas, 0, <span class="keyword">sizeof</span>(Schema*)* out.count);</div>
-<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; out.count; i++)</div>
-<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; schemaDocument.CreateSchema(&amp;out.schemas[i], q.Append(i, allocator_), (*v)[i], document);</div>
-<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; out.begin = validatorCount_;</div>
-<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; validatorCount_ += out.count;</div>
-<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; }</div>
-<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; }</div>
-<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; }</div>
-<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;</div>
-<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX</span></div>
-<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueType&gt;</div>
-<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; RegexType* CreatePattern(<span class="keyword">const</span> ValueType&amp; value) {</div>
-<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="keywordflow">if</span> (value.IsString()) {</div>
-<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; RegexType* r = <span class="keyword">new</span> (allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(RegexType))) RegexType(value.GetString());</div>
-<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordflow">if</span> (!r-&gt;IsValid()) {</div>
-<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; r-&gt;~RegexType();</div>
-<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; AllocatorType::Free(r);</div>
-<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; r = 0;</div>
-<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; }</div>
-<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keywordflow">return</span> r;</div>
-<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; }</div>
-<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; }</div>
-<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;</div>
-<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> IsPatternMatch(<span class="keyword">const</span> RegexType* pattern, <span class="keyword">const</span> Ch *str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) {</div>
-<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; GenericRegexSearch&lt;RegexType&gt; rs(*pattern);</div>
-<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <span class="keywordflow">return</span> rs.Search(str);</div>
-<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; }</div>
-<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;<span class="preprocessor">#elif RAPIDJSON_SCHEMA_USE_STDREGEX</span></div>
-<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueType&gt;</div>
-<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; RegexType* CreatePattern(<span class="keyword">const</span> ValueType&amp; value) {</div>
-<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="keywordflow">if</span> (value.IsString())</div>
-<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordflow">try</span> {</div>
-<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> (allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(RegexType))) RegexType(value.GetString(), std::size_t(value.GetStringLength()), std::regex_constants::ECMAScript);</div>
-<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; }</div>
-<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::regex_error&amp;) {</div>
-<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; }</div>
-<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; }</div>
-<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;</div>
-<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> IsPatternMatch(<span class="keyword">const</span> RegexType* pattern, <span class="keyword">const</span> Ch *str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length) {</div>
-<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; std::match_results&lt;const Ch*&gt; r;</div>
-<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <span class="keywordflow">return</span> std::regex_search(str, str + length, r, *pattern);</div>
-<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; }</div>
-<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueType&gt;</div>
-<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; RegexType* CreatePattern(<span class="keyword">const</span> ValueType&amp;) { <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;</div>
-<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> IsPatternMatch(<span class="keyword">const</span> RegexType*, <span class="keyword">const</span> Ch *, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_SCHEMA_USE_STDREGEX</span></div>
-<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;</div>
-<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="keywordtype">void</span> AddType(<span class="keyword">const</span> ValueType&amp; type) {</div>
-<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keywordflow">if</span> (type == GetNullString() ) type_ |= 1 &lt;&lt; kNullSchemaType;</div>
-<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == GetBooleanString()) type_ |= 1 &lt;&lt; kBooleanSchemaType;</div>
-<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == GetObjectString() ) type_ |= 1 &lt;&lt; kObjectSchemaType;</div>
-<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == GetArrayString() ) type_ |= 1 &lt;&lt; kArraySchemaType;</div>
-<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == GetStringString() ) type_ |= 1 &lt;&lt; kStringSchemaType;</div>
-<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == GetIntegerString()) type_ |= 1 &lt;&lt; kIntegerSchemaType;</div>
-<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == GetNumberString() ) type_ |= (1 &lt;&lt; kNumberSchemaType) | (1 &lt;&lt; kIntegerSchemaType);</div>
-<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; }</div>
-<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;</div>
-<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordtype">bool</span> CreateParallelValidator(Context&amp; context)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">if</span> (enum_ || context.arrayUniqueness)</div>
-<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; context.hasher = context.factory.CreateHasher();</div>
-<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;</div>
-<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="keywordflow">if</span> (validatorCount_) {</div>
-<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(context.validators == 0);</div>
-<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; context.validators = <span class="keyword">static_cast&lt;</span>ISchemaValidator**<span class="keyword">&gt;</span>(context.factory.MallocState(<span class="keyword">sizeof</span>(ISchemaValidator*) * validatorCount_));</div>
-<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; context.validatorCount = validatorCount_;</div>
-<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;</div>
-<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">if</span> (allOf_.schemas)</div>
-<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; CreateSchemaValidators(context, allOf_);</div>
-<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;</div>
-<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keywordflow">if</span> (anyOf_.schemas)</div>
-<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; CreateSchemaValidators(context, anyOf_);</div>
-<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; </div>
-<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="keywordflow">if</span> (oneOf_.schemas)</div>
-<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; CreateSchemaValidators(context, oneOf_);</div>
-<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; </div>
-<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <span class="keywordflow">if</span> (not_)</div>
-<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; context.validators[notValidatorIndex_] = context.factory.CreateSchemaValidator(*not_);</div>
-<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; </div>
-<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <span class="keywordflow">if</span> (hasSchemaDependencies_) {</div>
-<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; propertyCount_; i++)</div>
-<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">if</span> (properties_[i].dependenciesSchema)</div>
-<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; context.validators[properties_[i].dependenciesValidatorIndex] = context.factory.CreateSchemaValidator(*properties_[i].dependenciesSchema);</div>
-<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; }</div>
-<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; }</div>
-<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;</div>
-<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; }</div>
-<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;</div>
-<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="keywordtype">void</span> CreateSchemaValidators(Context&amp; context, <span class="keyword">const</span> SchemaArray&amp; schemas)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; schemas.count; i++)</div>
-<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; context.validators[schemas.begin + i] = context.factory.CreateSchemaValidator(*schemas.schemas[i]);</div>
-<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; }</div>
-<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;</div>
-<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="comment">// O(n)</span></div>
-<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keywordtype">bool</span> FindPropertyIndex(<span class="keyword">const</span> ValueType&amp; name, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>* outIndex)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len = name.GetStringLength();</div>
-<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keyword">const</span> Ch* str = name.GetString();</div>
-<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index = 0; index &lt; propertyCount_; index++)</div>
-<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keywordflow">if</span> (properties_[index].name.GetStringLength() == len &amp;&amp; </div>
-<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; (std::memcmp(properties_[index].name.GetString(), str, <span class="keyword">sizeof</span>(Ch) * len) == 0))</div>
-<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; {</div>
-<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; *outIndex = index;</div>
-<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; }</div>
-<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; }</div>
-<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;</div>
-<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="keywordtype">bool</span> CheckInt(Context&amp; context, int64_t i)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; ((1 &lt;&lt; kIntegerSchemaType) | (1 &lt;&lt; kNumberSchemaType))))</div>
-<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div>
-<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;</div>
-<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">if</span> (!minimum_.IsNull()) {</div>
-<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">if</span> (minimum_.IsInt64()) {</div>
-<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordflow">if</span> (exclusiveMinimum_ ? i &lt;= minimum_.GetInt64() : i &lt; minimum_.GetInt64())</div>
-<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString());</div>
-<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; }</div>
-<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (minimum_.IsUint64()) {</div>
-<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString()); <span class="comment">// i &lt;= max(int64_t) &lt; minimum.GetUint64()</span></div>
-<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; }</div>
-<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!CheckDoubleMinimum(context, static_cast&lt;double&gt;(i)))</div>
-<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; }</div>
-<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;</div>
-<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keywordflow">if</span> (!maximum_.IsNull()) {</div>
-<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="keywordflow">if</span> (maximum_.IsInt64()) {</div>
-<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">if</span> (exclusiveMaximum_ ? i &gt;= maximum_.GetInt64() : i &gt; maximum_.GetInt64())</div>
-<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString());</div>
-<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; }</div>
-<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (maximum_.IsUint64()) { }</div>
-<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <span class="comment">/* do nothing */</span> <span class="comment">// i &lt;= max(int64_t) &lt; maximum_.GetUint64()</span></div>
-<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!CheckDoubleMaximum(context, static_cast&lt;double&gt;(i)))</div>
-<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; }</div>
-<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;</div>
-<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <span class="keywordflow">if</span> (!multipleOf_.IsNull()) {</div>
-<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <span class="keywordflow">if</span> (multipleOf_.IsUint64()) {</div>
-<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;uint64_t&gt;(i &gt;= 0 ? i : -i) % multipleOf_.GetUint64() != 0)</div>
-<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMultipleOfString());</div>
-<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; }</div>
-<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!CheckDoubleMultipleOf(context, static_cast&lt;double&gt;(i)))</div>
-<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; }</div>
-<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;</div>
-<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; }</div>
-<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;</div>
-<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keywordtype">bool</span> CheckUint(Context&amp; context, uint64_t i)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; ((1 &lt;&lt; kIntegerSchemaType) | (1 &lt;&lt; kNumberSchemaType))))</div>
-<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div>
-<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;</div>
-<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">if</span> (!minimum_.IsNull()) {</div>
-<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="keywordflow">if</span> (minimum_.IsUint64()) {</div>
-<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keywordflow">if</span> (exclusiveMinimum_ ? i &lt;= minimum_.GetUint64() : i &lt; minimum_.GetUint64())</div>
-<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString());</div>
-<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; }</div>
-<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (minimum_.IsInt64())</div>
-<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="comment">/* do nothing */</span>; <span class="comment">// i &gt;= 0 &gt; minimum.Getint64()</span></div>
-<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!CheckDoubleMinimum(context, static_cast&lt;double&gt;(i)))</div>
-<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; }</div>
-<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;</div>
-<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keywordflow">if</span> (!maximum_.IsNull()) {</div>
-<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <span class="keywordflow">if</span> (maximum_.IsUint64()) {</div>
-<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <span class="keywordflow">if</span> (exclusiveMaximum_ ? i &gt;= maximum_.GetUint64() : i &gt; maximum_.GetUint64())</div>
-<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString());</div>
-<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; }</div>
-<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (maximum_.IsInt64())</div>
-<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString()); <span class="comment">// i &gt;= 0 &gt; maximum_</span></div>
-<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!CheckDoubleMaximum(context, static_cast&lt;double&gt;(i)))</div>
-<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; }</div>
-<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;</div>
-<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keywordflow">if</span> (!multipleOf_.IsNull()) {</div>
-<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keywordflow">if</span> (multipleOf_.IsUint64()) {</div>
-<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="keywordflow">if</span> (i % multipleOf_.GetUint64() != 0)</div>
-<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMultipleOfString());</div>
-<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; }</div>
-<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!CheckDoubleMultipleOf(context, static_cast&lt;double&gt;(i)))</div>
-<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; }</div>
-<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;</div>
-<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; }</div>
-<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;</div>
-<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="keywordtype">bool</span> CheckDoubleMinimum(Context&amp; context, <span class="keywordtype">double</span> d)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keywordflow">if</span> (exclusiveMinimum_ ? d &lt;= minimum_.GetDouble() : d &lt; minimum_.GetDouble())</div>
-<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString());</div>
-<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; }</div>
-<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;</div>
-<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="keywordtype">bool</span> CheckDoubleMaximum(Context&amp; context, <span class="keywordtype">double</span> d)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keywordflow">if</span> (exclusiveMaximum_ ? d &gt;= maximum_.GetDouble() : d &gt; maximum_.GetDouble())</div>
-<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString());</div>
-<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; }</div>
-<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;</div>
-<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordtype">bool</span> CheckDoubleMultipleOf(Context&amp; context, <span class="keywordtype">double</span> d)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; <span class="keywordtype">double</span> a = std::abs(d), b = std::abs(multipleOf_.GetDouble());</div>
-<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="keywordtype">double</span> q = std::floor(a / b);</div>
-<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="keywordtype">double</span> r = a - q * b;</div>
-<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; <span class="keywordflow">if</span> (r &gt; 0.0)</div>
-<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMultipleOfString());</div>
-<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; }</div>
-<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;</div>
-<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keyword">struct </span>Property {</div>
-<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; Property() : schema(), dependenciesSchema(), dependenciesValidatorIndex(), dependencies(), required(false) {}</div>
-<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; ~Property() { AllocatorType::Free(dependencies); }</div>
-<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; SValue name;</div>
-<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="keyword">const</span> SchemaType* schema;</div>
-<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="keyword">const</span> SchemaType* dependenciesSchema;</div>
-<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> dependenciesValidatorIndex;</div>
-<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordtype">bool</span>* dependencies;</div>
-<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keywordtype">bool</span> required;</div>
-<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; };</div>
-<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;</div>
-<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keyword">struct </span>PatternProperty {</div>
-<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; PatternProperty() : schema(), pattern() {}</div>
-<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; ~PatternProperty() { </div>
-<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; <span class="keywordflow">if</span> (pattern) {</div>
-<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; pattern-&gt;~RegexType();</div>
-<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; AllocatorType::Free(pattern);</div>
-<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; }</div>
-<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; }</div>
-<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keyword">const</span> SchemaType* schema;</div>
-<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; RegexType* pattern;</div>
-<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; };</div>
-<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;</div>
-<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; AllocatorType* allocator_;</div>
-<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <span class="keyword">const</span> SchemaType* typeless_;</div>
-<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; uint64_t* enum_;</div>
-<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> enumCount_;</div>
-<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; SchemaArray allOf_;</div>
-<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; SchemaArray anyOf_;</div>
-<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; SchemaArray oneOf_;</div>
-<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <span class="keyword">const</span> SchemaType* not_;</div>
-<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordtype">unsigned</span> type_; <span class="comment">// bitmask of kSchemaType</span></div>
-<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> validatorCount_;</div>
-<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> notValidatorIndex_;</div>
-<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;</div>
-<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; Property* properties_;</div>
-<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="keyword">const</span> SchemaType* additionalPropertiesSchema_;</div>
-<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; PatternProperty* patternProperties_;</div>
-<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> patternPropertyCount_;</div>
-<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> propertyCount_;</div>
-<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> minProperties_;</div>
-<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> maxProperties_;</div>
-<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; <span class="keywordtype">bool</span> additionalProperties_;</div>
-<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; <span class="keywordtype">bool</span> hasDependencies_;</div>
-<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keywordtype">bool</span> hasRequired_;</div>
-<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="keywordtype">bool</span> hasSchemaDependencies_;</div>
-<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;</div>
-<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <span class="keyword">const</span> SchemaType* additionalItemsSchema_;</div>
-<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; <span class="keyword">const</span> SchemaType* itemsList_;</div>
-<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="keyword">const</span> SchemaType** itemsTuple_;</div>
-<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> itemsTupleCount_;</div>
-<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> minItems_;</div>
-<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> maxItems_;</div>
-<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <span class="keywordtype">bool</span> additionalItems_;</div>
-<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; <span class="keywordtype">bool</span> uniqueItems_;</div>
-<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;</div>
-<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; RegexType* pattern_;</div>
-<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> minLength_;</div>
-<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> maxLength_;</div>
-<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;</div>
-<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; SValue minimum_;</div>
-<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; SValue maximum_;</div>
-<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; SValue multipleOf_;</div>
-<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <span class="keywordtype">bool</span> exclusiveMinimum_;</div>
-<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; <span class="keywordtype">bool</span> exclusiveMaximum_;</div>
-<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;};</div>
-<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;</div>
-<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stack, <span class="keyword">typename</span> Ch&gt;</div>
-<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;<span class="keyword">struct </span>TokenHelper {</div>
-<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; RAPIDJSON_FORCEINLINE <span class="keyword">static</span> <span class="keywordtype">void</span> AppendIndexToken(Stack&amp; documentStack, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) {</div>
-<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; *documentStack.template Push&lt;Ch&gt;() = <span class="charliteral">&#39;/&#39;</span>;</div>
-<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="keywordtype">char</span> buffer[21];</div>
-<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <span class="keywordtype">size_t</span> length = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>((<span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) == 4 ? u32toa(index, buffer) : u64toa(index, buffer)) - buffer);</div>
-<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; length; i++)</div>
-<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; *documentStack.template Push&lt;Ch&gt;() = <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(buffer[i]);</div>
-<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; }</div>
-<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;};</div>
-<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;</div>
-<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;<span class="comment">// Partial specialized version for char to prevent buffer copying.</span></div>
-<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Stack&gt;</div>
-<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;<span class="keyword">struct </span>TokenHelper&lt;Stack, char&gt; {</div>
-<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; RAPIDJSON_FORCEINLINE <span class="keyword">static</span> <span class="keywordtype">void</span> AppendIndexToken(Stack&amp; documentStack, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) {</div>
-<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) == 4) {</div>
-<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; <span class="keywordtype">char</span> *buffer = documentStack.template Push&lt;char&gt;(1 + 10); <span class="comment">// &#39;/&#39; + uint</span></div>
-<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; *buffer++ = <span class="charliteral">&#39;/&#39;</span>;</div>
-<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::u32toa(index, buffer);</div>
-<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; documentStack.template Pop&lt;char&gt;(<span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(10 - (end - buffer)));</div>
-<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; }</div>
-<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <span class="keywordtype">char</span> *buffer = documentStack.template Push&lt;char&gt;(1 + 20); <span class="comment">// &#39;/&#39; + uint64</span></div>
-<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; *buffer++ = <span class="charliteral">&#39;/&#39;</span>;</div>
-<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::u64toa(index, buffer);</div>
-<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; documentStack.template Pop&lt;char&gt;(<span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(20 - (end - buffer)));</div>
-<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; }</div>
-<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; }</div>
-<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;};</div>
-<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;</div>
-<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;<span class="comment"></span><span class="comment">// IGenericRemoteSchemaDocumentProvider</span></div>
-<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;</div>
-<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SchemaDocumentType&gt;</div>
-<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;<span class="keyword">class </span>IGenericRemoteSchemaDocumentProvider {</div>
-<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::Ch Ch;</div>
-<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;</div>
-<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keyword">virtual</span> ~IGenericRemoteSchemaDocumentProvider() {}</div>
-<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> SchemaDocumentType* GetRemoteDocument(<span class="keyword">const</span> Ch* uri, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length) = 0;</div>
-<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;};</div>
-<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;<span class="comment"></span><span class="comment">// GenericSchemaDocument</span></div>
-<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;<span class="comment">//! JSON schema document.</span></div>
-<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;<span class="comment"> A JSON schema document is a compiled version of a JSON schema.</span></div>
-<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;<span class="comment"> It is basically a tree of internal::Schema.</span></div>
-<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;<span class="comment"> \note This is an immutable class (i.e. its instance cannot be modified after construction).</span></div>
-<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;<span class="comment"> \tparam ValueT Type of JSON value (e.g. \c Value ), which also determine the encoding.</span></div>
-<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;<span class="comment"> \tparam Allocator Allocator type for allocating memory of this document.</span></div>
-<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueT, <span class="keyword">typename</span> Allocator = CrtAllocator&gt;</div>
-<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;<span class="keyword">class </span>GenericSchemaDocument {</div>
-<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; <span class="keyword">typedef</span> ValueT ValueType;</div>
-<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; <span class="keyword">typedef</span> IGenericRemoteSchemaDocumentProvider&lt;GenericSchemaDocument&gt; IRemoteSchemaDocumentProviderType;</div>
-<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <span class="keyword">typedef</span> Allocator AllocatorType;</div>
-<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::EncodingType EncodingType;</div>
-<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> EncodingType::Ch Ch;</div>
-<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; <span class="keyword">typedef</span> internal::Schema&lt;GenericSchemaDocument&gt; SchemaType;</div>
-<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <span class="keyword">typedef</span> GenericPointer&lt;ValueType, Allocator&gt; PointerType;</div>
-<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span>internal::Schema&lt;GenericSchemaDocument&gt;;</div>
-<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>, <span class="keyword">typename</span>&gt;</div>
-<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span>GenericSchemaValidator;</div>
-<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;<span class="comment"> //! Constructor.</span></div>
-<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;<span class="comment"> Compile a JSON document into schema document.</span></div>
-<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;<span class="comment"> \param document A JSON document as source.</span></div>
-<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;<span class="comment"> \param remoteProvider An optional remote schema document provider for resolving remote reference. Can be null.</span></div>
-<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;<span class="comment"> \param allocator An optional allocator instance for allocating memory. Can be null.</span></div>
-<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01339"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_document.html#ad200cc7bcb193c8568cdbda7b7fd0496"> 1339</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html#ad200cc7bcb193c8568cdbda7b7fd0496">GenericSchemaDocument</a>(<span class="keyword">const</span> ValueType&amp; document, <a class="code" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IRemoteSchemaDocumentProviderType</a>* remoteProvider = 0, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0) :</div>
-<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; remoteProvider_(remoteProvider),</div>
-<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; allocator_(allocator),</div>
-<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; ownAllocator_(),</div>
-<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; root_(),</div>
-<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; typeless_(),</div>
-<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; schemaMap_(allocator, kInitialSchemaMapSize),</div>
-<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; schemaRef_(allocator, kInitialSchemaRefSize)</div>
-<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; {</div>
-<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keywordflow">if</span> (!allocator_)</div>
-<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; ownAllocator_ = allocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(<a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>)();</div>
-<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;</div>
-<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; typeless_ = <span class="keyword">static_cast&lt;</span>SchemaType*<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(SchemaType)));</div>
-<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; <span class="keyword">new</span> (typeless_) SchemaType(<span class="keyword">this</span>, <a class="code" href="classrapidjson_1_1_generic_pointer.html">PointerType</a>(), ValueType(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>).Move(), ValueType(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>).Move(), 0);</div>
-<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;</div>
-<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; <span class="comment">// Generate root schema, it will call CreateSchema() to create sub-schemas,</span></div>
-<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; <span class="comment">// And call AddRefSchema() if there are $ref.</span></div>
-<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; CreateSchemaRecursive(&amp;root_, <a class="code" href="classrapidjson_1_1_generic_pointer.html">PointerType</a>(), document, document);</div>
-<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;</div>
-<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; <span class="comment">// Resolve $ref</span></div>
-<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <span class="keywordflow">while</span> (!schemaRef_.Empty()) {</div>
-<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; SchemaRefEntry* refEntry = schemaRef_.template Pop&lt;SchemaRefEntry&gt;(1);</div>
-<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> SchemaType* s = GetSchema(refEntry-&gt;target)) {</div>
-<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <span class="keywordflow">if</span> (refEntry-&gt;schema)</div>
-<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; *refEntry-&gt;schema = s;</div>
-<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;</div>
-<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; <span class="comment">// Create entry in map if not exist</span></div>
-<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; <span class="keywordflow">if</span> (!GetSchema(refEntry-&gt;source)) {</div>
-<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; <span class="keyword">new</span> (schemaMap_.template Push&lt;SchemaEntry&gt;()) SchemaEntry(refEntry-&gt;source, const_cast&lt;SchemaType*&gt;(s), <span class="keyword">false</span>, allocator_);</div>
-<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; }</div>
-<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; }</div>
-<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (refEntry-&gt;schema)</div>
-<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; *refEntry-&gt;schema = typeless_;</div>
-<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;</div>
-<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; refEntry-&gt;~SchemaRefEntry();</div>
-<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; }</div>
-<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;</div>
-<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(root_ != 0);</div>
-<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;</div>
-<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; schemaRef_.ShrinkToFit(); <span class="comment">// Deallocate all memory for ref</span></div>
-<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; }</div>
-<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;</div>
-<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;<span class="comment"> //! Move constructor in C++11</span></div>
-<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>(<a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>&amp;&amp; rhs) RAPIDJSON_NOEXCEPT :</div>
-<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; remoteProvider_(rhs.remoteProvider_),</div>
-<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; allocator_(rhs.allocator_),</div>
-<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; ownAllocator_(rhs.ownAllocator_),</div>
-<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; root_(rhs.root_),</div>
-<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; typeless_(rhs.typeless_),</div>
-<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; schemaMap_(std::move(rhs.schemaMap_)),</div>
-<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; schemaRef_(std::move(rhs.schemaRef_))</div>
-<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; {</div>
-<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; rhs.remoteProvider_ = 0;</div>
-<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; rhs.allocator_ = 0;</div>
-<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; rhs.ownAllocator_ = 0;</div>
-<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; rhs.typeless_ = 0;</div>
-<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; }</div>
-<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;<span class="comment"> //! Destructor</span></div>
-<div class="line"><a name="l01400"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_document.html#adf6f3372013227873ed392dee1e752bf"> 1400</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html#adf6f3372013227873ed392dee1e752bf">~GenericSchemaDocument</a>() {</div>
-<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; <span class="keywordflow">while</span> (!schemaMap_.Empty())</div>
-<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; schemaMap_.template Pop&lt;SchemaEntry&gt;(1)-&gt;~SchemaEntry();</div>
-<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;</div>
-<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; <span class="keywordflow">if</span> (typeless_) {</div>
-<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; typeless_-&gt;~SchemaType();</div>
-<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; Allocator::Free(typeless_);</div>
-<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; }</div>
-<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;</div>
-<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; <a class="code" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a>(ownAllocator_);</div>
-<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; }</div>
-<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;<span class="comment"> //! Get the root schema.</span></div>
-<div class="line"><a name="l01413"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_document.html#af64ea17654ab0f1a91e382d422f91daf"> 1413</a></span>&#160;<span class="comment"></span> <span class="keyword">const</span> SchemaType&amp; <a class="code" href="classrapidjson_1_1_generic_schema_document.html#af64ea17654ab0f1a91e382d422f91daf">GetRoot</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *root_; }</div>
-<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;</div>
-<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;<span class="keyword">private</span>:<span class="comment"></span></div>
-<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;<span class="comment"> //! Prohibit copying</span></div>
-<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>&amp;);<span class="comment"></span></div>
-<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;<span class="comment"> //! Prohibit assignment</span></div>
-<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>&amp;);</div>
-<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;</div>
-<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="keyword">struct </span>SchemaRefEntry {</div>
-<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; SchemaRefEntry(<span class="keyword">const</span> PointerType&amp; s, <span class="keyword">const</span> PointerType&amp; t, <span class="keyword">const</span> SchemaType** outSchema, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator) : source(s, allocator), target(t, allocator), schema(outSchema) {}</div>
-<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; PointerType source;</div>
-<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; PointerType target;</div>
-<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <span class="keyword">const</span> SchemaType** schema;</div>
-<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; };</div>
-<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;</div>
-<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <span class="keyword">struct </span>SchemaEntry {</div>
-<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; SchemaEntry(<span class="keyword">const</span> PointerType&amp; p, SchemaType* s, <span class="keywordtype">bool</span> o, Allocator* allocator) : pointer(p, allocator), schema(s), owned(o) {}</div>
-<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; ~SchemaEntry() {</div>
-<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; <span class="keywordflow">if</span> (owned) {</div>
-<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; schema-&gt;~SchemaType();</div>
-<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; Allocator::Free(schema);</div>
-<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; }</div>
-<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; }</div>
-<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; PointerType pointer;</div>
-<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; SchemaType* schema;</div>
-<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <span class="keywordtype">bool</span> owned;</div>
-<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; };</div>
-<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;</div>
-<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; <span class="keywordtype">void</span> CreateSchemaRecursive(<span class="keyword">const</span> SchemaType** schema, <span class="keyword">const</span> PointerType&amp; pointer, <span class="keyword">const</span> ValueType&amp; v, <span class="keyword">const</span> ValueType&amp; document) {</div>
-<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <span class="keywordflow">if</span> (schema)</div>
-<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; *schema = typeless_;</div>
-<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;</div>
-<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; <span class="keywordflow">if</span> (v.GetType() == <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>) {</div>
-<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; <span class="keyword">const</span> SchemaType* s = GetSchema(pointer);</div>
-<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="keywordflow">if</span> (!s)</div>
-<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; CreateSchema(schema, pointer, v, document);</div>
-<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;</div>
-<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> ValueType::ConstMemberIterator itr = v.MemberBegin(); itr != v.MemberEnd(); ++itr)</div>
-<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; CreateSchemaRecursive(0, pointer.Append(itr-&gt;name, allocator_), itr-&gt;value, document);</div>
-<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; }</div>
-<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v.GetType() == <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>)</div>
-<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; v.Size(); i++)</div>
-<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; CreateSchemaRecursive(0, pointer.Append(i, allocator_), v[i], document);</div>
-<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; }</div>
-<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;</div>
-<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; <span class="keywordtype">void</span> CreateSchema(<span class="keyword">const</span> SchemaType** schema, <span class="keyword">const</span> PointerType&amp; pointer, <span class="keyword">const</span> ValueType&amp; v, <span class="keyword">const</span> ValueType&amp; document) {</div>
-<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(pointer.IsValid());</div>
-<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; <span class="keywordflow">if</span> (v.IsObject()) {</div>
-<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; <span class="keywordflow">if</span> (!HandleRefSchema(pointer, schema, v, document)) {</div>
-<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; SchemaType* s = <span class="keyword">new</span> (allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(SchemaType))) SchemaType(<span class="keyword">this</span>, pointer, v, document, allocator_);</div>
-<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <span class="keyword">new</span> (schemaMap_.template Push&lt;SchemaEntry&gt;()) SchemaEntry(pointer, s, <span class="keyword">true</span>, allocator_);</div>
-<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; <span class="keywordflow">if</span> (schema)</div>
-<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; *schema = s;</div>
-<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; }</div>
-<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; }</div>
-<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; }</div>
-<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;</div>
-<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; <span class="keywordtype">bool</span> HandleRefSchema(<span class="keyword">const</span> PointerType&amp; source, <span class="keyword">const</span> SchemaType** schema, <span class="keyword">const</span> ValueType&amp; v, <span class="keyword">const</span> ValueType&amp; document) {</div>
-<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> Ch kRefString[] = { <span class="charliteral">&#39;$&#39;</span>, <span class="charliteral">&#39;r&#39;</span>, <span class="charliteral">&#39;e&#39;</span>, <span class="charliteral">&#39;f&#39;</span>, <span class="charliteral">&#39;\0&#39;</span> };</div>
-<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> ValueType kRefValue(kRefString, 4);</div>
-<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;</div>
-<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; <span class="keyword">typename</span> ValueType::ConstMemberIterator itr = v.FindMember(kRefValue);</div>
-<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; <span class="keywordflow">if</span> (itr == v.MemberEnd())</div>
-<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;</div>
-<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; <span class="keywordflow">if</span> (itr-&gt;value.IsString()) {</div>
-<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len = itr-&gt;value.GetStringLength();</div>
-<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; <span class="keywordflow">if</span> (len &gt; 0) {</div>
-<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; <span class="keyword">const</span> Ch* s = itr-&gt;value.GetString();</div>
-<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0;</div>
-<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; <span class="keywordflow">while</span> (i &lt; len &amp;&amp; s[i] != <span class="charliteral">&#39;#&#39;</span>) <span class="comment">// Find the first #</span></div>
-<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; i++;</div>
-<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;</div>
-<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; <span class="keywordflow">if</span> (i &gt; 0) { <span class="comment">// Remote reference, resolve immediately</span></div>
-<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; <span class="keywordflow">if</span> (remoteProvider_) {</div>
-<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> GenericSchemaDocument* remoteDocument = remoteProvider_-&gt;GetRemoteDocument(s, i)) {</div>
-<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; PointerType pointer(&amp;s[i], len - i, allocator_);</div>
-<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; <span class="keywordflow">if</span> (pointer.IsValid()) {</div>
-<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> SchemaType* sc = remoteDocument-&gt;GetSchema(pointer)) {</div>
-<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; <span class="keywordflow">if</span> (schema)</div>
-<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; *schema = sc;</div>
-<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; }</div>
-<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; }</div>
-<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; }</div>
-<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; }</div>
-<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; }</div>
-<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (s[i] == <span class="charliteral">&#39;#&#39;</span>) { <span class="comment">// Local reference, defer resolution</span></div>
-<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; PointerType pointer(&amp;s[i], len - i, allocator_);</div>
-<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; <span class="keywordflow">if</span> (pointer.IsValid()) {</div>
-<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* nv = pointer.Get(document))</div>
-<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; <span class="keywordflow">if</span> (HandleRefSchema(source, schema, *nv, document))</div>
-<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;</div>
-<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <span class="keyword">new</span> (schemaRef_.template Push&lt;SchemaRefEntry&gt;()) SchemaRefEntry(source, pointer, schema, allocator_);</div>
-<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; }</div>
-<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; }</div>
-<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; }</div>
-<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; }</div>
-<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; }</div>
-<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;</div>
-<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <span class="keyword">const</span> SchemaType* GetSchema(<span class="keyword">const</span> PointerType&amp; pointer)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> SchemaEntry* target = schemaMap_.template Bottom&lt;SchemaEntry&gt;(); target != schemaMap_.template End&lt;SchemaEntry&gt;(); ++target)</div>
-<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; <span class="keywordflow">if</span> (pointer == target-&gt;pointer)</div>
-<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; <span class="keywordflow">return</span> target-&gt;schema;</div>
-<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; <span class="keywordflow">return</span> 0;</div>
-<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; }</div>
-<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;</div>
-<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; PointerType GetPointer(<span class="keyword">const</span> SchemaType* schema)<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> SchemaEntry* target = schemaMap_.template Bottom&lt;SchemaEntry&gt;(); target != schemaMap_.template End&lt;SchemaEntry&gt;(); ++target)</div>
-<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; <span class="keywordflow">if</span> (schema == target-&gt;schema)</div>
-<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <span class="keywordflow">return</span> target-&gt;pointer;</div>
-<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; <span class="keywordflow">return</span> PointerType();</div>
-<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; }</div>
-<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;</div>
-<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; <span class="keyword">const</span> SchemaType* GetTypeless()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> typeless_; }</div>
-<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;</div>
-<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kInitialSchemaMapSize = 64;</div>
-<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kInitialSchemaRefSize = 64;</div>
-<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;</div>
-<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; IRemoteSchemaDocumentProviderType* remoteProvider_;</div>
-<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; Allocator *allocator_;</div>
-<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; Allocator *ownAllocator_;</div>
-<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; <span class="keyword">const</span> SchemaType* root_; <span class="comment">//!&lt; Root schema.</span></div>
-<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;<span class="comment"></span> SchemaType* typeless_;</div>
-<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; internal::Stack&lt;Allocator&gt; schemaMap_; <span class="comment">// Stores created Pointer -&gt; Schemas</span></div>
-<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; internal::Stack&lt;Allocator&gt; schemaRef_; <span class="comment">// Stores Pointer from $ref and schema which holds the $ref</span></div>
-<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;};</div>
-<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;<span class="comment">//! GenericSchemaDocument using Value type.</span></div>
-<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> GenericSchemaDocument&lt;Value&gt; <a class="code" href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf">SchemaDocument</a>;<span class="comment"></span></div>
-<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;<span class="comment">//! IGenericRemoteSchemaDocumentProvider using SchemaDocument.</span></div>
-<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> IGenericRemoteSchemaDocumentProvider&lt;SchemaDocument&gt; <a class="code" href="namespacerapidjson.html#af91eb8eea47b79d75b23e29fa9c0abb5">IRemoteSchemaDocumentProvider</a>;</div>
-<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;<span class="comment"></span><span class="comment">// GenericSchemaValidator</span></div>
-<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;<span class="comment">//! JSON Schema Validator.</span></div>
-<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;<span class="comment"> A SAX style JSON schema validator.</span></div>
-<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;<span class="comment"> It uses a \c GenericSchemaDocument to validate SAX events.</span></div>
-<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;<span class="comment"> It delegates the incoming SAX events to an output handler.</span></div>
-<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;<span class="comment"> The default output handler does nothing.</span></div>
-<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;<span class="comment"> It can be reused multiple times by calling \c Reset().</span></div>
-<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;<span class="comment"> \tparam SchemaDocumentType Type of schema document.</span></div>
-<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;<span class="comment"> \tparam OutputHandler Type of output handler. Default handler does nothing.</span></div>
-<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;<span class="comment"> \tparam StateAllocator Allocator for storing the internal validation states.</span></div>
-<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;<span class="keyword">template</span> &lt;</div>
-<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; <span class="keyword">typename</span> SchemaDocumentType,</div>
-<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; <span class="keyword">typename</span> OutputHandler = BaseReaderHandler&lt;typename SchemaDocumentType::SchemaType::EncodingType&gt;,</div>
-<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; <span class="keyword">typename</span> StateAllocator = CrtAllocator&gt;</div>
-<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;<span class="keyword">class </span>GenericSchemaValidator :</div>
-<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; <span class="keyword">public</span> internal::ISchemaStateFactory&lt;typename SchemaDocumentType::SchemaType&gt;, </div>
-<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; <span class="keyword">public</span> internal::ISchemaValidator</div>
-<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;{</div>
-<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::SchemaType SchemaType;</div>
-<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::PointerType PointerType;</div>
-<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaType::EncodingType EncodingType;</div>
-<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> EncodingType::Ch Ch;</div>
-<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;<span class="comment"> //! Constructor without output handler.</span></div>
-<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;<span class="comment"> \param schemaDocument The schema document to conform to.</span></div>
-<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;<span class="comment"> \param allocator Optional allocator for storing internal validation states.</span></div>
-<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;<span class="comment"> \param schemaStackCapacity Optional initial capacity of schema path stack.</span></div>
-<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;<span class="comment"> \param documentStackCapacity Optional initial capacity of document path stack.</span></div>
-<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01585"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#acc07bd08b00195d84bb5b83f59c593d3"> 1585</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#acc07bd08b00195d84bb5b83f59c593d3">GenericSchemaValidator</a>(</div>
-<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; <span class="keyword">const</span> SchemaDocumentType&amp; schemaDocument,</div>
-<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; StateAllocator* allocator = 0, </div>
-<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; <span class="keywordtype">size_t</span> schemaStackCapacity = kDefaultSchemaStackCapacity,</div>
-<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; <span class="keywordtype">size_t</span> documentStackCapacity = kDefaultDocumentStackCapacity)</div>
-<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; :</div>
-<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; schemaDocument_(&amp;schemaDocument),</div>
-<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; root_(schemaDocument.GetRoot()),</div>
-<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; stateAllocator_(allocator),</div>
-<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; ownStateAllocator_(0),</div>
-<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; schemaStack_(allocator, schemaStackCapacity),</div>
-<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; documentStack_(allocator, documentStackCapacity),</div>
-<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; outputHandler_(CreateNullHandler()),</div>
-<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; valid_(true)</div>
-<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;#if RAPIDJSON_SCHEMA_VERBOSE</div>
-<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; , depth_(0)</div>
-<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;#endif</div>
-<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; {</div>
-<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; }</div>
-<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;<span class="comment"> //! Constructor with output handler.</span></div>
-<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;<span class="comment"> \param schemaDocument The schema document to conform to.</span></div>
-<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;<span class="comment"> \param allocator Optional allocator for storing internal validation states.</span></div>
-<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;<span class="comment"> \param schemaStackCapacity Optional initial capacity of schema path stack.</span></div>
-<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;<span class="comment"> \param documentStackCapacity Optional initial capacity of document path stack.</span></div>
-<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01612"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#a0e1d8f19381bd53d77cc00a9a6dcd067"> 1612</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#a0e1d8f19381bd53d77cc00a9a6dcd067">GenericSchemaValidator</a>(</div>
-<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; <span class="keyword">const</span> SchemaDocumentType&amp; schemaDocument,</div>
-<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; OutputHandler&amp; outputHandler,</div>
-<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; StateAllocator* allocator = 0, </div>
-<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; <span class="keywordtype">size_t</span> schemaStackCapacity = kDefaultSchemaStackCapacity,</div>
-<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; <span class="keywordtype">size_t</span> documentStackCapacity = kDefaultDocumentStackCapacity)</div>
-<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; :</div>
-<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; schemaDocument_(&amp;schemaDocument),</div>
-<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; root_(schemaDocument.GetRoot()),</div>
-<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; stateAllocator_(allocator),</div>
-<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; ownStateAllocator_(0),</div>
-<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; schemaStack_(allocator, schemaStackCapacity),</div>
-<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; documentStack_(allocator, documentStackCapacity),</div>
-<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; outputHandler_(outputHandler),</div>
-<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; nullHandler_(0),</div>
-<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; valid_(true)</div>
-<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;#if RAPIDJSON_SCHEMA_VERBOSE</div>
-<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; , depth_(0)</div>
-<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;#endif</div>
-<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; {</div>
-<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; }</div>
-<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;<span class="comment"> //! Destructor.</span></div>
-<div class="line"><a name="l01635"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#ad9f00d71bf62b8983cf2514c43fb1572"> 1635</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#ad9f00d71bf62b8983cf2514c43fb1572">~GenericSchemaValidator</a>() {</div>
-<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; Reset();</div>
-<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; <span class="keywordflow">if</span> (nullHandler_) {</div>
-<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; nullHandler_-&gt;~OutputHandler();</div>
-<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; StateAllocator::Free(nullHandler_);</div>
-<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; }</div>
-<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; <a class="code" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a>(ownStateAllocator_);</div>
-<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; }</div>
-<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160;<span class="comment"> //! Reset the internal states.</span></div>
-<div class="line"><a name="l01645"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#afe6cd0d9088a1d4cf8100c0efc9f76fc"> 1645</a></span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#afe6cd0d9088a1d4cf8100c0efc9f76fc">Reset</a>() {</div>
-<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; <span class="keywordflow">while</span> (!schemaStack_.Empty())</div>
-<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; PopSchema();</div>
-<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; documentStack_.Clear();</div>
-<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; valid_ = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; }</div>
-<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;<span class="comment"> //! Checks whether the current state is valid.</span></div>
-<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;<span class="comment"></span> <span class="comment">// Implementation of ISchemaValidator</span></div>
-<div class="line"><a name="l01654"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#ab520a4ee6df3e23ffb948c8d5ae7bf38"> 1654</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#ab520a4ee6df3e23ffb948c8d5ae7bf38">IsValid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> valid_; }</div>
-<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;<span class="comment"> //! Gets the JSON pointer pointed to the invalid schema.</span></div>
-<div class="line"><a name="l01657"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#a8381f8d4dca195449f086ffbd25bb9b7"> 1657</a></span>&#160;<span class="comment"></span> PointerType <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#a8381f8d4dca195449f086ffbd25bb9b7">GetInvalidSchemaPointer</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; <span class="keywordflow">return</span> schemaStack_.Empty() ? PointerType() : schemaDocument_-&gt;GetPointer(&amp;CurrentSchema());</div>
-<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; }</div>
-<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;<span class="comment"> //! Gets the keyword of invalid schema.</span></div>
-<div class="line"><a name="l01662"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#a914628c4d69faea91ada1dee61d25d59"> 1662</a></span>&#160;<span class="comment"></span> <span class="keyword">const</span> Ch* <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#a914628c4d69faea91ada1dee61d25d59">GetInvalidSchemaKeyword</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; <span class="keywordflow">return</span> schemaStack_.Empty() ? 0 : CurrentContext().invalidKeyword;</div>
-<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; }</div>
-<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;<span class="comment"> //! Gets the JSON pointer pointed to the invalid value.</span></div>
-<div class="line"><a name="l01667"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#af66e4a41d71c89edfabb176af7839f04"> 1667</a></span>&#160;<span class="comment"></span> PointerType <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#af66e4a41d71c89edfabb176af7839f04">GetInvalidDocumentPointer</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="keywordflow">return</span> documentStack_.Empty() ? PointerType() : PointerType(documentStack_.template Bottom&lt;Ch&gt;(), documentStack_.GetSize() / <span class="keyword">sizeof</span>(Ch));</div>
-<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; }</div>
-<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;</div>
-<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_VERBOSE</span></div>
-<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_() \</span></div>
-<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;<span class="preprocessor">RAPIDJSON_MULTILINEMACRO_BEGIN\</span></div>
-<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;<span class="preprocessor"> *documentStack_.template Push&lt;Ch&gt;() = &#39;\0&#39;;\</span></div>
-<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;<span class="preprocessor"> documentStack_.template Pop&lt;Ch&gt;(1);\</span></div>
-<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;<span class="preprocessor"> internal::PrintInvalidDocument(documentStack_.template Bottom&lt;Ch&gt;());\</span></div>
-<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;<span class="preprocessor">RAPIDJSON_MULTILINEMACRO_END</span></div>
-<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_()</span></div>
-<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;</div>
-<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_(method, arg1)\</span></div>
-<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;<span class="preprocessor"> if (!valid_) return false; \</span></div>
-<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;<span class="preprocessor"> if (!BeginValue() || !CurrentSchema().method arg1) {\</span></div>
-<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;<span class="preprocessor"> RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_();\</span></div>
-<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;<span class="preprocessor"> return valid_ = false;\</span></div>
-<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;<span class="preprocessor"> }</span></div>
-<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;</div>
-<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(method, arg2)\</span></div>
-<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;<span class="preprocessor"> for (Context* context = schemaStack_.template Bottom&lt;Context&gt;(); context != schemaStack_.template End&lt;Context&gt;(); context++) {\</span></div>
-<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;<span class="preprocessor"> if (context-&gt;hasher)\</span></div>
-<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;<span class="preprocessor"> static_cast&lt;HasherType*&gt;(context-&gt;hasher)-&gt;method arg2;\</span></div>
-<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;<span class="preprocessor"> if (context-&gt;validators)\</span></div>
-<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;<span class="preprocessor"> for (SizeType i_ = 0; i_ &lt; context-&gt;validatorCount; i_++)\</span></div>
-<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;<span class="preprocessor"> static_cast&lt;GenericSchemaValidator*&gt;(context-&gt;validators[i_])-&gt;method arg2;\</span></div>
-<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;<span class="preprocessor"> if (context-&gt;patternPropertiesValidators)\</span></div>
-<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;<span class="preprocessor"> for (SizeType i_ = 0; i_ &lt; context-&gt;patternPropertiesValidatorCount; i_++)\</span></div>
-<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;<span class="preprocessor"> static_cast&lt;GenericSchemaValidator*&gt;(context-&gt;patternPropertiesValidators[i_])-&gt;method arg2;\</span></div>
-<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;<span class="preprocessor"> }</span></div>
-<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;</div>
-<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HANDLE_END_(method, arg2)\</span></div>
-<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;<span class="preprocessor"> return valid_ = EndValue() &amp;&amp; outputHandler_.method arg2</span></div>
-<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;</div>
-<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HANDLE_VALUE_(method, arg1, arg2) \</span></div>
-<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;<span class="preprocessor"> RAPIDJSON_SCHEMA_HANDLE_BEGIN_ (method, arg1);\</span></div>
-<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160;<span class="preprocessor"> RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(method, arg2);\</span></div>
-<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;<span class="preprocessor"> RAPIDJSON_SCHEMA_HANDLE_END_ (method, arg2)</span></div>
-<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;</div>
-<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; <span class="keywordtype">bool</span> Null() { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Null, (CurrentContext() ), ( )); }</div>
-<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Bool, (CurrentContext(), b), (b)); }</div>
-<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Int, (CurrentContext(), i), (i)); }</div>
-<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> u) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Uint, (CurrentContext(), u), (u)); }</div>
-<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; <span class="keywordtype">bool</span> Int64(int64_t i) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Int64, (CurrentContext(), i), (i)); }</div>
-<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="keywordtype">bool</span> Uint64(uint64_t u) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Uint64, (CurrentContext(), u), (u)); }</div>
-<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span> d) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Double, (CurrentContext(), d), (d)); }</div>
-<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; <span class="keywordtype">bool</span> RawNumber(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy)</div>
-<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; { RAPIDJSON_SCHEMA_HANDLE_VALUE_(String, (CurrentContext(), str, length, copy), (str, length, copy)); }</div>
-<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy)</div>
-<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; { RAPIDJSON_SCHEMA_HANDLE_VALUE_(String, (CurrentContext(), str, length, copy), (str, length, copy)); }</div>
-<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;</div>
-<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; <span class="keywordtype">bool</span> StartObject() {</div>
-<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; RAPIDJSON_SCHEMA_HANDLE_BEGIN_(StartObject, (CurrentContext()));</div>
-<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(StartObject, ());</div>
-<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; <span class="keywordflow">return</span> valid_ = outputHandler_.StartObject();</div>
-<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; }</div>
-<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; </div>
-<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, <span class="keywordtype">bool</span> copy) {</div>
-<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <span class="keywordflow">if</span> (!valid_) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; AppendToken(str, len);</div>
-<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <span class="keywordflow">if</span> (!CurrentSchema().Key(CurrentContext(), str, len, copy)) <span class="keywordflow">return</span> valid_ = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(Key, (str, len, copy));</div>
-<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <span class="keywordflow">return</span> valid_ = outputHandler_.Key(str, len, copy);</div>
-<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; }</div>
-<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; </div>
-<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount) { </div>
-<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; <span class="keywordflow">if</span> (!valid_) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(EndObject, (memberCount));</div>
-<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; <span class="keywordflow">if</span> (!CurrentSchema().EndObject(CurrentContext(), memberCount)) <span class="keywordflow">return</span> valid_ = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; RAPIDJSON_SCHEMA_HANDLE_END_(EndObject, (memberCount));</div>
-<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; }</div>
-<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;</div>
-<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; <span class="keywordtype">bool</span> StartArray() {</div>
-<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; RAPIDJSON_SCHEMA_HANDLE_BEGIN_(StartArray, (CurrentContext()));</div>
-<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(StartArray, ());</div>
-<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; <span class="keywordflow">return</span> valid_ = outputHandler_.StartArray();</div>
-<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; }</div>
-<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; </div>
-<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount) {</div>
-<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; <span class="keywordflow">if</span> (!valid_) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(EndArray, (elementCount));</div>
-<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; <span class="keywordflow">if</span> (!CurrentSchema().EndArray(CurrentContext(), elementCount)) <span class="keywordflow">return</span> valid_ = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; RAPIDJSON_SCHEMA_HANDLE_END_(EndArray, (elementCount));</div>
-<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; }</div>
-<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;</div>
-<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;<span class="preprocessor">#undef RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_</span></div>
-<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;<span class="preprocessor">#undef RAPIDJSON_SCHEMA_HANDLE_BEGIN_</span></div>
-<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;<span class="preprocessor">#undef RAPIDJSON_SCHEMA_HANDLE_PARALLEL_</span></div>
-<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;<span class="preprocessor">#undef RAPIDJSON_SCHEMA_HANDLE_VALUE_</span></div>
-<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;</div>
-<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; <span class="comment">// Implementation of ISchemaStateFactory&lt;SchemaType&gt;</span></div>
-<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; <span class="keyword">virtual</span> ISchemaValidator* CreateSchemaValidator(<span class="keyword">const</span> SchemaType&amp; root) {</div>
-<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> (GetStateAllocator().Malloc(<span class="keyword">sizeof</span>(GenericSchemaValidator))) GenericSchemaValidator(*schemaDocument_, root,</div>
-<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;#<span class="keywordflow">if</span> RAPIDJSON_SCHEMA_VERBOSE</div>
-<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; depth_ + 1,</div>
-<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;#endif</div>
-<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; &amp;GetStateAllocator());</div>
-<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; }</div>
-<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;</div>
-<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> DestroySchemaValidator(ISchemaValidator* validator) {</div>
-<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; GenericSchemaValidator* v = <span class="keyword">static_cast&lt;</span>GenericSchemaValidator*<span class="keyword">&gt;</span>(validator);</div>
-<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; v-&gt;~GenericSchemaValidator();</div>
-<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; StateAllocator::Free(v);</div>
-<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; }</div>
-<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;</div>
-<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span>* CreateHasher() {</div>
-<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> (GetStateAllocator().Malloc(<span class="keyword">sizeof</span>(HasherType))) HasherType(&amp;GetStateAllocator());</div>
-<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; }</div>
-<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;</div>
-<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; <span class="keyword">virtual</span> uint64_t GetHashCode(<span class="keywordtype">void</span>* hasher) {</div>
-<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>HasherType*<span class="keyword">&gt;</span>(hasher)-&gt;GetHashCode();</div>
-<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; }</div>
-<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;</div>
-<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> DestroryHasher(<span class="keywordtype">void</span>* hasher) {</div>
-<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; HasherType* h = <span class="keyword">static_cast&lt;</span>HasherType*<span class="keyword">&gt;</span>(hasher);</div>
-<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; h-&gt;~HasherType();</div>
-<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; StateAllocator::Free(h);</div>
-<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; }</div>
-<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;</div>
-<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span>* MallocState(<span class="keywordtype">size_t</span> size) {</div>
-<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; <span class="keywordflow">return</span> GetStateAllocator().Malloc(size);</div>
-<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; }</div>
-<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;</div>
-<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> FreeState(<span class="keywordtype">void</span>* p) {</div>
-<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; StateAllocator::Free(p);</div>
-<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; }</div>
-<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;</div>
-<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaType::Context Context;</div>
-<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; <span class="keyword">typedef</span> GenericValue&lt;UTF8&lt;&gt;, StateAllocator&gt; HashCodeArray;</div>
-<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; <span class="keyword">typedef</span> internal::Hasher&lt;EncodingType, StateAllocator&gt; HasherType;</div>
-<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160;</div>
-<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; GenericSchemaValidator( </div>
-<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; <span class="keyword">const</span> SchemaDocumentType&amp; schemaDocument,</div>
-<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; <span class="keyword">const</span> SchemaType&amp; root,</div>
-<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;#<span class="keywordflow">if</span> RAPIDJSON_SCHEMA_VERBOSE</div>
-<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; <span class="keywordtype">unsigned</span> depth,</div>
-<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;#endif</div>
-<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; StateAllocator* allocator = 0,</div>
-<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; <span class="keywordtype">size_t</span> schemaStackCapacity = kDefaultSchemaStackCapacity,</div>
-<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <span class="keywordtype">size_t</span> documentStackCapacity = kDefaultDocumentStackCapacity)</div>
-<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; :</div>
-<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; schemaDocument_(&amp;schemaDocument),</div>
-<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; root_(root),</div>
-<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; stateAllocator_(allocator),</div>
-<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; ownStateAllocator_(0),</div>
-<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; schemaStack_(allocator, schemaStackCapacity),</div>
-<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; documentStack_(allocator, documentStackCapacity),</div>
-<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; outputHandler_(CreateNullHandler()),</div>
-<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; valid_(true)</div>
-<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;#if RAPIDJSON_SCHEMA_VERBOSE</div>
-<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; , depth_(depth)</div>
-<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;#endif</div>
-<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; {</div>
-<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; }</div>
-<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;</div>
-<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; StateAllocator&amp; GetStateAllocator() {</div>
-<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; <span class="keywordflow">if</span> (!stateAllocator_)</div>
-<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; stateAllocator_ = ownStateAllocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(StateAllocator)();</div>
-<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; <span class="keywordflow">return</span> *stateAllocator_;</div>
-<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; }</div>
-<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;</div>
-<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; <span class="keywordtype">bool</span> BeginValue() {</div>
-<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; <span class="keywordflow">if</span> (schemaStack_.Empty())</div>
-<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; PushSchema(root_);</div>
-<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; <span class="keywordflow">if</span> (CurrentContext().inArray)</div>
-<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; internal::TokenHelper&lt;internal::Stack&lt;StateAllocator&gt;, Ch&gt;::AppendIndexToken(documentStack_, CurrentContext().arrayElementIndex);</div>
-<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;</div>
-<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; <span class="keywordflow">if</span> (!CurrentSchema().BeginValue(CurrentContext()))</div>
-<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;</div>
-<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count = CurrentContext().patternPropertiesSchemaCount;</div>
-<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; <span class="keyword">const</span> SchemaType** sa = CurrentContext().patternPropertiesSchemas;</div>
-<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; <span class="keyword">typename</span> Context::PatternValidatorType patternValidatorType = CurrentContext().valuePatternValidatorType;</div>
-<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; <span class="keywordtype">bool</span> valueUniqueness = CurrentContext().valueUniqueness;</div>
-<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(CurrentContext().valueSchema);</div>
-<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; PushSchema(*CurrentContext().valueSchema);</div>
-<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;</div>
-<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; <span class="keywordflow">if</span> (count &gt; 0) {</div>
-<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; CurrentContext().objectPatternValidatorType = patternValidatorType;</div>
-<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; ISchemaValidator**&amp; va = CurrentContext().patternPropertiesValidators;</div>
-<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&amp; validatorCount = CurrentContext().patternPropertiesValidatorCount;</div>
-<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; va = <span class="keyword">static_cast&lt;</span>ISchemaValidator**<span class="keyword">&gt;</span>(MallocState(<span class="keyword">sizeof</span>(ISchemaValidator*) * count));</div>
-<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; count; i++)</div>
-<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; va[validatorCount++] = CreateSchemaValidator(*sa[i]);</div>
-<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; }</div>
-<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;</div>
-<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; CurrentContext().arrayUniqueness = valueUniqueness;</div>
-<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; }</div>
-<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; }</div>
-<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;</div>
-<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; <span class="keywordtype">bool</span> EndValue() {</div>
-<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; <span class="keywordflow">if</span> (!CurrentSchema().EndValue(CurrentContext()))</div>
-<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;</div>
-<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_VERBOSE</span></div>
-<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; GenericStringBuffer&lt;EncodingType&gt; sb;</div>
-<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; schemaDocument_-&gt;GetPointer(&amp;CurrentSchema()).Stringify(sb);</div>
-<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;</div>
-<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; *documentStack_.template Push&lt;Ch&gt;() = <span class="charliteral">&#39;\0&#39;</span>;</div>
-<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; documentStack_.template Pop&lt;Ch&gt;(1);</div>
-<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; internal::PrintValidatorPointers(depth_, sb.GetString(), documentStack_.template Bottom&lt;Ch&gt;());</div>
-<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;</div>
-<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160; uint64_t h = CurrentContext().arrayUniqueness ? <span class="keyword">static_cast&lt;</span>HasherType*<span class="keyword">&gt;</span>(CurrentContext().hasher)-&gt;GetHashCode() : 0;</div>
-<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; </div>
-<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; PopSchema();</div>
-<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;</div>
-<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160; <span class="keywordflow">if</span> (!schemaStack_.Empty()) {</div>
-<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; Context&amp; context = CurrentContext();</div>
-<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; <span class="keywordflow">if</span> (context.valueUniqueness) {</div>
-<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; HashCodeArray* a = <span class="keyword">static_cast&lt;</span>HashCodeArray*<span class="keyword">&gt;</span>(context.arrayElementHashCodes);</div>
-<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; <span class="keywordflow">if</span> (!a)</div>
-<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; CurrentContext().arrayElementHashCodes = a = <span class="keyword">new</span> (GetStateAllocator().Malloc(<span class="keyword">sizeof</span>(HashCodeArray))) HashCodeArray(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div>
-<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> HashCodeArray::ConstValueIterator itr = a-&gt;Begin(); itr != a-&gt;End(); ++itr)</div>
-<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; <span class="keywordflow">if</span> (itr-&gt;GetUint64() == h)</div>
-<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(SchemaType::GetUniqueItemsString());</div>
-<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; a-&gt;PushBack(h, GetStateAllocator());</div>
-<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; }</div>
-<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; }</div>
-<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;</div>
-<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; <span class="comment">// Remove the last token of document pointer</span></div>
-<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; <span class="keywordflow">while</span> (!documentStack_.Empty() &amp;&amp; *documentStack_.template Pop&lt;Ch&gt;(1) != <span class="charliteral">&#39;/&#39;</span>)</div>
-<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; ;</div>
-<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160;</div>
-<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; }</div>
-<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;</div>
-<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; <span class="keywordtype">void</span> AppendToken(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len) {</div>
-<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; documentStack_.template Reserve&lt;Ch&gt;(1 + len * 2); <span class="comment">// worst case all characters are escaped as two characters</span></div>
-<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; *documentStack_.template PushUnsafe&lt;Ch&gt;() = <span class="charliteral">&#39;/&#39;</span>;</div>
-<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; len; i++) {</div>
-<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; <span class="keywordflow">if</span> (str[i] == <span class="charliteral">&#39;~&#39;</span>) {</div>
-<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; *documentStack_.template PushUnsafe&lt;Ch&gt;() = <span class="charliteral">&#39;~&#39;</span>;</div>
-<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; *documentStack_.template PushUnsafe&lt;Ch&gt;() = <span class="charliteral">&#39;0&#39;</span>;</div>
-<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; }</div>
-<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (str[i] == <span class="charliteral">&#39;/&#39;</span>) {</div>
-<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; *documentStack_.template PushUnsafe&lt;Ch&gt;() = <span class="charliteral">&#39;~&#39;</span>;</div>
-<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; *documentStack_.template PushUnsafe&lt;Ch&gt;() = <span class="charliteral">&#39;1&#39;</span>;</div>
-<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; }</div>
-<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; *documentStack_.template PushUnsafe&lt;Ch&gt;() = str[i];</div>
-<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160; }</div>
-<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; }</div>
-<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;</div>
-<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> PushSchema(<span class="keyword">const</span> SchemaType&amp; schema) { <span class="keyword">new</span> (schemaStack_.template Push&lt;Context&gt;()) Context(*<span class="keyword">this</span>, &amp;schema); }</div>
-<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; </div>
-<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> PopSchema() {</div>
-<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; Context* c = schemaStack_.template Pop&lt;Context&gt;(1);</div>
-<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; <span class="keywordflow">if</span> (HashCodeArray* a = static_cast&lt;HashCodeArray*&gt;(c-&gt;arrayElementHashCodes)) {</div>
-<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; a-&gt;~HashCodeArray();</div>
-<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; StateAllocator::Free(a);</div>
-<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; }</div>
-<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; c-&gt;~Context();</div>
-<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; }</div>
-<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160;</div>
-<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; <span class="keyword">const</span> SchemaType&amp; CurrentSchema()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *schemaStack_.template Top&lt;Context&gt;()-&gt;schema; }</div>
-<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; Context&amp; CurrentContext() { <span class="keywordflow">return</span> *schemaStack_.template Top&lt;Context&gt;(); }</div>
-<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; <span class="keyword">const</span> Context&amp; CurrentContext()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *schemaStack_.template Top&lt;Context&gt;(); }</div>
-<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160;</div>
-<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; OutputHandler&amp; CreateNullHandler() {</div>
-<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; <span class="keywordflow">return</span> *(nullHandler_ = <span class="keyword">new</span> (GetStateAllocator().Malloc(<span class="keyword">sizeof</span>(OutputHandler))) OutputHandler);</div>
-<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; }</div>
-<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160;</div>
-<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultSchemaStackCapacity = 1024;</div>
-<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultDocumentStackCapacity = 256;</div>
-<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; <span class="keyword">const</span> SchemaDocumentType* schemaDocument_;</div>
-<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; <span class="keyword">const</span> SchemaType&amp; root_;</div>
-<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; StateAllocator* stateAllocator_;</div>
-<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; StateAllocator* ownStateAllocator_;</div>
-<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; internal::Stack&lt;StateAllocator&gt; schemaStack_; <span class="comment">//!&lt; stack to store the current path of schema (BaseSchemaType *)</span></div>
-<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;<span class="comment"></span> internal::Stack&lt;StateAllocator&gt; documentStack_; <span class="comment">//!&lt; stack to store the current path of validating document (Ch)</span></div>
-<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;<span class="comment"></span> OutputHandler&amp; outputHandler_;</div>
-<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; OutputHandler* nullHandler_;</div>
-<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; <span class="keywordtype">bool</span> valid_;</div>
-<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_VERBOSE</span></div>
-<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; <span class="keywordtype">unsigned</span> depth_;</div>
-<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;};</div>
-<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160;</div>
-<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160;<span class="keyword">typedef</span> GenericSchemaValidator&lt;SchemaDocument&gt; SchemaValidator;</div>
-<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;<span class="comment"></span><span class="comment">// SchemaValidatingReader</span></div>
-<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160;<span class="comment">//! A helper class for parsing with validation.</span></div>
-<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160;<span class="comment"> This helper class is a functor, designed as a parameter of \ref GenericDocument::Populate().</span></div>
-<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160;<span class="comment"> \tparam parseFlags Combination of \ref ParseFlag.</span></div>
-<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;<span class="comment"> \tparam InputStream Type of input stream, implementing Stream concept.</span></div>
-<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160;<span class="comment"> \tparam SourceEncoding Encoding of the input stream.</span></div>
-<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160;<span class="comment"> \tparam SchemaDocumentType Type of schema document.</span></div>
-<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;<span class="comment"> \tparam StackAllocator Allocator type for stack.</span></div>
-<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160;<span class="keyword">template</span> &lt;</div>
-<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; <span class="keywordtype">unsigned</span> parseFlags,</div>
-<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; <span class="keyword">typename</span> InputStream,</div>
-<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; <span class="keyword">typename</span> SourceEncoding,</div>
-<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; <span class="keyword">typename</span> SchemaDocumentType = SchemaDocument,</div>
-<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; <span class="keyword">typename</span> StackAllocator = CrtAllocator&gt;</div>
-<div class="line"><a name="l01973"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_schema_validating_reader.html"> 1973</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_schema_validating_reader.html">SchemaValidatingReader</a> {</div>
-<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::PointerType PointerType;</div>
-<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> InputStream::Ch Ch;</div>
-<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;<span class="comment"> //! Constructor</span></div>
-<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160;<span class="comment"> \param is Input stream.</span></div>
-<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;<span class="comment"> \param sd Schema document.</span></div>
-<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l01983"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_schema_validating_reader.html#a1e2bcc66cad23376241cd91e8bf8c706"> 1983</a></span>&#160; <a class="code" href="classrapidjson_1_1_schema_validating_reader.html#a1e2bcc66cad23376241cd91e8bf8c706">SchemaValidatingReader</a>(InputStream&amp; is, <span class="keyword">const</span> SchemaDocumentType&amp; sd) : is_(is), sd_(sd), invalidSchemaKeyword_(), isValid_(true) {}</div>
-<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160;</div>
-<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Handler&gt;</div>
-<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; <span class="keywordtype">bool</span> operator()(<a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div>
-<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; <a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader&lt;SourceEncoding, typename SchemaDocumentType::EncodingType, StackAllocator&gt;</a> reader;</div>
-<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160; <a class="code" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator&lt;SchemaDocumentType, Handler&gt;</a> validator(sd_, handler);</div>
-<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160; parseResult_ = reader.template Parse&lt;parseFlags&gt;(is_, validator);</div>
-<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;</div>
-<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; isValid_ = validator.IsValid();</div>
-<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; <span class="keywordflow">if</span> (isValid_) {</div>
-<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160; invalidSchemaPointer_ = PointerType();</div>
-<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160; invalidSchemaKeyword_ = 0;</div>
-<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; invalidDocumentPointer_ = PointerType();</div>
-<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; }</div>
-<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; invalidSchemaPointer_ = validator.GetInvalidSchemaPointer();</div>
-<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160; invalidSchemaKeyword_ = validator.GetInvalidSchemaKeyword();</div>
-<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; invalidDocumentPointer_ = validator.GetInvalidDocumentPointer();</div>
-<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; }</div>
-<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160;</div>
-<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; <span class="keywordflow">return</span> parseResult_;</div>
-<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; }</div>
-<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;</div>
-<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160; <span class="keyword">const</span> ParseResult&amp; GetParseResult()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_; }</div>
-<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160; <span class="keywordtype">bool</span> IsValid()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> isValid_; }</div>
-<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; <span class="keyword">const</span> PointerType&amp; GetInvalidSchemaPointer()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> invalidSchemaPointer_; }</div>
-<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160; <span class="keyword">const</span> Ch* GetInvalidSchemaKeyword()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> invalidSchemaKeyword_; }</div>
-<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; <span class="keyword">const</span> PointerType&amp; GetInvalidDocumentPointer()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> invalidDocumentPointer_; }</div>
-<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;</div>
-<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160; InputStream&amp; is_;</div>
-<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; <span class="keyword">const</span> SchemaDocumentType&amp; sd_;</div>
-<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160;</div>
-<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160; ParseResult parseResult_;</div>
-<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160; PointerType invalidSchemaPointer_;</div>
-<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160; <span class="keyword">const</span> Ch* invalidSchemaKeyword_;</div>
-<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; PointerType invalidDocumentPointer_;</div>
-<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; <span class="keywordtype">bool</span> isValid_;</div>
-<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;};</div>
-<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;</div>
-<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160;</div>
-<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_SCHEMA_H_</span></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available-&gt;</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip-&gt; All rights reserved-&gt;</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License-&gt; You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource-&gt;org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied-&gt; See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License-&gt;</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_SCHEMA_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="document_8h.html">document.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;pointer.h&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span> <span class="comment">// abs, floor</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#if !defined(RAPIDJSON_SCHEMA_USE_INTERNALREGEX)</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_USE_INTERNALREGEX 1</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_USE_INTERNALREGEX 0</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#if !RAPIDJSON_SCHEMA_USE_INTERNALREGEX &amp;&amp; !defined(RAPIDJSON_SCHEMA_USE_STDREGEX) &amp;&amp; (__cplusplus &gt;=201103L || (defined(_MSC_VER) &amp;&amp; _MSC_VER &gt;= 1800))</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_USE_STDREGEX 1</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_USE_STDREGEX 0</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;internal/regex.h&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#elif RAPIDJSON_SCHEMA_USE_STDREGEX</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &lt;regex&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX || RAPIDJSON_SCHEMA_USE_STDREGEX</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HAS_REGEX 1</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HAS_REGEX 0</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_SCHEMA_VERBOSE</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_VERBOSE 0</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_VERBOSE</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &quot;stringbuffer.h&quot;</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#if defined(__GNUC__)</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;RAPIDJSON_DIAG_OFF(effc++)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;RAPIDJSON_DIAG_OFF(weak-vtables)</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;RAPIDJSON_DIAG_OFF(exit-time-destructors)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;RAPIDJSON_DIAG_OFF(c++98-compat-pedantic)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;RAPIDJSON_DIAG_OFF(variadic-macros)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;RAPIDJSON_DIAG_OFF(4512) <span class="comment">// assignment operator could not be generated</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"></span><span class="comment">// Verbose Utilities</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_VERBOSE</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> PrintInvalidKeyword(<span class="keyword">const</span> <span class="keywordtype">char</span>* keyword) {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; printf(<span class="stringliteral">&quot;Fail keyword: %s\n&quot;</span>, keyword);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;}</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> PrintInvalidKeyword(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* keyword) {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; wprintf(L<span class="stringliteral">&quot;Fail keyword: %ls\n&quot;</span>, keyword);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> PrintInvalidDocument(<span class="keyword">const</span> <span class="keywordtype">char</span>* document) {</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; printf(<span class="stringliteral">&quot;Fail document: %s\n\n&quot;</span>, document);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> PrintInvalidDocument(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* document) {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; wprintf(L<span class="stringliteral">&quot;Fail document: %ls\n\n&quot;</span>, document);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> PrintValidatorPointers(<span class="keywordtype">unsigned</span> depth, <span class="keyword">const</span> <span class="keywordtype">char</span>* s, <span class="keyword">const</span> <span class="keywordtype">char</span>* d) {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; printf(<span class="stringliteral">&quot;S: %*s%s\nD: %*s%s\n\n&quot;</span>, depth * 4, <span class="stringliteral">&quot; &quot;</span>, s, depth * 4, <span class="stringliteral">&quot; &quot;</span>, d);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;}</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> PrintValidatorPointers(<span class="keywordtype">unsigned</span> depth, <span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* s, <span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* d) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; wprintf(L<span class="stringliteral">&quot;S: %*ls%ls\nD: %*ls%ls\n\n&quot;</span>, depth * 4, L<span class="stringliteral">&quot; &quot;</span>, s, depth * 4, L<span class="stringliteral">&quot; &quot;</span>, d);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_SCHEMA_VERBOSE</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment"></span><span class="comment">// RAPIDJSON_INVALID_KEYWORD_RETURN</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_VERBOSE</span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="preprocessor">#define RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword) internal::PrintInvalidKeyword(keyword)</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor">#define RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword)</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor">#define RAPIDJSON_INVALID_KEYWORD_RETURN(keyword)\</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="preprocessor">RAPIDJSON_MULTILINEMACRO_BEGIN\</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor"> context.invalidKeyword = keyword.GetString();\</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="preprocessor"> RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword.GetString());\</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor"> return false;\</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor">RAPIDJSON_MULTILINEMACRO_END</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"></span><span class="comment">// Forward declarations</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueType, <span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword">class </span>GenericSchemaDocument;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SchemaDocumentType&gt;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="keyword">class </span>Schema;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"></span><span class="comment">// ISchemaValidator</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="keyword">class </span>ISchemaValidator {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keyword">virtual</span> ~ISchemaValidator() {}</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> IsValid() <span class="keyword">const</span> = 0;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;};</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment"></span><span class="comment">// ISchemaStateFactory</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SchemaType&gt;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="keyword">class </span>ISchemaStateFactory {</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">virtual</span> ~ISchemaStateFactory() {}</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">virtual</span> ISchemaValidator* CreateSchemaValidator(<span class="keyword">const</span> SchemaType&amp;) = 0;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> DestroySchemaValidator(ISchemaValidator* validator) = 0;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span>* CreateHasher() = 0;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">virtual</span> uint64_t GetHashCode(<span class="keywordtype">void</span>* hasher) = 0;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> DestroryHasher(<span class="keywordtype">void</span>* hasher) = 0;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span>* MallocState(<span class="keywordtype">size_t</span> size) = 0;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> FreeState(<span class="keywordtype">void</span>* p) = 0;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;};</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"></span><span class="comment">// Hasher</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment">// For comparison of compound value</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="keyword">class </span>Hasher {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; Hasher(Allocator* allocator = 0, <span class="keywordtype">size_t</span> stackCapacity = kDefaultSize) : stack_(allocator, stackCapacity) {}</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordtype">bool</span> Null() { <span class="keywordflow">return</span> WriteType(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">kNullType</a>); }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b) { <span class="keywordflow">return</span> WriteType(b ? <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">kTrueType</a> : <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">kFalseType</a>); }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i) { Number n; n.u.i = i; n.d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(i); <span class="keywordflow">return</span> WriteNumber(n); }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> u) { Number n; n.u.u = u; n.d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(u); <span class="keywordflow">return</span> WriteNumber(n); }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordtype">bool</span> Int64(int64_t i) { Number n; n.u.i = i; n.d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(i); <span class="keywordflow">return</span> WriteNumber(n); }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordtype">bool</span> Uint64(uint64_t u) { Number n; n.u.u = u; n.d = <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span>(u); <span class="keywordflow">return</span> WriteNumber(n); }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span> d) { </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; Number n; </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span> (d &lt; 0) n.u.i = <span class="keyword">static_cast&lt;</span>int64_t<span class="keyword">&gt;</span>(d);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">else</span> n.u.u = <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span>(d); </div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; n.d = d;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">return</span> WriteNumber(n);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordtype">bool</span> RawNumber(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, <span class="keywordtype">bool</span>) {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; WriteBuffer(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>, str, len * <span class="keyword">sizeof</span>(Ch));</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, <span class="keywordtype">bool</span>) {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; WriteBuffer(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>, str, len * <span class="keyword">sizeof</span>(Ch));</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordtype">bool</span> StartObject() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, <span class="keywordtype">bool</span> copy) { <span class="keywordflow">return</span> String(str, len, copy); }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount) { </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; uint64_t h = Hash(0, <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; uint64_t* kv = stack_.template Pop&lt;uint64_t&gt;(memberCount * 2);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; memberCount; i++)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; h ^= Hash(kv[i * 2], kv[i * 2 + 1]); <span class="comment">// Use xor to achieve member order insensitive</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; *stack_.template Push&lt;uint64_t&gt;() = h;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordtype">bool</span> StartArray() { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount) { </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; uint64_t h = Hash(0, <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; uint64_t* e = stack_.template Pop&lt;uint64_t&gt;(elementCount);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; elementCount; i++)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; h = Hash(h, e[i]); <span class="comment">// Use hash to achieve element order sensitive</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; *stack_.template Push&lt;uint64_t&gt;() = h;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordtype">bool</span> IsValid()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stack_.GetSize() == <span class="keyword">sizeof</span>(uint64_t); }</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; uint64_t GetHashCode()<span class="keyword"> const </span>{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(IsValid());</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> *stack_.template Top&lt;uint64_t&gt;();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultSize = 256;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keyword">struct </span>Number {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keyword">union </span>U {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; uint64_t u;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; int64_t i;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }u;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordtype">double</span> d;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; };</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordtype">bool</span> WriteType(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type) { <span class="keywordflow">return</span> WriteBuffer(type, 0, 0); }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordtype">bool</span> WriteNumber(<span class="keyword">const</span> Number&amp; n) { <span class="keywordflow">return</span> WriteBuffer(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>, &amp;n, <span class="keyword">sizeof</span>(n)); }</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordtype">bool</span> WriteBuffer(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type, <span class="keyword">const</span> <span class="keywordtype">void</span>* data, <span class="keywordtype">size_t</span> len) {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// FNV-1a from http://isthe.com/chongo/tech/comp/fnv/</span></div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; uint64_t h = Hash(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x84222325, 0xcbf29ce4), type);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* d = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(data);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; len; i++)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; h = Hash(h, d[i]);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; *stack_.template Push&lt;uint64_t&gt;() = h;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">static</span> uint64_t Hash(uint64_t h, uint64_t d) {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> uint64_t kPrime = <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x00000100, 0x000001b3);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; h ^= d;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; h *= kPrime;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">return</span> h;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; Stack&lt;Allocator&gt; stack_;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;};</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"></span><span class="comment">// SchemaValidationContext</span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SchemaDocumentType&gt;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keyword">struct </span>SchemaValidationContext {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">typedef</span> Schema&lt;SchemaDocumentType&gt; SchemaType;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keyword">typedef</span> ISchemaStateFactory&lt;SchemaType&gt; SchemaValidatorFactoryType;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaType::ValueType ValueType;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::Ch Ch;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keyword">enum</span> PatternValidatorType {</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; kPatternValidatorOnly,</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; kPatternValidatorWithProperty,</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; kPatternValidatorWithAdditionalProperty</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; };</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; SchemaValidationContext(SchemaValidatorFactoryType&amp; f, <span class="keyword">const</span> SchemaType* s) :</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; factory(f),</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; schema(s),</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; valueSchema(),</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; invalidKeyword(),</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; hasher(),</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; arrayElementHashCodes(),</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; validators(),</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; validatorCount(),</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; patternPropertiesValidators(),</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; patternPropertiesValidatorCount(),</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; patternPropertiesSchemas(),</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; patternPropertiesSchemaCount(),</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; valuePatternValidatorType(kPatternValidatorOnly),</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; propertyExist(),</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; inArray(false),</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; valueUniqueness(false),</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; arrayUniqueness(false)</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; }</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; ~SchemaValidationContext() {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span> (hasher)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; factory.DestroryHasher(hasher);</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span> (validators) {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; validatorCount; i++)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; factory.DestroySchemaValidator(validators[i]);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; factory.FreeState(validators);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span> (patternPropertiesValidators) {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; patternPropertiesValidatorCount; i++)</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; factory.DestroySchemaValidator(patternPropertiesValidators[i]);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; factory.FreeState(patternPropertiesValidators);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">if</span> (patternPropertiesSchemas)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; factory.FreeState(patternPropertiesSchemas);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">if</span> (propertyExist)</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; factory.FreeState(propertyExist);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; SchemaValidatorFactoryType&amp; factory;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keyword">const</span> SchemaType* schema;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">const</span> SchemaType* valueSchema;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keyword">const</span> Ch* invalidKeyword;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordtype">void</span>* hasher; <span class="comment">// Only validator access</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordtype">void</span>* arrayElementHashCodes; <span class="comment">// Only validator access this</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; ISchemaValidator** validators;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> validatorCount;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; ISchemaValidator** patternPropertiesValidators;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> patternPropertiesValidatorCount;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">const</span> SchemaType** patternPropertiesSchemas;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> patternPropertiesSchemaCount;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; PatternValidatorType valuePatternValidatorType;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; PatternValidatorType objectPatternValidatorType;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> arrayElementIndex;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordtype">bool</span>* propertyExist;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordtype">bool</span> inArray;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordtype">bool</span> valueUniqueness;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordtype">bool</span> arrayUniqueness;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;};</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment"></span><span class="comment">// Schema</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SchemaDocumentType&gt;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="keyword">class </span>Schema {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::ValueType ValueType;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::AllocatorType AllocatorType;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::PointerType PointerType;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::EncodingType EncodingType;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> EncodingType::Ch Ch;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keyword">typedef</span> SchemaValidationContext&lt;SchemaDocumentType&gt; Context;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keyword">typedef</span> Schema&lt;SchemaDocumentType&gt; SchemaType;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keyword">typedef</span> GenericValue&lt;EncodingType, AllocatorType&gt; SValue;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span>GenericSchemaDocument&lt;ValueType, AllocatorType&gt;;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; Schema(SchemaDocumentType* schemaDocument, <span class="keyword">const</span> PointerType&amp; p, <span class="keyword">const</span> ValueType&amp; value, <span class="keyword">const</span> ValueType&amp; document, AllocatorType* allocator) :</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; allocator_(allocator),</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; typeless_(schemaDocument-&gt;GetTypeless()),</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; enum_(),</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; enumCount_(),</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; not_(),</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; type_((1 &lt;&lt; kTotalSchemaType) - 1), <span class="comment">// typeless</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; validatorCount_(),</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; properties_(),</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; additionalPropertiesSchema_(),</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; patternProperties_(),</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; patternPropertyCount_(),</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; propertyCount_(),</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; minProperties_(),</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; maxProperties_(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(~0)),</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; additionalProperties_(true),</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; hasDependencies_(),</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; hasRequired_(),</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; hasSchemaDependencies_(),</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; additionalItemsSchema_(),</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; itemsList_(),</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; itemsTuple_(),</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; itemsTupleCount_(),</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; minItems_(),</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; maxItems_(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(~0)),</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; additionalItems_(true),</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; uniqueItems_(false),</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; pattern_(),</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; minLength_(0),</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; maxLength_(~<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(0)),</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; exclusiveMinimum_(false),</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; exclusiveMaximum_(false)</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::ValueType ValueType;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::ConstValueIterator ConstValueIterator;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::ConstMemberIterator ConstMemberIterator;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">if</span> (!value.IsObject())</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetTypeString())) {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; type_ = 0;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsString())</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; AddType(*v);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v-&gt;IsArray())</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">for</span> (ConstValueIterator itr = v-&gt;Begin(); itr != v-&gt;End(); ++itr)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; AddType(*itr);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; }</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetEnumString()))</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsArray() &amp;&amp; v-&gt;Size() &gt; 0) {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; enum_ = <span class="keyword">static_cast&lt;</span>uint64_t*<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(uint64_t) * v-&gt;Size()));</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">for</span> (ConstValueIterator itr = v-&gt;Begin(); itr != v-&gt;End(); ++itr) {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keyword">typedef</span> Hasher&lt;EncodingType, MemoryPoolAllocator&lt;&gt; &gt; EnumHasherType;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordtype">char</span> buffer[256 + 24];</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; MemoryPoolAllocator&lt;&gt; hasherAllocator(buffer, <span class="keyword">sizeof</span>(buffer));</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; EnumHasherType h(&amp;hasherAllocator, 256);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; itr-&gt;Accept(h);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; enum_[enumCount_++] = h.GetHashCode();</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; }</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">if</span> (schemaDocument) {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; AssignIfExist(allOf_, *schemaDocument, p, value, GetAllOfString(), document);</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; AssignIfExist(anyOf_, *schemaDocument, p, value, GetAnyOfString(), document);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; AssignIfExist(oneOf_, *schemaDocument, p, value, GetOneOfString(), document);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; }</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetNotString())) {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; schemaDocument-&gt;CreateSchema(&amp;not_, p.Append(GetNotString(), allocator_), *v, document);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; notValidatorIndex_ = validatorCount_;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; validatorCount_++;</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="comment">// Object</span></div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keyword">const</span> ValueType* properties = GetMember(value, GetPropertiesString());</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keyword">const</span> ValueType* required = GetMember(value, GetRequiredString());</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <span class="keyword">const</span> ValueType* dependencies = GetMember(value, GetDependenciesString());</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="comment">// Gather properties from properties/required/dependencies</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; SValue allProperties(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">if</span> (properties &amp;&amp; properties-&gt;IsObject())</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">for</span> (ConstMemberIterator itr = properties-&gt;MemberBegin(); itr != properties-&gt;MemberEnd(); ++itr)</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; AddUniqueElement(allProperties, itr-&gt;name);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; </div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">if</span> (required &amp;&amp; required-&gt;IsArray())</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">for</span> (ConstValueIterator itr = required-&gt;Begin(); itr != required-&gt;End(); ++itr)</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">if</span> (itr-&gt;IsString())</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; AddUniqueElement(allProperties, *itr);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">if</span> (dependencies &amp;&amp; dependencies-&gt;IsObject())</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">for</span> (ConstMemberIterator itr = dependencies-&gt;MemberBegin(); itr != dependencies-&gt;MemberEnd(); ++itr) {</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; AddUniqueElement(allProperties, itr-&gt;name);</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">if</span> (itr-&gt;value.IsArray())</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">for</span> (ConstValueIterator i = itr-&gt;value.Begin(); i != itr-&gt;value.End(); ++i)</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">if</span> (i-&gt;IsString())</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; AddUniqueElement(allProperties, *i);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; }</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">if</span> (allProperties.Size() &gt; 0) {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; propertyCount_ = allProperties.Size();</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; properties_ = <span class="keyword">static_cast&lt;</span>Property*<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(Property) * propertyCount_));</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; propertyCount_; i++) {</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keyword">new</span> (&amp;properties_[i]) Property();</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; properties_[i].name = allProperties[i];</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; properties_[i].schema = typeless_;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keywordflow">if</span> (properties &amp;&amp; properties-&gt;IsObject()) {</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; PointerType q = p.Append(GetPropertiesString(), allocator_);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">for</span> (ConstMemberIterator itr = properties-&gt;MemberBegin(); itr != properties-&gt;MemberEnd(); ++itr) {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">if</span> (FindPropertyIndex(itr-&gt;name, &amp;index))</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; schemaDocument-&gt;CreateSchema(&amp;properties_[index].schema, q.Append(itr-&gt;name, allocator_), itr-&gt;value, document);</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; }</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; }</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetPatternPropertiesString())) {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; PointerType q = p.Append(GetPatternPropertiesString(), allocator_);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; patternProperties_ = <span class="keyword">static_cast&lt;</span>PatternProperty*<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(PatternProperty) * v-&gt;MemberCount()));</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; patternPropertyCount_ = 0;</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">for</span> (ConstMemberIterator itr = v-&gt;MemberBegin(); itr != v-&gt;MemberEnd(); ++itr) {</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keyword">new</span> (&amp;patternProperties_[patternPropertyCount_]) PatternProperty();</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; patternProperties_[patternPropertyCount_].pattern = CreatePattern(itr-&gt;name);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; schemaDocument-&gt;CreateSchema(&amp;patternProperties_[patternPropertyCount_].schema, q.Append(itr-&gt;name, allocator_), itr-&gt;value, document);</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; patternPropertyCount_++;</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">if</span> (required &amp;&amp; required-&gt;IsArray())</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">for</span> (ConstValueIterator itr = required-&gt;Begin(); itr != required-&gt;End(); ++itr)</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; <span class="keywordflow">if</span> (itr-&gt;IsString()) {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">if</span> (FindPropertyIndex(*itr, &amp;index)) {</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; properties_[index].required = <span class="keyword">true</span>;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; hasRequired_ = <span class="keyword">true</span>;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; }</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span> (dependencies &amp;&amp; dependencies-&gt;IsObject()) {</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; PointerType q = p.Append(GetDependenciesString(), allocator_);</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; hasDependencies_ = <span class="keyword">true</span>;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">for</span> (ConstMemberIterator itr = dependencies-&gt;MemberBegin(); itr != dependencies-&gt;MemberEnd(); ++itr) {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> sourceIndex;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span> (FindPropertyIndex(itr-&gt;name, &amp;sourceIndex)) {</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">if</span> (itr-&gt;value.IsArray()) {</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; properties_[sourceIndex].dependencies = <span class="keyword">static_cast&lt;</span><span class="keywordtype">bool</span>*<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(<span class="keywordtype">bool</span>) * propertyCount_));</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; std::memset(properties_[sourceIndex].dependencies, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">bool</span>)* propertyCount_);</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">for</span> (ConstValueIterator targetItr = itr-&gt;value.Begin(); targetItr != itr-&gt;value.End(); ++targetItr) {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> targetIndex;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">if</span> (FindPropertyIndex(*targetItr, &amp;targetIndex))</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; properties_[sourceIndex].dependencies[targetIndex] = <span class="keyword">true</span>;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (itr-&gt;value.IsObject()) {</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; hasSchemaDependencies_ = <span class="keyword">true</span>;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; schemaDocument-&gt;CreateSchema(&amp;properties_[sourceIndex].dependenciesSchema, q.Append(itr-&gt;name, allocator_), itr-&gt;value, document);</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; properties_[sourceIndex].dependenciesValidatorIndex = validatorCount_;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; validatorCount_++;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetAdditionalPropertiesString())) {</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsBool())</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; additionalProperties_ = v-&gt;GetBool();</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v-&gt;IsObject())</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; schemaDocument-&gt;CreateSchema(&amp;additionalPropertiesSchema_, p.Append(GetAdditionalPropertiesString(), allocator_), *v, document);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; AssignIfExist(minProperties_, value, GetMinPropertiesString());</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; AssignIfExist(maxProperties_, value, GetMaxPropertiesString());</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="comment">// Array</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetItemsString())) {</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; PointerType q = p.Append(GetItemsString(), allocator_);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsObject()) <span class="comment">// List validation</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; schemaDocument-&gt;CreateSchema(&amp;itemsList_, q, *v, document);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v-&gt;IsArray()) { <span class="comment">// Tuple validation</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; itemsTuple_ = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>Schema**<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(<span class="keyword">const</span> Schema*) * v-&gt;Size()));</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index = 0;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keywordflow">for</span> (ConstValueIterator itr = v-&gt;Begin(); itr != v-&gt;End(); ++itr, index++)</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; schemaDocument-&gt;CreateSchema(&amp;itemsTuple_[itemsTupleCount_++], q.Append(index, allocator_), *itr, document);</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; }</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; AssignIfExist(minItems_, value, GetMinItemsString());</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; AssignIfExist(maxItems_, value, GetMaxItemsString());</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetAdditionalItemsString())) {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsBool())</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; additionalItems_ = v-&gt;GetBool();</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v-&gt;IsObject())</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; schemaDocument-&gt;CreateSchema(&amp;additionalItemsSchema_, p.Append(GetAdditionalItemsString(), allocator_), *v, document);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; AssignIfExist(uniqueItems_, value, GetUniqueItemsString());</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="comment">// String</span></div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; AssignIfExist(minLength_, value, GetMinLengthString());</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; AssignIfExist(maxLength_, value, GetMaxLengthString());</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetPatternString()))</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; pattern_ = CreatePattern(*v);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="comment">// Number</span></div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetMinimumString()))</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsNumber())</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; minimum_.CopyFrom(*v, *allocator_);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetMaximumString()))</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsNumber())</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; maximum_.CopyFrom(*v, *allocator_);</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; AssignIfExist(exclusiveMinimum_, value, GetExclusiveMinimumString());</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; AssignIfExist(exclusiveMaximum_, value, GetExclusiveMaximumString());</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, GetMultipleOfString()))</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsNumber() &amp;&amp; v-&gt;GetDouble() &gt; 0.0)</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; multipleOf_.CopyFrom(*v, *allocator_);</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; }</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; ~Schema() {</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; AllocatorType::Free(enum_);</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">if</span> (properties_) {</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; propertyCount_; i++)</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; properties_[i].~Property();</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; AllocatorType::Free(properties_);</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; }</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">if</span> (patternProperties_) {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; patternPropertyCount_; i++)</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; patternProperties_[i].~PatternProperty();</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; AllocatorType::Free(patternProperties_);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; }</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; AllocatorType::Free(itemsTuple_);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_HAS_REGEX</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">if</span> (pattern_) {</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; pattern_-&gt;~RegexType();</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; AllocatorType::Free(pattern_);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordtype">bool</span> BeginValue(Context&amp; context)<span class="keyword"> const </span>{</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">if</span> (context.inArray) {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">if</span> (uniqueItems_)</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; context.valueUniqueness = <span class="keyword">true</span>;</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">if</span> (itemsList_)</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; context.valueSchema = itemsList_;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (itemsTuple_) {</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">if</span> (context.arrayElementIndex &lt; itemsTupleCount_)</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; context.valueSchema = itemsTuple_[context.arrayElementIndex];</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (additionalItemsSchema_)</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; context.valueSchema = additionalItemsSchema_;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (additionalItems_)</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; context.valueSchema = typeless_;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetItemsString());</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; }</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; context.valueSchema = typeless_;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; context.arrayElementIndex++;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; }</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">bool</span> EndValue(Context&amp; context)<span class="keyword"> const </span>{</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">if</span> (context.patternPropertiesValidatorCount &gt; 0) {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordtype">bool</span> otherValid = <span class="keyword">false</span>;</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count = context.patternPropertiesValidatorCount;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span> (context.objectPatternValidatorType != Context::kPatternValidatorOnly)</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; otherValid = context.patternPropertiesValidators[--count]-&gt;IsValid();</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordtype">bool</span> patternValid = <span class="keyword">true</span>;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; count; i++)</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">if</span> (!context.patternPropertiesValidators[i]-&gt;IsValid()) {</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; patternValid = <span class="keyword">false</span>;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">if</span> (context.objectPatternValidatorType == Context::kPatternValidatorOnly) {</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <span class="keywordflow">if</span> (!patternValid)</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternPropertiesString());</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (context.objectPatternValidatorType == Context::kPatternValidatorWithProperty) {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">if</span> (!patternValid || !otherValid)</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternPropertiesString());</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; }</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!patternValid &amp;&amp; !otherValid) <span class="comment">// kPatternValidatorWithAdditionalProperty)</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternPropertiesString());</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">if</span> (enum_) {</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keyword">const</span> uint64_t h = context.factory.GetHashCode(context.hasher);</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; enumCount_; i++)</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">if</span> (enum_[i] == h)</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">goto</span> foundEnum;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetEnumString());</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; foundEnum:;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">if</span> (allOf_.schemas)</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = allOf_.begin; i &lt; allOf_.begin + allOf_.count; i++)</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (!context.validators[i]-&gt;IsValid())</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetAllOfString());</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; </div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">if</span> (anyOf_.schemas) {</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = anyOf_.begin; i &lt; anyOf_.begin + anyOf_.count; i++)</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keywordflow">if</span> (context.validators[i]-&gt;IsValid())</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">goto</span> foundAny;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetAnyOfString());</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; foundAny:;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; }</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <span class="keywordflow">if</span> (oneOf_.schemas) {</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordtype">bool</span> oneValid = <span class="keyword">false</span>;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = oneOf_.begin; i &lt; oneOf_.begin + oneOf_.count; i++)</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">if</span> (context.validators[i]-&gt;IsValid()) {</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">if</span> (oneValid)</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetOneOfString());</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; oneValid = <span class="keyword">true</span>;</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; }</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">if</span> (!oneValid)</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetOneOfString());</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; }</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">if</span> (not_ &amp;&amp; context.validators[notValidatorIndex_]-&gt;IsValid())</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetNotString());</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; }</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordtype">bool</span> Null(Context&amp; context)<span class="keyword"> const </span>{ </div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; (1 &lt;&lt; kNullSchemaType)))</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; }</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; </div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordtype">bool</span> Bool(Context&amp; context, <span class="keywordtype">bool</span>)<span class="keyword"> const </span>{ </div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; (1 &lt;&lt; kBooleanSchemaType)))</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; }</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordtype">bool</span> Int(Context&amp; context, <span class="keywordtype">int</span> i)<span class="keyword"> const </span>{</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">if</span> (!CheckInt(context, i))</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; }</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <span class="keywordtype">bool</span> Uint(Context&amp; context, <span class="keywordtype">unsigned</span> u)<span class="keyword"> const </span>{</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; <span class="keywordflow">if</span> (!CheckUint(context, u))</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; }</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordtype">bool</span> Int64(Context&amp; context, int64_t i)<span class="keyword"> const </span>{</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">if</span> (!CheckInt(context, i))</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; <span class="keywordtype">bool</span> Uint64(Context&amp; context, uint64_t u)<span class="keyword"> const </span>{</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; <span class="keywordflow">if</span> (!CheckUint(context, u))</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; }</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordtype">bool</span> Double(Context&amp; context, <span class="keywordtype">double</span> d)<span class="keyword"> const </span>{</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; (1 &lt;&lt; kNumberSchemaType)))</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">if</span> (!minimum_.IsNull() &amp;&amp; !CheckDoubleMinimum(context, d))</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <span class="keywordflow">if</span> (!maximum_.IsNull() &amp;&amp; !CheckDoubleMaximum(context, d))</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; </div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <span class="keywordflow">if</span> (!multipleOf_.IsNull() &amp;&amp; !CheckDoubleMultipleOf(context, d))</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; </div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; }</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; </div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordtype">bool</span> String(Context&amp; context, <span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span>)<span class="keyword"> const </span>{</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; (1 &lt;&lt; kStringSchemaType)))</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">if</span> (minLength_ != 0 || maxLength_ != <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(~0)) {</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count;</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">if</span> (internal::CountStringCodePoint&lt;EncodingType&gt;(str, length, &amp;count)) {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordflow">if</span> (count &lt; minLength_)</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinLengthString());</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordflow">if</span> (count &gt; maxLength_)</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaxLengthString());</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; }</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; }</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">if</span> (pattern_ &amp;&amp; !IsPatternMatch(pattern_, str, length))</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternString());</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; }</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; <span class="keywordtype">bool</span> StartObject(Context&amp; context)<span class="keyword"> const </span>{ </div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; (1 &lt;&lt; kObjectSchemaType)))</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">if</span> (hasDependencies_ || hasRequired_) {</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; context.propertyExist = <span class="keyword">static_cast&lt;</span><span class="keywordtype">bool</span>*<span class="keyword">&gt;</span>(context.factory.MallocState(<span class="keyword">sizeof</span>(<span class="keywordtype">bool</span>) * propertyCount_));</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; std::memset(context.propertyExist, 0, <span class="keyword">sizeof</span>(<span class="keywordtype">bool</span>) * propertyCount_);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">if</span> (patternProperties_) { <span class="comment">// pre-allocate schema array</span></div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count = patternPropertyCount_ + 1; <span class="comment">// extra for valuePatternValidatorType</span></div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; context.patternPropertiesSchemas = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>SchemaType**<span class="keyword">&gt;</span>(context.factory.MallocState(<span class="keyword">sizeof</span>(<span class="keyword">const</span> SchemaType*) * count));</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; context.patternPropertiesSchemaCount = 0;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; std::memset(context.patternPropertiesSchemas, 0, <span class="keyword">sizeof</span>(SchemaType*) * count);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; }</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; }</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; </div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordtype">bool</span> Key(Context&amp; context, <span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, <span class="keywordtype">bool</span>)<span class="keyword"> const </span>{</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">if</span> (patternProperties_) {</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; context.patternPropertiesSchemaCount = 0;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; patternPropertyCount_; i++)</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">if</span> (patternProperties_[i].pattern &amp;&amp; IsPatternMatch(patternProperties_[i].pattern, str, len)) {</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = patternProperties_[i].schema;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; context.valueSchema = typeless_;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; }</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; }</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">if</span> (FindPropertyIndex(ValueType(str, len).Move(), &amp;index)) {</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">if</span> (context.patternPropertiesSchemaCount &gt; 0) {</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = properties_[index].schema;</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; context.valueSchema = typeless_;</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; context.valuePatternValidatorType = Context::kPatternValidatorWithProperty;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; }</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; context.valueSchema = properties_[index].schema;</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <span class="keywordflow">if</span> (context.propertyExist)</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; context.propertyExist[index] = <span class="keyword">true</span>;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; }</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">if</span> (additionalPropertiesSchema_) {</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">if</span> (additionalPropertiesSchema_ &amp;&amp; context.patternPropertiesSchemaCount &gt; 0) {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = additionalPropertiesSchema_;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; context.valueSchema = typeless_;</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; context.valuePatternValidatorType = Context::kPatternValidatorWithAdditionalProperty;</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; }</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; context.valueSchema = additionalPropertiesSchema_;</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; }</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (additionalProperties_) {</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; context.valueSchema = typeless_;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">if</span> (context.patternPropertiesSchemaCount == 0) <span class="comment">// patternProperties are not additional properties</span></div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetAdditionalPropertiesString());</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; }</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160;</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordtype">bool</span> EndObject(Context&amp; context, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount)<span class="keyword"> const </span>{</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">if</span> (hasRequired_)</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index = 0; index &lt; propertyCount_; index++)</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">if</span> (properties_[index].required)</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">if</span> (!context.propertyExist[index])</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetRequiredString());</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keywordflow">if</span> (memberCount &lt; minProperties_)</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinPropertiesString());</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">if</span> (memberCount &gt; maxProperties_)</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaxPropertiesString());</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">if</span> (hasDependencies_) {</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> sourceIndex = 0; sourceIndex &lt; propertyCount_; sourceIndex++)</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordflow">if</span> (context.propertyExist[sourceIndex]) {</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordflow">if</span> (properties_[sourceIndex].dependencies) {</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> targetIndex = 0; targetIndex &lt; propertyCount_; targetIndex++)</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">if</span> (properties_[sourceIndex].dependencies[targetIndex] &amp;&amp; !context.propertyExist[targetIndex])</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetDependenciesString());</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; }</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (properties_[sourceIndex].dependenciesSchema)</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">if</span> (!context.validators[properties_[sourceIndex].dependenciesValidatorIndex]-&gt;IsValid())</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetDependenciesString());</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; }</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; }</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordtype">bool</span> StartArray(Context&amp; context)<span class="keyword"> const </span>{ </div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; (1 &lt;&lt; kArraySchemaType)))</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; context.arrayElementIndex = 0;</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; context.inArray = <span class="keyword">true</span>;</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160;</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="keywordflow">return</span> CreateParallelValidator(context);</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; }</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordtype">bool</span> EndArray(Context&amp; context, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount)<span class="keyword"> const </span>{ </div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; context.inArray = <span class="keyword">false</span>;</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; </div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; <span class="keywordflow">if</span> (elementCount &lt; minItems_)</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinItemsString());</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; </div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; <span class="keywordflow">if</span> (elementCount &gt; maxItems_)</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaxItemsString());</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; }</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="comment">// Generate functions for string literal according to Ch</span></div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160;<span class="preprocessor">#define RAPIDJSON_STRING_(name, ...) \</span></div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;<span class="preprocessor"> static const ValueType&amp; Get##name##String() {\</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;<span class="preprocessor"> static const Ch s[] = { __VA_ARGS__, &#39;\0&#39; };\</span></div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160;<span class="preprocessor"> static const ValueType v(s, static_cast&lt;SizeType&gt;(sizeof(s) / sizeof(Ch) - 1));\</span></div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160;<span class="preprocessor"> return v;\</span></div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160;<span class="preprocessor"> }</span></div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; RAPIDJSON_STRING_(Null, <span class="charliteral">&#39;n&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;l&#39;</span>, <span class="charliteral">&#39;l&#39;</span>)</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; RAPIDJSON_STRING_(Boolean, &#39;b&#39;, &#39;o&#39;, &#39;o&#39;, &#39;l&#39;, &#39;e&#39;, &#39;a&#39;, &#39;n&#39;)</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; RAPIDJSON_STRING_(Object, &#39;o&#39;, &#39;b&#39;, &#39;j&#39;, &#39;e&#39;, &#39;c&#39;, &#39;t&#39;)</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; RAPIDJSON_STRING_(Array, &#39;a&#39;, &#39;r&#39;, &#39;r&#39;, &#39;a&#39;, &#39;y&#39;)</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; RAPIDJSON_STRING_(String, &#39;s&#39;, &#39;t&#39;, &#39;r&#39;, &#39;i&#39;, &#39;n&#39;, &#39;g&#39;)</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; RAPIDJSON_STRING_(Number, &#39;n&#39;, &#39;u&#39;, &#39;m&#39;, &#39;b&#39;, &#39;e&#39;, &#39;r&#39;)</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; RAPIDJSON_STRING_(Integer, &#39;i&#39;, &#39;n&#39;, &#39;t&#39;, &#39;e&#39;, &#39;g&#39;, &#39;e&#39;, &#39;r&#39;)</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; RAPIDJSON_STRING_(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>, &#39;t&#39;, &#39;y&#39;, &#39;p&#39;, &#39;e&#39;)</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; RAPIDJSON_STRING_(Enum, &#39;e&#39;, &#39;n&#39;, &#39;u&#39;, &#39;m&#39;)</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; RAPIDJSON_STRING_(AllOf, &#39;a&#39;, &#39;l&#39;, &#39;l&#39;, &#39;O&#39;, &#39;f&#39;)</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; RAPIDJSON_STRING_(AnyOf, &#39;a&#39;, &#39;n&#39;, &#39;y&#39;, &#39;O&#39;, &#39;f&#39;)</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; RAPIDJSON_STRING_(OneOf, &#39;o&#39;, &#39;n&#39;, &#39;e&#39;, &#39;O&#39;, &#39;f&#39;)</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; RAPIDJSON_STRING_(Not, &#39;n&#39;, &#39;o&#39;, &#39;t&#39;)</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; RAPIDJSON_STRING_(Properties, &#39;p&#39;, &#39;r&#39;, &#39;o&#39;, &#39;p&#39;, &#39;e&#39;, &#39;r&#39;, &#39;t&#39;, &#39;i&#39;, &#39;e&#39;, &#39;s&#39;)</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; RAPIDJSON_STRING_(Required, &#39;r&#39;, &#39;e&#39;, &#39;q&#39;, &#39;u&#39;, &#39;i&#39;, &#39;r&#39;, &#39;e&#39;, &#39;d&#39;)</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; RAPIDJSON_STRING_(Dependencies, &#39;d&#39;, &#39;e&#39;, &#39;p&#39;, &#39;e&#39;, &#39;n&#39;, &#39;d&#39;, &#39;e&#39;, &#39;n&#39;, &#39;c&#39;, &#39;i&#39;, &#39;e&#39;, &#39;s&#39;)</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; RAPIDJSON_STRING_(PatternProperties, &#39;p&#39;, &#39;a&#39;, &#39;t&#39;, &#39;t&#39;, &#39;e&#39;, &#39;r&#39;, &#39;n&#39;, &#39;P&#39;, &#39;r&#39;, &#39;o&#39;, &#39;p&#39;, &#39;e&#39;, &#39;r&#39;, &#39;t&#39;, &#39;i&#39;, &#39;e&#39;, &#39;s&#39;)</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; RAPIDJSON_STRING_(AdditionalProperties, &#39;a&#39;, &#39;d&#39;, &#39;d&#39;, &#39;i&#39;, &#39;t&#39;, &#39;i&#39;, &#39;o&#39;, &#39;n&#39;, &#39;a&#39;, &#39;l&#39;, &#39;P&#39;, &#39;r&#39;, &#39;o&#39;, &#39;p&#39;, &#39;e&#39;, &#39;r&#39;, &#39;t&#39;, &#39;i&#39;, &#39;e&#39;, &#39;s&#39;)</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; RAPIDJSON_STRING_(MinProperties, &#39;m&#39;, &#39;i&#39;, &#39;n&#39;, &#39;P&#39;, &#39;r&#39;, &#39;o&#39;, &#39;p&#39;, &#39;e&#39;, &#39;r&#39;, &#39;t&#39;, &#39;i&#39;, &#39;e&#39;, &#39;s&#39;)</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; RAPIDJSON_STRING_(MaxProperties, &#39;m&#39;, &#39;a&#39;, &#39;x&#39;, &#39;P&#39;, &#39;r&#39;, &#39;o&#39;, &#39;p&#39;, &#39;e&#39;, &#39;r&#39;, &#39;t&#39;, &#39;i&#39;, &#39;e&#39;, &#39;s&#39;)</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; RAPIDJSON_STRING_(Items, &#39;i&#39;, &#39;t&#39;, &#39;e&#39;, &#39;m&#39;, &#39;s&#39;)</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; RAPIDJSON_STRING_(MinItems, &#39;m&#39;, &#39;i&#39;, &#39;n&#39;, &#39;I&#39;, &#39;t&#39;, &#39;e&#39;, &#39;m&#39;, &#39;s&#39;)</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; RAPIDJSON_STRING_(MaxItems, &#39;m&#39;, &#39;a&#39;, &#39;x&#39;, &#39;I&#39;, &#39;t&#39;, &#39;e&#39;, &#39;m&#39;, &#39;s&#39;)</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; RAPIDJSON_STRING_(AdditionalItems, &#39;a&#39;, &#39;d&#39;, &#39;d&#39;, &#39;i&#39;, &#39;t&#39;, &#39;i&#39;, &#39;o&#39;, &#39;n&#39;, &#39;a&#39;, &#39;l&#39;, &#39;I&#39;, &#39;t&#39;, &#39;e&#39;, &#39;m&#39;, &#39;s&#39;)</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; RAPIDJSON_STRING_(UniqueItems, &#39;u&#39;, &#39;n&#39;, &#39;i&#39;, &#39;q&#39;, &#39;u&#39;, &#39;e&#39;, &#39;I&#39;, &#39;t&#39;, &#39;e&#39;, &#39;m&#39;, &#39;s&#39;)</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; RAPIDJSON_STRING_(MinLength, &#39;m&#39;, &#39;i&#39;, &#39;n&#39;, &#39;L&#39;, &#39;e&#39;, &#39;n&#39;, &#39;g&#39;, &#39;t&#39;, &#39;h&#39;)</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; RAPIDJSON_STRING_(MaxLength, &#39;m&#39;, &#39;a&#39;, &#39;x&#39;, &#39;L&#39;, &#39;e&#39;, &#39;n&#39;, &#39;g&#39;, &#39;t&#39;, &#39;h&#39;)</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; RAPIDJSON_STRING_(Pattern, &#39;p&#39;, &#39;a&#39;, &#39;t&#39;, &#39;t&#39;, &#39;e&#39;, &#39;r&#39;, &#39;n&#39;)</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; RAPIDJSON_STRING_(Minimum, &#39;m&#39;, &#39;i&#39;, &#39;n&#39;, &#39;i&#39;, &#39;m&#39;, &#39;u&#39;, &#39;m&#39;)</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; RAPIDJSON_STRING_(Maximum, &#39;m&#39;, &#39;a&#39;, &#39;x&#39;, &#39;i&#39;, &#39;m&#39;, &#39;u&#39;, &#39;m&#39;)</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; RAPIDJSON_STRING_(ExclusiveMinimum, &#39;e&#39;, &#39;x&#39;, &#39;c&#39;, &#39;l&#39;, &#39;u&#39;, &#39;s&#39;, &#39;i&#39;, &#39;v&#39;, &#39;e&#39;, &#39;M&#39;, &#39;i&#39;, &#39;n&#39;, &#39;i&#39;, &#39;m&#39;, &#39;u&#39;, &#39;m&#39;)</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; RAPIDJSON_STRING_(ExclusiveMaximum, &#39;e&#39;, &#39;x&#39;, &#39;c&#39;, &#39;l&#39;, &#39;u&#39;, &#39;s&#39;, &#39;i&#39;, &#39;v&#39;, &#39;e&#39;, &#39;M&#39;, &#39;a&#39;, &#39;x&#39;, &#39;i&#39;, &#39;m&#39;, &#39;u&#39;, &#39;m&#39;)</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; RAPIDJSON_STRING_(MultipleOf, &#39;m&#39;, &#39;u&#39;, &#39;l&#39;, &#39;t&#39;, &#39;i&#39;, &#39;p&#39;, &#39;l&#39;, &#39;e&#39;, &#39;O&#39;, &#39;f&#39;)</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160;</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;<span class="preprocessor">#undef RAPIDJSON_STRING_</span></div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keyword">enum</span> SchemaValueType {</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; kNullSchemaType,</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; kBooleanSchemaType,</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; kObjectSchemaType,</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; kArraySchemaType,</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; kStringSchemaType,</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; kNumberSchemaType,</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; kIntegerSchemaType,</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; kTotalSchemaType</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; };</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX</span></div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keyword">typedef</span> internal::GenericRegex&lt;EncodingType&gt; RegexType;</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160;<span class="preprocessor">#elif RAPIDJSON_SCHEMA_USE_STDREGEX</span></div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keyword">typedef</span> std::basic_regex&lt;Ch&gt; RegexType;</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">char</span> RegexType;</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keyword">struct </span>SchemaArray {</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; SchemaArray() : schemas(), count() {}</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; ~SchemaArray() { AllocatorType::Free(schemas); }</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="keyword">const</span> SchemaType** schemas;</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> begin; <span class="comment">// begin index of context.validators</span></div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count;</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; };</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> V1, <span class="keyword">typename</span> V2&gt;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordtype">void</span> AddUniqueElement(V1&amp; a, <span class="keyword">const</span> V2&amp; v) {</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> V1::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr)</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <span class="keywordflow">if</span> (*itr == v)</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; V1 c(v, *allocator_);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; a.PushBack(c, *allocator_);</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; }</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> ValueType* GetMember(<span class="keyword">const</span> ValueType&amp; value, <span class="keyword">const</span> ValueType&amp; name) {</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; <span class="keyword">typename</span> ValueType::ConstMemberIterator itr = value.FindMember(name);</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <span class="keywordflow">return</span> itr != value.MemberEnd() ? &amp;(itr-&gt;value) : 0;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; }</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160;</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> AssignIfExist(<span class="keywordtype">bool</span>&amp; out, <span class="keyword">const</span> ValueType&amp; value, <span class="keyword">const</span> ValueType&amp; name) {</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, name))</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsBool())</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; out = v-&gt;GetBool();</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; }</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> AssignIfExist(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&amp; out, <span class="keyword">const</span> ValueType&amp; value, <span class="keyword">const</span> ValueType&amp; name) {</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, name))</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsUint64() &amp;&amp; v-&gt;GetUint64() &lt;= <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(~0))</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; out = static_cast&lt;SizeType&gt;(v-&gt;GetUint64());</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; }</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; <span class="keywordtype">void</span> AssignIfExist(SchemaArray&amp; out, SchemaDocumentType&amp; schemaDocument, <span class="keyword">const</span> PointerType&amp; p, <span class="keyword">const</span> ValueType&amp; value, <span class="keyword">const</span> ValueType&amp; name, <span class="keyword">const</span> ValueType&amp; document) {</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* v = GetMember(value, name)) {</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">if</span> (v-&gt;IsArray() &amp;&amp; v-&gt;Size() &gt; 0) {</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; PointerType q = p.Append(name, allocator_);</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; out.count = v-&gt;Size();</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; out.schemas = <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>Schema**<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(out.count * <span class="keyword">sizeof</span>(<span class="keyword">const</span> Schema*)));</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; memset(out.schemas, 0, <span class="keyword">sizeof</span>(Schema*)* out.count);</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; out.count; i++)</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; schemaDocument.CreateSchema(&amp;out.schemas[i], q.Append(i, allocator_), (*v)[i], document);</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; out.begin = validatorCount_;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; validatorCount_ += out.count;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; }</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; }</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; }</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX</span></div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueType&gt;</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; RegexType* CreatePattern(<span class="keyword">const</span> ValueType&amp; value) {</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="keywordflow">if</span> (value.IsString()) {</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; RegexType* r = <span class="keyword">new</span> (allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(RegexType))) RegexType(value.GetString());</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordflow">if</span> (!r-&gt;IsValid()) {</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160; r-&gt;~RegexType();</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; AllocatorType::Free(r);</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; r = 0;</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; }</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="keywordflow">return</span> r;</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; }</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; }</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> IsPatternMatch(<span class="keyword">const</span> RegexType* pattern, <span class="keyword">const</span> Ch *str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) {</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; GenericRegexSearch&lt;RegexType&gt; rs(*pattern);</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; <span class="keywordflow">return</span> rs.Search(str);</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; }</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;<span class="preprocessor">#elif RAPIDJSON_SCHEMA_USE_STDREGEX</span></div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueType&gt;</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160; RegexType* CreatePattern(<span class="keyword">const</span> ValueType&amp; value) {</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; <span class="keywordflow">if</span> (value.IsString())</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <span class="keywordflow">try</span> {</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> (allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(RegexType))) RegexType(value.GetString(), std::size_t(value.GetStringLength()), std::regex_constants::ECMAScript);</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; }</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordflow">catch</span> (<span class="keyword">const</span> std::regex_error&amp;) {</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; }</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; }</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160;</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> IsPatternMatch(<span class="keyword">const</span> RegexType* pattern, <span class="keyword">const</span> Ch *str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length) {</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; std::match_results&lt;const Ch*&gt; r;</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <span class="keywordflow">return</span> std::regex_search(str, str + length, r, *pattern);</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; }</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueType&gt;</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; RegexType* CreatePattern(<span class="keyword">const</span> ValueType&amp;) { <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> IsPatternMatch(<span class="keyword">const</span> RegexType*, <span class="keyword">const</span> Ch *, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_SCHEMA_USE_STDREGEX</span></div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="keywordtype">void</span> AddType(<span class="keyword">const</span> ValueType&amp; type) {</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keywordflow">if</span> (type == GetNullString() ) type_ |= 1 &lt;&lt; kNullSchemaType;</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == GetBooleanString()) type_ |= 1 &lt;&lt; kBooleanSchemaType;</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == GetObjectString() ) type_ |= 1 &lt;&lt; kObjectSchemaType;</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == GetArrayString() ) type_ |= 1 &lt;&lt; kArraySchemaType;</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == GetStringString() ) type_ |= 1 &lt;&lt; kStringSchemaType;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == GetIntegerString()) type_ |= 1 &lt;&lt; kIntegerSchemaType;</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type == GetNumberString() ) type_ |= (1 &lt;&lt; kNumberSchemaType) | (1 &lt;&lt; kIntegerSchemaType);</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; }</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordtype">bool</span> CreateParallelValidator(Context&amp; context)<span class="keyword"> const </span>{</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">if</span> (enum_ || context.arrayUniqueness)</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; context.hasher = context.factory.CreateHasher();</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="keywordflow">if</span> (validatorCount_) {</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(context.validators == 0);</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; context.validators = <span class="keyword">static_cast&lt;</span>ISchemaValidator**<span class="keyword">&gt;</span>(context.factory.MallocState(<span class="keyword">sizeof</span>(ISchemaValidator*) * validatorCount_));</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; context.validatorCount = validatorCount_;</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">if</span> (allOf_.schemas)</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; CreateSchemaValidators(context, allOf_);</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160;</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keywordflow">if</span> (anyOf_.schemas)</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; CreateSchemaValidators(context, anyOf_);</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; </div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="keywordflow">if</span> (oneOf_.schemas)</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; CreateSchemaValidators(context, oneOf_);</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; </div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <span class="keywordflow">if</span> (not_)</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; context.validators[notValidatorIndex_] = context.factory.CreateSchemaValidator(*not_);</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; </div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <span class="keywordflow">if</span> (hasSchemaDependencies_) {</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; propertyCount_; i++)</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">if</span> (properties_[i].dependenciesSchema)</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; context.validators[properties_[i].dependenciesValidatorIndex] = context.factory.CreateSchemaValidator(*properties_[i].dependenciesSchema);</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; }</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; }</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; }</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="keywordtype">void</span> CreateSchemaValidators(Context&amp; context, <span class="keyword">const</span> SchemaArray&amp; schemas)<span class="keyword"> const </span>{</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; schemas.count; i++)</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; context.validators[schemas.begin + i] = context.factory.CreateSchemaValidator(*schemas.schemas[i]);</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; }</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160;</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="comment">// O(n)</span></div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keywordtype">bool</span> FindPropertyIndex(<span class="keyword">const</span> ValueType&amp; name, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>* outIndex)<span class="keyword"> const </span>{</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len = name.GetStringLength();</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keyword">const</span> Ch* str = name.GetString();</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index = 0; index &lt; propertyCount_; index++)</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keywordflow">if</span> (properties_[index].name.GetStringLength() == len &amp;&amp; </div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; (std::memcmp(properties_[index].name.GetString(), str, <span class="keyword">sizeof</span>(Ch) * len) == 0))</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; {</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; *outIndex = index;</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; }</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; }</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="keywordtype">bool</span> CheckInt(Context&amp; context, int64_t i)<span class="keyword"> const </span>{</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; ((1 &lt;&lt; kIntegerSchemaType) | (1 &lt;&lt; kNumberSchemaType))))</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160;</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">if</span> (!minimum_.IsNull()) {</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">if</span> (minimum_.IsInt64()) {</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordflow">if</span> (exclusiveMinimum_ ? i &lt;= minimum_.GetInt64() : i &lt; minimum_.GetInt64())</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString());</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; }</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (minimum_.IsUint64()) {</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString()); <span class="comment">// i &lt;= max(int64_t) &lt; minimum.GetUint64()</span></div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; }</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!CheckDoubleMinimum(context, static_cast&lt;double&gt;(i)))</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; }</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keywordflow">if</span> (!maximum_.IsNull()) {</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="keywordflow">if</span> (maximum_.IsInt64()) {</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">if</span> (exclusiveMaximum_ ? i &gt;= maximum_.GetInt64() : i &gt; maximum_.GetInt64())</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString());</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; }</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (maximum_.IsUint64()) { }</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <span class="comment">/* do nothing */</span> <span class="comment">// i &lt;= max(int64_t) &lt; maximum_.GetUint64()</span></div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!CheckDoubleMaximum(context, static_cast&lt;double&gt;(i)))</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; }</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <span class="keywordflow">if</span> (!multipleOf_.IsNull()) {</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <span class="keywordflow">if</span> (multipleOf_.IsUint64()) {</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;uint64_t&gt;(i &gt;= 0 ? i : -i) % multipleOf_.GetUint64() != 0)</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMultipleOfString());</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; }</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!CheckDoubleMultipleOf(context, static_cast&lt;double&gt;(i)))</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; }</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; }</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160;</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="keywordtype">bool</span> CheckUint(Context&amp; context, uint64_t i)<span class="keyword"> const </span>{</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <span class="keywordflow">if</span> (!(type_ &amp; ((1 &lt;&lt; kIntegerSchemaType) | (1 &lt;&lt; kNumberSchemaType))))</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="keywordflow">if</span> (!minimum_.IsNull()) {</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="keywordflow">if</span> (minimum_.IsUint64()) {</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keywordflow">if</span> (exclusiveMinimum_ ? i &lt;= minimum_.GetUint64() : i &lt; minimum_.GetUint64())</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString());</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; }</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (minimum_.IsInt64())</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="comment">/* do nothing */</span>; <span class="comment">// i &gt;= 0 &gt; minimum.Getint64()</span></div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!CheckDoubleMinimum(context, static_cast&lt;double&gt;(i)))</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; }</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keywordflow">if</span> (!maximum_.IsNull()) {</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; <span class="keywordflow">if</span> (maximum_.IsUint64()) {</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; <span class="keywordflow">if</span> (exclusiveMaximum_ ? i &gt;= maximum_.GetUint64() : i &gt; maximum_.GetUint64())</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString());</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; }</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (maximum_.IsInt64())</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString()); <span class="comment">// i &gt;= 0 &gt; maximum_</span></div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!CheckDoubleMaximum(context, static_cast&lt;double&gt;(i)))</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; }</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160;</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keywordflow">if</span> (!multipleOf_.IsNull()) {</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keywordflow">if</span> (multipleOf_.IsUint64()) {</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="keywordflow">if</span> (i % multipleOf_.GetUint64() != 0)</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMultipleOfString());</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; }</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!CheckDoubleMultipleOf(context, static_cast&lt;double&gt;(i)))</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; }</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; }</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="keywordtype">bool</span> CheckDoubleMinimum(Context&amp; context, <span class="keywordtype">double</span> d)<span class="keyword"> const </span>{</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keywordflow">if</span> (exclusiveMinimum_ ? d &lt;= minimum_.GetDouble() : d &lt; minimum_.GetDouble())</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString());</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; }</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160;</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="keywordtype">bool</span> CheckDoubleMaximum(Context&amp; context, <span class="keywordtype">double</span> d)<span class="keyword"> const </span>{</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keywordflow">if</span> (exclusiveMaximum_ ? d &gt;= maximum_.GetDouble() : d &gt; maximum_.GetDouble())</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString());</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; }</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordtype">bool</span> CheckDoubleMultipleOf(Context&amp; context, <span class="keywordtype">double</span> d)<span class="keyword"> const </span>{</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; <span class="keywordtype">double</span> a = std::abs(d), b = std::abs(multipleOf_.GetDouble());</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="keywordtype">double</span> q = std::floor(a / b);</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="keywordtype">double</span> r = a - q * b;</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; <span class="keywordflow">if</span> (r &gt; 0.0)</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(GetMultipleOfString());</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; }</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keyword">struct </span>Property {</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; Property() : schema(), dependenciesSchema(), dependenciesValidatorIndex(), dependencies(), required(false) {}</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; ~Property() { AllocatorType::Free(dependencies); }</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; SValue name;</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="keyword">const</span> SchemaType* schema;</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="keyword">const</span> SchemaType* dependenciesSchema;</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> dependenciesValidatorIndex;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordtype">bool</span>* dependencies;</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keywordtype">bool</span> required;</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; };</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <span class="keyword">struct </span>PatternProperty {</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; PatternProperty() : schema(), pattern() {}</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; ~PatternProperty() { </div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; <span class="keywordflow">if</span> (pattern) {</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; pattern-&gt;~RegexType();</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; AllocatorType::Free(pattern);</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; }</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; }</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keyword">const</span> SchemaType* schema;</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; RegexType* pattern;</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; };</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160;</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; AllocatorType* allocator_;</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <span class="keyword">const</span> SchemaType* typeless_;</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; uint64_t* enum_;</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> enumCount_;</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; SchemaArray allOf_;</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; SchemaArray anyOf_;</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; SchemaArray oneOf_;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; <span class="keyword">const</span> SchemaType* not_;</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordtype">unsigned</span> type_; <span class="comment">// bitmask of kSchemaType</span></div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> validatorCount_;</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> notValidatorIndex_;</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160;</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; Property* properties_;</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="keyword">const</span> SchemaType* additionalPropertiesSchema_;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; PatternProperty* patternProperties_;</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> patternPropertyCount_;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> propertyCount_;</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> minProperties_;</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> maxProperties_;</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; <span class="keywordtype">bool</span> additionalProperties_;</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; <span class="keywordtype">bool</span> hasDependencies_;</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keywordtype">bool</span> hasRequired_;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <span class="keywordtype">bool</span> hasSchemaDependencies_;</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <span class="keyword">const</span> SchemaType* additionalItemsSchema_;</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; <span class="keyword">const</span> SchemaType* itemsList_;</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="keyword">const</span> SchemaType** itemsTuple_;</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> itemsTupleCount_;</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> minItems_;</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> maxItems_;</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <span class="keywordtype">bool</span> additionalItems_;</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; <span class="keywordtype">bool</span> uniqueItems_;</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160;</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; RegexType* pattern_;</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> minLength_;</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> maxLength_;</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160;</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; SValue minimum_;</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; SValue maximum_;</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; SValue multipleOf_;</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <span class="keywordtype">bool</span> exclusiveMinimum_;</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; <span class="keywordtype">bool</span> exclusiveMaximum_;</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;};</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stack, <span class="keyword">typename</span> Ch&gt;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160;<span class="keyword">struct </span>TokenHelper {</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160; RAPIDJSON_FORCEINLINE <span class="keyword">static</span> <span class="keywordtype">void</span> AppendIndexToken(Stack&amp; documentStack, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) {</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160; *documentStack.template Push&lt;Ch&gt;() = <span class="charliteral">&#39;/&#39;</span>;</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="keywordtype">char</span> buffer[21];</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <span class="keywordtype">size_t</span> length = <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>((<span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) == 4 ? u32toa(index, buffer) : u64toa(index, buffer)) - buffer);</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; length; i++)</div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; *documentStack.template Push&lt;Ch&gt;() = <span class="keyword">static_cast&lt;</span>Ch<span class="keyword">&gt;</span>(buffer[i]);</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; }</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160;};</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160;<span class="comment">// Partial specialized version for char to prevent buffer copying.</span></div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Stack&gt;</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160;<span class="keyword">struct </span>TokenHelper&lt;Stack, char&gt; {</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; RAPIDJSON_FORCEINLINE <span class="keyword">static</span> <span class="keywordtype">void</span> AppendIndexToken(Stack&amp; documentStack, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> index) {</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">sizeof</span>(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>) == 4) {</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160; <span class="keywordtype">char</span> *buffer = documentStack.template Push&lt;char&gt;(1 + 10); <span class="comment">// &#39;/&#39; + uint</span></div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; *buffer++ = <span class="charliteral">&#39;/&#39;</span>;</div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::u32toa(index, buffer);</div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; documentStack.template Pop&lt;char&gt;(<span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(10 - (end - buffer)));</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; }</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; <span class="keywordtype">char</span> *buffer = documentStack.template Push&lt;char&gt;(1 + 20); <span class="comment">// &#39;/&#39; + uint64</span></div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160; *buffer++ = <span class="charliteral">&#39;/&#39;</span>;</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::u64toa(index, buffer);</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; documentStack.template Pop&lt;char&gt;(<span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(20 - (end - buffer)));</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; }</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; }</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;};</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160;</div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160;<span class="comment"></span><span class="comment">// IGenericRemoteSchemaDocumentProvider</span></div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160;</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SchemaDocumentType&gt;</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160;<span class="keyword">class </span>IGenericRemoteSchemaDocumentProvider {</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::Ch Ch;</div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160;</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keyword">virtual</span> ~IGenericRemoteSchemaDocumentProvider() {}</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> SchemaDocumentType* GetRemoteDocument(<span class="keyword">const</span> Ch* uri, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length) = 0;</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160;};</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160;<span class="comment"></span><span class="comment">// GenericSchemaDocument</span></div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160;<span class="comment">//! JSON schema document.</span></div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160;<span class="comment"> A JSON schema document is a compiled version of a JSON schema.</span></div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160;<span class="comment"> It is basically a tree of internal::Schema.</span></div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160;<span class="comment"> \note This is an immutable class (i.e. its instance cannot be modified after construction).</span></div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160;<span class="comment"> \tparam ValueT Type of JSON value (e.g. \c Value ), which also determine the encoding.</span></div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160;<span class="comment"> \tparam Allocator Allocator type for allocating memory of this document.</span></div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ValueT, <span class="keyword">typename</span> Allocator = CrtAllocator&gt;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;<span class="keyword">class </span>GenericSchemaDocument {</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160; <span class="keyword">typedef</span> ValueT ValueType;</div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>&#160; <span class="keyword">typedef</span> IGenericRemoteSchemaDocumentProvider&lt;GenericSchemaDocument&gt; IRemoteSchemaDocumentProviderType;</div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160; <span class="keyword">typedef</span> Allocator AllocatorType;</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> ValueType::EncodingType EncodingType;</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> EncodingType::Ch Ch;</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; <span class="keyword">typedef</span> internal::Schema&lt;GenericSchemaDocument&gt; SchemaType;</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160; <span class="keyword">typedef</span> GenericPointer&lt;ValueType, Allocator&gt; PointerType;</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span>internal::Schema&lt;GenericSchemaDocument&gt;;</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>, <span class="keyword">typename</span>&gt;</div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span>GenericSchemaValidator;</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;<span class="comment"> //! Constructor.</span></div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160;<span class="comment"> Compile a JSON document into schema document.</span></div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160;<span class="comment"> \param document A JSON document as source.</span></div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160;<span class="comment"> \param remoteProvider An optional remote schema document provider for resolving remote reference. Can be null.</span></div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160;<span class="comment"> \param allocator An optional allocator instance for allocating memory. Can be null.</span></div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01339"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_document.html#ad200cc7bcb193c8568cdbda7b7fd0496"> 1339</a></span>&#160; <span class="keyword">explicit</span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html#ad200cc7bcb193c8568cdbda7b7fd0496">GenericSchemaDocument</a>(<span class="keyword">const</span> ValueType&amp; document, IRemoteSchemaDocumentProviderType* remoteProvider = 0, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator = 0) :</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; remoteProvider_(remoteProvider),</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160; allocator_(allocator),</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160; ownAllocator_(),</div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>&#160; root_(),</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160; typeless_(),</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; schemaMap_(allocator, kInitialSchemaMapSize),</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; schemaRef_(allocator, kInitialSchemaRefSize)</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; {</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keywordflow">if</span> (!allocator_)</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160; ownAllocator_ = allocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(<a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>)();</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>&#160; typeless_ = <span class="keyword">static_cast&lt;</span>SchemaType*<span class="keyword">&gt;</span>(allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(SchemaType)));</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160; <span class="keyword">new</span> (typeless_) SchemaType(<span class="keyword">this</span>, PointerType(), ValueType(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>).Move(), ValueType(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>).Move(), 0);</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160;</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160; <span class="comment">// Generate root schema, it will call CreateSchema() to create sub-schemas,</span></div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160; <span class="comment">// And call AddRefSchema() if there are $ref.</span></div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>&#160; CreateSchemaRecursive(&amp;root_, PointerType(), document, document);</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; <span class="comment">// Resolve $ref</span></div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <span class="keywordflow">while</span> (!schemaRef_.Empty()) {</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; SchemaRefEntry* refEntry = schemaRef_.template Pop&lt;SchemaRefEntry&gt;(1);</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> SchemaType* s = GetSchema(refEntry-&gt;target)) {</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160; <span class="keywordflow">if</span> (refEntry-&gt;schema)</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>&#160; *refEntry-&gt;schema = s;</div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; <span class="comment">// Create entry in map if not exist</span></div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; <span class="keywordflow">if</span> (!GetSchema(refEntry-&gt;source)) {</div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; <span class="keyword">new</span> (schemaMap_.template Push&lt;SchemaEntry&gt;()) SchemaEntry(refEntry-&gt;source, const_cast&lt;SchemaType*&gt;(s), <span class="keyword">false</span>, allocator_);</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; }</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; }</div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (refEntry-&gt;schema)</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; *refEntry-&gt;schema = typeless_;</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160;</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; refEntry-&gt;~SchemaRefEntry();</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; }</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160;</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(root_ != 0);</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; schemaRef_.ShrinkToFit(); <span class="comment">// Deallocate all memory for ref</span></div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; }</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160;</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160;<span class="comment"> //! Move constructor in C++11</span></div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>(<a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>&amp;&amp; rhs) RAPIDJSON_NOEXCEPT :</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160; remoteProvider_(rhs.remoteProvider_),</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>&#160; allocator_(rhs.allocator_),</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160; ownAllocator_(rhs.ownAllocator_),</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; root_(rhs.root_),</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; typeless_(rhs.typeless_),</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; schemaMap_(std::move(rhs.schemaMap_)),</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160; schemaRef_(std::move(rhs.schemaRef_))</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160; {</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>&#160; rhs.remoteProvider_ = 0;</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160; rhs.allocator_ = 0;</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; rhs.ownAllocator_ = 0;</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160; rhs.typeless_ = 0;</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; }</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160;<span class="comment"> //! Destructor</span></div><div class="line"><a name="l01400"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_document.html#adf6f3372013227873ed392dee1e752bf"> 1400</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html#adf6f3372013227873ed392dee1e752bf">~GenericSchemaDocument</a>() {</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; <span class="keywordflow">while</span> (!schemaMap_.Empty())</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; schemaMap_.template Pop&lt;SchemaEntry&gt;(1)-&gt;~SchemaEntry();</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160;</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; <span class="keywordflow">if</span> (typeless_) {</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; typeless_-&gt;~SchemaType();</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160; Allocator::Free(typeless_);</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; }</div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160;</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; <a class="code" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a>(ownAllocator_);</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; }</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160;<span class="comment"> //! Get the root schema.</span></div><div class="line"><a name="l01413"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_document.html#a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a"> 1413</a></span>&#160;<span class="comment"></span> <span class="keyword">const</span> SchemaType&amp; <a class="code" href="classrapidjson_1_1_generic_schema_document.html#a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a">GetRoot</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *root_; }</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160;<span class="keyword">private</span>:<span class="comment"></span></div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160;<span class="comment"> //! Prohibit copying</span></div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>&amp;);<span class="comment"></span></div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160;<span class="comment"> //! Prohibit assignment</span></div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>&amp;);</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160;</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="keyword">struct </span>SchemaRefEntry {</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160; SchemaRefEntry(<span class="keyword">const</span> PointerType&amp; s, <span class="keyword">const</span> PointerType&amp; t, <span class="keyword">const</span> SchemaType** outSchema, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator) : source(s, allocator), target(t, allocator), schema(outSchema) {}</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; PointerType source;</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; PointerType target;</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <span class="keyword">const</span> SchemaType** schema;</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; };</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160; <span class="keyword">struct </span>SchemaEntry {</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>&#160; SchemaEntry(<span class="keyword">const</span> PointerType&amp; p, SchemaType* s, <span class="keywordtype">bool</span> o, <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a>* allocator) : pointer(p, allocator), schema(s), owned(o) {}</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160; ~SchemaEntry() {</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; <span class="keywordflow">if</span> (owned) {</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160; schema-&gt;~SchemaType();</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; Allocator::Free(schema);</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; }</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160; }</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; PointerType pointer;</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; SchemaType* schema;</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160; <span class="keywordtype">bool</span> owned;</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; };</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160; <span class="keywordtype">void</span> CreateSchemaRecursive(<span class="keyword">const</span> SchemaType** schema, <span class="keyword">const</span> PointerType&amp; pointer, <span class="keyword">const</span> ValueType&amp; v, <span class="keyword">const</span> ValueType&amp; document) {</div><div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>&#160; <span class="keywordflow">if</span> (schema)</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160; *schema = typeless_;</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160;</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160; <span class="keywordflow">if</span> (v.GetType() == <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>) {</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; <span class="keyword">const</span> SchemaType* s = GetSchema(pointer);</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="keywordflow">if</span> (!s)</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160; CreateSchema(schema, pointer, v, document);</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160;</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> ValueType::ConstMemberIterator itr = v.MemberBegin(); itr != v.MemberEnd(); ++itr)</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; CreateSchemaRecursive(0, pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a7cb5eda2af1722e52efa591c4103ebec">Append</a>(itr-&gt;name, allocator_), itr-&gt;value, document);</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; }</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v.GetType() == <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>)</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; v.Size(); i++)</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; CreateSchemaRecursive(0, pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a7cb5eda2af1722e52efa591c4103ebec">Append</a>(i, allocator_), v[i], document);</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; }</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160;</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; <span class="keywordtype">void</span> CreateSchema(<span class="keyword">const</span> SchemaType** schema, <span class="keyword">const</span> PointerType&amp; pointer, <span class="keyword">const</span> ValueType&amp; v, <span class="keyword">const</span> ValueType&amp; document) {</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c">IsValid</a>());</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160; <span class="keywordflow">if</span> (v.IsObject()) {</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; <span class="keywordflow">if</span> (!HandleRefSchema(pointer, schema, v, document)) {</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160; SchemaType* s = <span class="keyword">new</span> (allocator_-&gt;Malloc(<span class="keyword">sizeof</span>(SchemaType))) SchemaType(<span class="keyword">this</span>, pointer, v, document, allocator_);</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160; <span class="keyword">new</span> (schemaMap_.template Push&lt;SchemaEntry&gt;()) SchemaEntry(pointer, s, <span class="keyword">true</span>, allocator_);</div><div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>&#160; <span class="keywordflow">if</span> (schema)</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160; *schema = s;</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; }</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160; }</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; }</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160;</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; <span class="keywordtype">bool</span> HandleRefSchema(<span class="keyword">const</span> PointerType&amp; source, <span class="keyword">const</span> SchemaType** schema, <span class="keyword">const</span> ValueType&amp; v, <span class="keyword">const</span> ValueType&amp; document) {</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> Ch kRefString[] = { <span class="charliteral">&#39;$&#39;</span>, <span class="charliteral">&#39;r&#39;</span>, <span class="charliteral">&#39;e&#39;</span>, <span class="charliteral">&#39;f&#39;</span>, <span class="charliteral">&#39;\0&#39;</span> };</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> ValueType kRefValue(kRefString, 4);</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160;</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; <span class="keyword">typename</span> ValueType::ConstMemberIterator itr = v.FindMember(kRefValue);</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160; <span class="keywordflow">if</span> (itr == v.MemberEnd())</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160;</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; <span class="keywordflow">if</span> (itr-&gt;value.IsString()) {</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len = itr-&gt;value.GetStringLength();</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; <span class="keywordflow">if</span> (len &gt; 0) {</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160; <span class="keyword">const</span> Ch* s = itr-&gt;value.GetString();</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0;</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160; <span class="keywordflow">while</span> (i &lt; len &amp;&amp; s[i] != <span class="charliteral">&#39;#&#39;</span>) <span class="comment">// Find the first #</span></div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160; i++;</div><div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>&#160;</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160; <span class="keywordflow">if</span> (i &gt; 0) { <span class="comment">// Remote reference, resolve immediately</span></div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; <span class="keywordflow">if</span> (remoteProvider_) {</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument</a>* remoteDocument = remoteProvider_-&gt;GetRemoteDocument(s, i)) {</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160; PointerType pointer(&amp;s[i], len - i, allocator_);</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160; <span class="keywordflow">if</span> (pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c">IsValid</a>()) {</div><div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> SchemaType* sc = remoteDocument-&gt;GetSchema(pointer)) {</div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160; <span class="keywordflow">if</span> (schema)</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; *schema = sc;</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; }</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; }</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160; }</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160; }</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>&#160; }</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (s[i] == <span class="charliteral">&#39;#&#39;</span>) { <span class="comment">// Local reference, defer resolution</span></div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; PointerType pointer(&amp;s[i], len - i, allocator_);</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160; <span class="keywordflow">if</span> (pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c">IsValid</a>()) {</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> ValueType* nv = pointer.<a class="code" href="classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd">Get</a>(document))</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>&#160; <span class="keywordflow">if</span> (HandleRefSchema(source, schema, *nv, document))</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160;</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; <span class="keyword">new</span> (schemaRef_.template Push&lt;SchemaRefEntry&gt;()) SchemaRefEntry(source, pointer, schema, allocator_);</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; }</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; }</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; }</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; }</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160; }</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>&#160; <span class="keyword">const</span> SchemaType* GetSchema(<span class="keyword">const</span> PointerType&amp; pointer)<span class="keyword"> const </span>{</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> SchemaEntry* target = schemaMap_.template Bottom&lt;SchemaEntry&gt;(); target != schemaMap_.template End&lt;SchemaEntry&gt;(); ++target)</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; <span class="keywordflow">if</span> (pointer == target-&gt;pointer)</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; <span class="keywordflow">return</span> target-&gt;schema;</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; }</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160;</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; PointerType GetPointer(<span class="keyword">const</span> SchemaType* schema)<span class="keyword"> const </span>{</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> SchemaEntry* target = schemaMap_.template Bottom&lt;SchemaEntry&gt;(); target != schemaMap_.template End&lt;SchemaEntry&gt;(); ++target)</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; <span class="keywordflow">if</span> (schema == target-&gt;schema)</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160; <span class="keywordflow">return</span> target-&gt;pointer;</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160; <span class="keywordflow">return</span> PointerType();</div><div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>&#160; }</div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; <span class="keyword">const</span> SchemaType* GetTypeless()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> typeless_; }</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160;</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kInitialSchemaMapSize = 64;</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kInitialSchemaRefSize = 64;</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160;</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; IRemoteSchemaDocumentProviderType* remoteProvider_;</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator_;</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; <a class="code" href="classrapidjson_1_1_allocator.html">Allocator</a> *ownAllocator_;</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160; <span class="keyword">const</span> SchemaType* root_; <span class="comment">//!&lt; Root schema.</span></div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;<span class="comment"></span> SchemaType* typeless_;</div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>&#160; internal::Stack&lt;Allocator&gt; schemaMap_; <span class="comment">// Stores created Pointer -&gt; Schemas</span></div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160; internal::Stack&lt;Allocator&gt; schemaRef_; <span class="comment">// Stores Pointer from $ref and schema which holds the $ref</span></div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160;};</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;<span class="comment">//! GenericSchemaDocument using Value type.</span></div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">GenericSchemaDocument&lt;Value&gt;</a> <a class="code" href="classrapidjson_1_1_generic_schema_document.html">SchemaDocument</a>;<span class="comment"></span></div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>&#160;<span class="comment">//! IGenericRemoteSchemaDocumentProvider using SchemaDocument.</span></div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IGenericRemoteSchemaDocumentProvider&lt;SchemaDocument&gt;</a> <a class="code" href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">IRemoteSchemaDocumentProvider</a>;</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160;<span class="comment"></span><span class="comment">// GenericSchemaValidator</span></div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160;<span class="comment">//! JSON Schema Validator.</span></div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160;<span class="comment"> A SAX style JSON schema validator.</span></div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160;<span class="comment"> It uses a \c GenericSchemaDocument to validate SAX events.</span></div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160;<span class="comment"> It delegates the incoming SAX events to an output handler.</span></div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160;<span class="comment"> The default output handler does nothing.</span></div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160;<span class="comment"> It can be reused multiple times by calling \c Reset().</span></div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160;<span class="comment"> \tparam SchemaDocumentType Type of schema document.</span></div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160;<span class="comment"> \tparam OutputHandler Type of output handler. Default handler does nothing.</span></div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160;<span class="comment"> \tparam StateAllocator Allocator for storing the internal validation states.</span></div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160;<span class="keyword">template</span> &lt;</div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; <span class="keyword">typename</span> SchemaDocumentType,</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; <span class="keyword">typename</span> OutputHandler = <a class="code" href="structrapidjson_1_1_base_reader_handler.html">BaseReaderHandler&lt;typename SchemaDocumentType::SchemaType::EncodingType&gt;</a>,</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; <span class="keyword">typename</span> StateAllocator = <a class="code" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a>&gt;</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator</a> :</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160; <span class="keyword">public</span> internal::ISchemaStateFactory&lt;typename SchemaDocumentType::SchemaType&gt;, </div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; <span class="keyword">public</span> internal::ISchemaValidator</div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160;{</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::SchemaType SchemaType;</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::PointerType PointerType;</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaType::EncodingType EncodingType;</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> EncodingType::Ch Ch;</div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160;<span class="comment"> //! Constructor without output handler.</span></div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160;<span class="comment"> \param schemaDocument The schema document to conform to.</span></div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160;<span class="comment"> \param allocator Optional allocator for storing internal validation states.</span></div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160;<span class="comment"> \param schemaStackCapacity Optional initial capacity of schema path stack.</span></div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;<span class="comment"> \param documentStackCapacity Optional initial capacity of document path stack.</span></div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01585"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#acc07bd08b00195d84bb5b83f59c593d3"> 1585</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#acc07bd08b00195d84bb5b83f59c593d3">GenericSchemaValidator</a>(</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; <span class="keyword">const</span> SchemaDocumentType&amp; schemaDocument,</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160; StateAllocator* allocator = 0, </div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; <span class="keywordtype">size_t</span> schemaStackCapacity = kDefaultSchemaStackCapacity,</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; <span class="keywordtype">size_t</span> documentStackCapacity = kDefaultDocumentStackCapacity)</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; :</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; schemaDocument_(&amp;schemaDocument),</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160; root_(schemaDocument.GetRoot()),</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; stateAllocator_(allocator),</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; ownStateAllocator_(0),</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; schemaStack_(allocator, schemaStackCapacity),</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; documentStack_(allocator, documentStackCapacity),</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; outputHandler_(CreateNullHandler()),</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; valid_(true)</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160;#if RAPIDJSON_SCHEMA_VERBOSE</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160; , depth_(0)</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160;#endif</div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; {</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; }</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160;<span class="comment"> //! Constructor with output handler.</span></div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160;<span class="comment"> \param schemaDocument The schema document to conform to.</span></div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160;<span class="comment"> \param allocator Optional allocator for storing internal validation states.</span></div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160;<span class="comment"> \param schemaStackCapacity Optional initial capacity of schema path stack.</span></div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160;<span class="comment"> \param documentStackCapacity Optional initial capacity of document path stack.</span></div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01612"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#a0e1d8f19381bd53d77cc00a9a6dcd067"> 1612</a></span>&#160; <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#a0e1d8f19381bd53d77cc00a9a6dcd067">GenericSchemaValidator</a>(</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; <span class="keyword">const</span> SchemaDocumentType&amp; schemaDocument,</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; OutputHandler&amp; outputHandler,</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; StateAllocator* allocator = 0, </div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; <span class="keywordtype">size_t</span> schemaStackCapacity = kDefaultSchemaStackCapacity,</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160; <span class="keywordtype">size_t</span> documentStackCapacity = kDefaultDocumentStackCapacity)</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; :</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; schemaDocument_(&amp;schemaDocument),</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160; root_(schemaDocument.GetRoot()),</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; stateAllocator_(allocator),</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; ownStateAllocator_(0),</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; schemaStack_(allocator, schemaStackCapacity),</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; documentStack_(allocator, documentStackCapacity),</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; outputHandler_(outputHandler),</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; nullHandler_(0),</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160; valid_(true)</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160;#if RAPIDJSON_SCHEMA_VERBOSE</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160; , depth_(0)</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160;#endif</div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; {</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; }</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160;<span class="comment"> //! Destructor.</span></div><div class="line"><a name="l01635"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#ad9f00d71bf62b8983cf2514c43fb1572"> 1635</a></span>&#160;<span class="comment"></span> <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#ad9f00d71bf62b8983cf2514c43fb1572">~GenericSchemaValidator</a>() {</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; Reset();</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; <span class="keywordflow">if</span> (nullHandler_) {</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160; nullHandler_-&gt;~OutputHandler();</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160; StateAllocator::Free(nullHandler_);</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160; }</div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>&#160; <a class="code" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a>(ownStateAllocator_);</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; }</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160;<span class="comment"> //! Reset the internal states.</span></div><div class="line"><a name="l01645"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#afe6cd0d9088a1d4cf8100c0efc9f76fc"> 1645</a></span>&#160;<span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#afe6cd0d9088a1d4cf8100c0efc9f76fc">Reset</a>() {</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; <span class="keywordflow">while</span> (!schemaStack_.Empty())</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; PopSchema();</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; documentStack_.Clear();</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; valid_ = <span class="keyword">true</span>;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; }</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160;<span class="comment"> //! Checks whether the current state is valid.</span></div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160;<span class="comment"></span> <span class="comment">// Implementation of ISchemaValidator</span></div><div class="line"><a name="l01654"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#ad32a9ad31dbb588edaaf038ab053275b"> 1654</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#ad32a9ad31dbb588edaaf038ab053275b">IsValid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> valid_; }</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160;<span class="comment"> //! Gets the JSON pointer pointed to the invalid schema.</span></div><div class="line"><a name="l01657"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#a3238efb9d9144c2d6577362d8dc5f61b"> 1657</a></span>&#160;<span class="comment"></span> PointerType <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#a3238efb9d9144c2d6577362d8dc5f61b">GetInvalidSchemaPointer</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; <span class="keywordflow">return</span> schemaStack_.Empty() ? PointerType() : schemaDocument_-&gt;GetPointer(&amp;CurrentSchema());</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; }</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160;<span class="comment"> //! Gets the keyword of invalid schema.</span></div><div class="line"><a name="l01662"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#a03bcd5497a574cffbd066d0aec2b5585"> 1662</a></span>&#160;<span class="comment"></span> <span class="keyword">const</span> Ch* <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#a03bcd5497a574cffbd066d0aec2b5585">GetInvalidSchemaKeyword</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; <span class="keywordflow">return</span> schemaStack_.Empty() ? 0 : CurrentContext().invalidKeyword;</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; }</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160;<span class="comment"> //! Gets the JSON pointer pointed to the invalid value.</span></div><div class="line"><a name="l01667"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_schema_validator.html#a60dfb4a89593c8d3ca4c89a6202feb52"> 1667</a></span>&#160;<span class="comment"></span> PointerType <a class="code" href="classrapidjson_1_1_generic_schema_validator.html#a60dfb4a89593c8d3ca4c89a6202feb52">GetInvalidDocumentPointer</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="keywordflow">return</span> documentStack_.Empty() ? PointerType() : PointerType(documentStack_.template Bottom&lt;Ch&gt;(), documentStack_.GetSize() / <span class="keyword">sizeof</span>(Ch));</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; }</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160;</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_VERBOSE</span></div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_() \</span></div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160;<span class="preprocessor">RAPIDJSON_MULTILINEMACRO_BEGIN\</span></div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;<span class="preprocessor"> *documentStack_.template Push&lt;Ch&gt;() = &#39;\0&#39;;\</span></div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;<span class="preprocessor"> documentStack_.template Pop&lt;Ch&gt;(1);\</span></div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;<span class="preprocessor"> internal::PrintInvalidDocument(documentStack_.template Bottom&lt;Ch&gt;());\</span></div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>&#160;<span class="preprocessor">RAPIDJSON_MULTILINEMACRO_END</span></div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_()</span></div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_(method, arg1)\</span></div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>&#160;<span class="preprocessor"> if (!valid_) return false; \</span></div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span>&#160;<span class="preprocessor"> if (!BeginValue() || !CurrentSchema().method arg1) {\</span></div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>&#160;<span class="preprocessor"> RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_();\</span></div><div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>&#160;<span class="preprocessor"> return valid_ = false;\</span></div><div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>&#160;<span class="preprocessor"> }</span></div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(method, arg2)\</span></div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160;<span class="preprocessor"> for (Context* context = schemaStack_.template Bottom&lt;Context&gt;(); context != schemaStack_.template End&lt;Context&gt;(); context++) {\</span></div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160;<span class="preprocessor"> if (context-&gt;hasher)\</span></div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;<span class="preprocessor"> static_cast&lt;HasherType*&gt;(context-&gt;hasher)-&gt;method arg2;\</span></div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160;<span class="preprocessor"> if (context-&gt;validators)\</span></div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160;<span class="preprocessor"> for (SizeType i_ = 0; i_ &lt; context-&gt;validatorCount; i_++)\</span></div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160;<span class="preprocessor"> static_cast&lt;GenericSchemaValidator*&gt;(context-&gt;validators[i_])-&gt;method arg2;\</span></div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;<span class="preprocessor"> if (context-&gt;patternPropertiesValidators)\</span></div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160;<span class="preprocessor"> for (SizeType i_ = 0; i_ &lt; context-&gt;patternPropertiesValidatorCount; i_++)\</span></div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160;<span class="preprocessor"> static_cast&lt;GenericSchemaValidator*&gt;(context-&gt;patternPropertiesValidators[i_])-&gt;method arg2;\</span></div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160;<span class="preprocessor"> }</span></div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160;</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HANDLE_END_(method, arg2)\</span></div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160;<span class="preprocessor"> return valid_ = EndValue() &amp;&amp; outputHandler_.method arg2</span></div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160;</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160;<span class="preprocessor">#define RAPIDJSON_SCHEMA_HANDLE_VALUE_(method, arg1, arg2) \</span></div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160;<span class="preprocessor"> RAPIDJSON_SCHEMA_HANDLE_BEGIN_ (method, arg1);\</span></div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160;<span class="preprocessor"> RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(method, arg2);\</span></div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160;<span class="preprocessor"> RAPIDJSON_SCHEMA_HANDLE_END_ (method, arg2)</span></div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160;</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160; <span class="keywordtype">bool</span> Null() { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Null, (CurrentContext() ), ( )); }</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Bool, (CurrentContext(), b), (b)); }</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Int, (CurrentContext(), i), (i)); }</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> u) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Uint, (CurrentContext(), u), (u)); }</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; <span class="keywordtype">bool</span> Int64(int64_t i) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Int64, (CurrentContext(), i), (i)); }</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="keywordtype">bool</span> Uint64(uint64_t u) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Uint64, (CurrentContext(), u), (u)); }</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; <span class="keywordtype">bool</span> Double(<span class="keywordtype">double</span> d) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Double, (CurrentContext(), d), (d)); }</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; <span class="keywordtype">bool</span> RawNumber(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy)</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; { RAPIDJSON_SCHEMA_HANDLE_VALUE_(String, (CurrentContext(), str, length, copy), (str, length, copy)); }</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy)</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; { RAPIDJSON_SCHEMA_HANDLE_VALUE_(String, (CurrentContext(), str, length, copy), (str, length, copy)); }</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160;</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; <span class="keywordtype">bool</span> StartObject() {</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; RAPIDJSON_SCHEMA_HANDLE_BEGIN_(StartObject, (CurrentContext()));</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(StartObject, ());</div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; <span class="keywordflow">return</span> valid_ = outputHandler_.StartObject();</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; }</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160; </div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, <span class="keywordtype">bool</span> copy) {</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>&#160; <span class="keywordflow">if</span> (!valid_) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160; AppendToken(str, len);</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <span class="keywordflow">if</span> (!CurrentSchema().Key(CurrentContext(), str, len, copy)) <span class="keywordflow">return</span> valid_ = <span class="keyword">false</span>;</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(Key, (str, len, copy));</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <span class="keywordflow">return</span> valid_ = outputHandler_.Key(str, len, copy);</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; }</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; </div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160; <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount) { </div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; <span class="keywordflow">if</span> (!valid_) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(EndObject, (memberCount));</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; <span class="keywordflow">if</span> (!CurrentSchema().EndObject(CurrentContext(), memberCount)) <span class="keywordflow">return</span> valid_ = <span class="keyword">false</span>;</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; RAPIDJSON_SCHEMA_HANDLE_END_(EndObject, (memberCount));</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; }</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160;</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160; <span class="keywordtype">bool</span> StartArray() {</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; RAPIDJSON_SCHEMA_HANDLE_BEGIN_(StartArray, (CurrentContext()));</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160; RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(StartArray, ());</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; <span class="keywordflow">return</span> valid_ = outputHandler_.StartArray();</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; }</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; </div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount) {</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160; <span class="keywordflow">if</span> (!valid_) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(EndArray, (elementCount));</div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; <span class="keywordflow">if</span> (!CurrentSchema().EndArray(CurrentContext(), elementCount)) <span class="keywordflow">return</span> valid_ = <span class="keyword">false</span>;</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; RAPIDJSON_SCHEMA_HANDLE_END_(EndArray, (elementCount));</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; }</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160;<span class="preprocessor">#undef RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_</span></div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160;<span class="preprocessor">#undef RAPIDJSON_SCHEMA_HANDLE_BEGIN_</span></div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160;<span class="preprocessor">#undef RAPIDJSON_SCHEMA_HANDLE_PARALLEL_</span></div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;<span class="preprocessor">#undef RAPIDJSON_SCHEMA_HANDLE_VALUE_</span></div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;</div><div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>&#160; <span class="comment">// Implementation of ISchemaStateFactory&lt;SchemaType&gt;</span></div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160; <span class="keyword">virtual</span> ISchemaValidator* CreateSchemaValidator(<span class="keyword">const</span> SchemaType&amp; root) {</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> (GetStateAllocator().Malloc(<span class="keyword">sizeof</span>(<a class="code" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator</a>))) <a class="code" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator</a>(*schemaDocument_, root,</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160;#<span class="keywordflow">if</span> RAPIDJSON_SCHEMA_VERBOSE</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; depth_ + 1,</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160;#endif</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; &amp;GetStateAllocator());</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; }</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> DestroySchemaValidator(ISchemaValidator* validator) {</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; <a class="code" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator</a>* v = <span class="keyword">static_cast&lt;</span><a class="code" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator</a>*<span class="keyword">&gt;</span>(validator);</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; v-&gt;<a class="code" href="classrapidjson_1_1_generic_schema_validator.html#ad9f00d71bf62b8983cf2514c43fb1572">~GenericSchemaValidator</a>();</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; StateAllocator::Free(v);</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; }</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160;</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span>* CreateHasher() {</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; <span class="keywordflow">return</span> <span class="keyword">new</span> (GetStateAllocator().Malloc(<span class="keyword">sizeof</span>(HasherType))) HasherType(&amp;GetStateAllocator());</div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; }</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160;</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160; <span class="keyword">virtual</span> uint64_t GetHashCode(<span class="keywordtype">void</span>* hasher) {</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>HasherType*<span class="keyword">&gt;</span>(hasher)-&gt;GetHashCode();</div><div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>&#160; }</div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> DestroryHasher(<span class="keywordtype">void</span>* hasher) {</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; HasherType* h = <span class="keyword">static_cast&lt;</span>HasherType*<span class="keyword">&gt;</span>(hasher);</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; h-&gt;~HasherType();</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; StateAllocator::Free(h);</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; }</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160;</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span>* MallocState(<span class="keywordtype">size_t</span> size) {</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; <span class="keywordflow">return</span> GetStateAllocator().Malloc(size);</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160; }</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> FreeState(<span class="keywordtype">void</span>* p) {</div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160; StateAllocator::Free(p);</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; }</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160;</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaType::Context Context;</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; <span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_value.html">GenericValue&lt;UTF8&lt;&gt;</a>, StateAllocator&gt; <a class="code" href="classrapidjson_1_1_generic_value.html">HashCodeArray</a>;</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; <span class="keyword">typedef</span> internal::Hasher&lt;EncodingType, StateAllocator&gt; HasherType;</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160;</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; <a class="code" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator</a>( </div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; <span class="keyword">const</span> SchemaDocumentType&amp; schemaDocument,</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; <span class="keyword">const</span> SchemaType&amp; root,</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160;#<span class="keywordflow">if</span> RAPIDJSON_SCHEMA_VERBOSE</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; <span class="keywordtype">unsigned</span> depth,</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160;#endif</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; StateAllocator* allocator = 0,</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; <span class="keywordtype">size_t</span> schemaStackCapacity = kDefaultSchemaStackCapacity,</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <span class="keywordtype">size_t</span> documentStackCapacity = kDefaultDocumentStackCapacity)</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; :</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; schemaDocument_(&amp;schemaDocument),</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; root_(root),</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; stateAllocator_(allocator),</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; ownStateAllocator_(0),</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; schemaStack_(allocator, schemaStackCapacity),</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; documentStack_(allocator, documentStackCapacity),</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; outputHandler_(CreateNullHandler()),</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; valid_(<span class="keyword">true</span>)</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_VERBOSE</span></div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; , depth_(depth)</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160; {</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>&#160; }</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; StateAllocator&amp; GetStateAllocator() {</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; <span class="keywordflow">if</span> (!stateAllocator_)</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; stateAllocator_ = ownStateAllocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(StateAllocator)();</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160; <span class="keywordflow">return</span> *stateAllocator_;</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; }</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160;</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; <span class="keywordtype">bool</span> BeginValue() {</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; <span class="keywordflow">if</span> (schemaStack_.Empty())</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; PushSchema(root_);</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; <span class="keywordflow">if</span> (CurrentContext().inArray)</div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; internal::TokenHelper&lt;internal::Stack&lt;StateAllocator&gt;, Ch&gt;::AppendIndexToken(documentStack_, CurrentContext().arrayElementIndex);</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160;</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; <span class="keywordflow">if</span> (!CurrentSchema().BeginValue(CurrentContext()))</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160;</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count = CurrentContext().patternPropertiesSchemaCount;</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; <span class="keyword">const</span> SchemaType** sa = CurrentContext().patternPropertiesSchemas;</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; <span class="keyword">typename</span> Context::PatternValidatorType patternValidatorType = CurrentContext().valuePatternValidatorType;</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; <span class="keywordtype">bool</span> valueUniqueness = CurrentContext().valueUniqueness;</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(CurrentContext().valueSchema);</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; PushSchema(*CurrentContext().valueSchema);</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160;</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; <span class="keywordflow">if</span> (count &gt; 0) {</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; CurrentContext().objectPatternValidatorType = patternValidatorType;</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; ISchemaValidator**&amp; va = CurrentContext().patternPropertiesValidators;</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&amp; validatorCount = CurrentContext().patternPropertiesValidatorCount;</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; va = <span class="keyword">static_cast&lt;</span>ISchemaValidator**<span class="keyword">&gt;</span>(MallocState(<span class="keyword">sizeof</span>(ISchemaValidator*) * count));</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; count; i++)</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160; va[validatorCount++] = CreateSchemaValidator(*sa[i]);</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160; }</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>&#160;</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160; CurrentContext().arrayUniqueness = valueUniqueness;</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; }</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; }</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160;</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; <span class="keywordtype">bool</span> EndValue() {</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; <span class="keywordflow">if</span> (!CurrentSchema().EndValue(CurrentContext()))</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160;</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_VERBOSE</span></div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer&lt;EncodingType&gt;</a> sb;</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160; schemaDocument_-&gt;GetPointer(&amp;CurrentSchema()).Stringify(sb);</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>&#160; *documentStack_.template Push&lt;Ch&gt;() = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160; documentStack_.template Pop&lt;Ch&gt;(1);</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; internal::PrintValidatorPointers(depth_, sb.GetString(), documentStack_.template Bottom&lt;Ch&gt;());</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160; uint64_t h = CurrentContext().arrayUniqueness ? <span class="keyword">static_cast&lt;</span>HasherType*<span class="keyword">&gt;</span>(CurrentContext().hasher)-&gt;GetHashCode() : 0;</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; </div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; PopSchema();</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160; <span class="keywordflow">if</span> (!schemaStack_.Empty()) {</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; Context&amp; context = CurrentContext();</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160; <span class="keywordflow">if</span> (context.valueUniqueness) {</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; HashCodeArray* a = <span class="keyword">static_cast&lt;</span>HashCodeArray*<span class="keyword">&gt;</span>(context.arrayElementHashCodes);</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; <span class="keywordflow">if</span> (!a)</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; CurrentContext().arrayElementHashCodes = a = <span class="keyword">new</span> (GetStateAllocator().Malloc(<span class="keyword">sizeof</span>(HashCodeArray))) HashCodeArray(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> <a class="code" href="classrapidjson_1_1_generic_value.html">HashCodeArray::ConstValueIterator</a> itr = a-&gt;<a class="code" href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603">Begin</a>(); itr != a-&gt;<a class="code" href="classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109">End</a>(); ++itr)</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; <span class="keywordflow">if</span> (itr-&gt;GetUint64() == h)</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160; RAPIDJSON_INVALID_KEYWORD_RETURN(SchemaType::GetUniqueItemsString());</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; a-&gt;<a class="code" href="classrapidjson_1_1_generic_value.html#a0ec9f34bef5890241d4bc882b73b1db4">PushBack</a>(h, GetStateAllocator());</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; }</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; }</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160;</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; <span class="comment">// Remove the last token of document pointer</span></div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; <span class="keywordflow">while</span> (!documentStack_.Empty() &amp;&amp; *documentStack_.template Pop&lt;Ch&gt;(1) != <span class="charliteral">&#39;/&#39;</span>)</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160; ;</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160;</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; }</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160; <span class="keywordtype">void</span> AppendToken(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len) {</div><div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>&#160; documentStack_.template Reserve&lt;Ch&gt;(1 + len * 2); <span class="comment">// worst case all characters are escaped as two characters</span></div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160; *documentStack_.template PushUnsafe&lt;Ch&gt;() = <span class="charliteral">&#39;/&#39;</span>;</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> i = 0; i &lt; len; i++) {</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; <span class="keywordflow">if</span> (str[i] == <span class="charliteral">&#39;~&#39;</span>) {</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; *documentStack_.template PushUnsafe&lt;Ch&gt;() = <span class="charliteral">&#39;~&#39;</span>;</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; *documentStack_.template PushUnsafe&lt;Ch&gt;() = <span class="charliteral">&#39;0&#39;</span>;</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; }</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (str[i] == <span class="charliteral">&#39;/&#39;</span>) {</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; *documentStack_.template PushUnsafe&lt;Ch&gt;() = <span class="charliteral">&#39;~&#39;</span>;</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; *documentStack_.template PushUnsafe&lt;Ch&gt;() = <span class="charliteral">&#39;1&#39;</span>;</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160; }</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160; *documentStack_.template PushUnsafe&lt;Ch&gt;() = str[i];</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160; }</div><div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>&#160; }</div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> PushSchema(<span class="keyword">const</span> SchemaType&amp; schema) { <span class="keyword">new</span> (schemaStack_.template Push&lt;Context&gt;()) Context(*<span class="keyword">this</span>, &amp;schema); }</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; </div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> PopSchema() {</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; Context* c = schemaStack_.template Pop&lt;Context&gt;(1);</div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; <span class="keywordflow">if</span> (HashCodeArray* a = static_cast&lt;HashCodeArray*&gt;(c-&gt;arrayElementHashCodes)) {</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; a-&gt;~HashCodeArray();</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160; StateAllocator::Free(a);</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; }</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; c-&gt;~Context();</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160; }</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160;</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; <span class="keyword">const</span> SchemaType&amp; CurrentSchema()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *schemaStack_.template Top&lt;Context&gt;()-&gt;schema; }</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; Context&amp; CurrentContext() { <span class="keywordflow">return</span> *schemaStack_.template Top&lt;Context&gt;(); }</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; <span class="keyword">const</span> Context&amp; CurrentContext()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *schemaStack_.template Top&lt;Context&gt;(); }</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160;</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; OutputHandler&amp; CreateNullHandler() {</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; <span class="keywordflow">return</span> *(nullHandler_ = <span class="keyword">new</span> (GetStateAllocator().Malloc(<span class="keyword">sizeof</span>(OutputHandler))) OutputHandler);</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; }</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160;</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultSchemaStackCapacity = 1024;</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultDocumentStackCapacity = 256;</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160; <span class="keyword">const</span> SchemaDocumentType* schemaDocument_;</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; <span class="keyword">const</span> SchemaType&amp; root_;</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; StateAllocator* stateAllocator_;</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; StateAllocator* ownStateAllocator_;</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160; internal::Stack&lt;StateAllocator&gt; schemaStack_; <span class="comment">//!&lt; stack to store the current path of schema (BaseSchemaType *)</span></div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;<span class="comment"></span> internal::Stack&lt;StateAllocator&gt; documentStack_; <span class="comment">//!&lt; stack to store the current path of validating document (Ch)</span></div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>&#160;<span class="comment"></span> OutputHandler&amp; outputHandler_;</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160; OutputHandler* nullHandler_;</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; <span class="keywordtype">bool</span> valid_;</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160;<span class="preprocessor">#if RAPIDJSON_SCHEMA_VERBOSE</span></div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160; <span class="keywordtype">unsigned</span> depth_;</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160;};</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160;</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator&lt;SchemaDocument&gt;</a> <a class="code" href="classrapidjson_1_1_generic_schema_validator.html">SchemaValidator</a>;</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;<span class="comment"></span><span class="comment">// SchemaValidatingReader</span></div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160;<span class="comment">//! A helper class for parsing with validation.</span></div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160;<span class="comment"> This helper class is a functor, designed as a parameter of \ref GenericDocument::Populate().</span></div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160;<span class="comment"> \tparam parseFlags Combination of \ref ParseFlag.</span></div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;<span class="comment"> \tparam InputStream Type of input stream, implementing Stream concept.</span></div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160;<span class="comment"> \tparam SourceEncoding Encoding of the input stream.</span></div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160;<span class="comment"> \tparam SchemaDocumentType Type of schema document.</span></div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160;<span class="comment"> \tparam StackAllocator Allocator type for stack.</span></div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160;<span class="keyword">template</span> &lt;</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; <span class="keywordtype">unsigned</span> parseFlags,</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; <span class="keyword">typename</span> InputStream,</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; <span class="keyword">typename</span> SourceEncoding,</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; <span class="keyword">typename</span> SchemaDocumentType = SchemaDocument,</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160; <span class="keyword">typename</span> StackAllocator = <a class="code" href="classrapidjson_1_1_crt_allocator.html">CrtAllocator</a>&gt;</div><div class="line"><a name="l01973"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_schema_validating_reader.html"> 1973</a></span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_schema_validating_reader.html">SchemaValidatingReader</a> {</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SchemaDocumentType::PointerType PointerType;</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> InputStream::Ch Ch;</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160;<span class="comment"></span></div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>&#160;<span class="comment"> //! Constructor</span></div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160;<span class="comment"> \param is Input stream.</span></div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160;<span class="comment"> \param sd Schema document.</span></div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l01983"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_schema_validating_reader.html#a1e2bcc66cad23376241cd91e8bf8c706"> 1983</a></span>&#160; <a class="code" href="classrapidjson_1_1_schema_validating_reader.html#a1e2bcc66cad23376241cd91e8bf8c706">SchemaValidatingReader</a>(InputStream&amp; is, <span class="keyword">const</span> SchemaDocumentType&amp; sd) : is_(is), sd_(sd), invalidSchemaKeyword_(), isValid_(true) {}</div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160;</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Handler&gt;</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160; <span class="keywordtype">bool</span> operator()(<a class="code" href="classrapidjson_1_1_handler.html">Handler</a>&amp; handler) {</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; <a class="code" href="classrapidjson_1_1_generic_reader.html">GenericReader&lt;SourceEncoding, typename SchemaDocumentType::EncodingType, StackAllocator&gt;</a> reader;</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160; <a class="code" href="classrapidjson_1_1_generic_schema_validator.html">GenericSchemaValidator&lt;SchemaDocumentType, Handler&gt;</a> validator(sd_, handler);</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160; parseResult_ = reader.template Parse&lt;parseFlags&gt;(is_, validator);</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160;</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; isValid_ = validator.<a class="code" href="classrapidjson_1_1_generic_schema_validator.html#ad32a9ad31dbb588edaaf038ab053275b">IsValid</a>();</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160; <span class="keywordflow">if</span> (isValid_) {</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160; invalidSchemaPointer_ = PointerType();</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160; invalidSchemaKeyword_ = 0;</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; invalidDocumentPointer_ = PointerType();</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; }</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; invalidSchemaPointer_ = validator.<a class="code" href="classrapidjson_1_1_generic_schema_validator.html#a3238efb9d9144c2d6577362d8dc5f61b">GetInvalidSchemaPointer</a>();</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160; invalidSchemaKeyword_ = validator.<a class="code" href="classrapidjson_1_1_generic_schema_validator.html#a03bcd5497a574cffbd066d0aec2b5585">GetInvalidSchemaKeyword</a>();</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; invalidDocumentPointer_ = validator.<a class="code" href="classrapidjson_1_1_generic_schema_validator.html#a60dfb4a89593c8d3ca4c89a6202feb52">GetInvalidDocumentPointer</a>();</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; }</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160;</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; <span class="keywordflow">return</span> parseResult_;</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; }</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160; <span class="keyword">const</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a>&amp; GetParseResult()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> parseResult_; }</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160; <span class="keywordtype">bool</span> IsValid()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> isValid_; }</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; <span class="keyword">const</span> PointerType&amp; GetInvalidSchemaPointer()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> invalidSchemaPointer_; }</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160; <span class="keyword">const</span> Ch* GetInvalidSchemaKeyword()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> invalidSchemaKeyword_; }</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; <span class="keyword">const</span> PointerType&amp; GetInvalidDocumentPointer()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> invalidDocumentPointer_; }</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160;</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160; InputStream&amp; is_;</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; <span class="keyword">const</span> SchemaDocumentType&amp; sd_;</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160;</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">ParseResult</a> parseResult_;</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160; PointerType invalidSchemaPointer_;</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160; <span class="keyword">const</span> Ch* invalidSchemaKeyword_;</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; PointerType invalidDocumentPointer_;</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; <span class="keywordtype">bool</span> isValid_;</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;};</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;</div><div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160;</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_SCHEMA_H_</span></div><div class="ttc" id="classrapidjson_1_1_generic_pointer_html_af09e26073a7263fc9e8f0c14160f45bd"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd">rapidjson::GenericPointer::Get</a></div><div class="ttdeci">ValueType * Get(ValueType &amp;root, size_t *unresolvedTokenIndex=0) const</div><div class="ttdoc">Query a value in a subtree. </div><div class="ttdef"><b>Definition:</b> pointer.h:479</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">rapidjson::kTrueType</a></div><div class="ttdoc">true </div><div class="ttdef"><b>Definition:</b> rapidjson.h:619</div></div>
-<div class="ttc" id="namespacerapidjson_html_af91eb8eea47b79d75b23e29fa9c0abb5"><div class="ttname"><a href="namespacerapidjson.html#af91eb8eea47b79d75b23e29fa9c0abb5">rapidjson::IRemoteSchemaDocumentProvider</a></div><div class="ttdeci">IGenericRemoteSchemaDocumentProvider&lt; SchemaDocument &gt; IRemoteSchemaDocumentProvider</div><div class="ttdoc">IGenericRemoteSchemaDocumentProvider using SchemaDocument. </div><div class="ttdef"><b>Definition:</b> fwd.h:139</div></div>
<div class="ttc" id="classrapidjson_1_1_handler_html"><div class="ttname"><a href="classrapidjson_1_1_handler.html">rapidjson::Handler</a></div><div class="ttdoc">Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_schema_validator_html_a8381f8d4dca195449f086ffbd25bb9b7"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_validator.html#a8381f8d4dca195449f086ffbd25bb9b7">rapidjson::GenericSchemaValidator::GetInvalidSchemaPointer</a></div><div class="ttdeci">PointerType GetInvalidSchemaPointer() const </div><div class="ttdoc">Gets the JSON pointer pointed to the invalid schema. </div><div class="ttdef"><b>Definition:</b> schema.h:1657</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a8d1040c479d89edb261db86400ebe603"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603">rapidjson::GenericValue::Begin</a></div><div class="ttdeci">ValueIterator Begin()</div><div class="ttdoc">Element iterator </div><div class="ttdef"><b>Definition:</b> document.h:1563</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_schema_validator_html_a03bcd5497a574cffbd066d0aec2b5585"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_validator.html#a03bcd5497a574cffbd066d0aec2b5585">rapidjson::GenericSchemaValidator::GetInvalidSchemaKeyword</a></div><div class="ttdeci">const Ch * GetInvalidSchemaKeyword() const</div><div class="ttdoc">Gets the keyword of invalid schema. </div><div class="ttdef"><b>Definition:</b> schema.h:1662</div></div>
<div class="ttc" id="rapidjson_8h_html_aaee1245f375a71be1ac9b8a07ba5fb8f"><div class="ttname"><a href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a></div><div class="ttdeci">#define RAPIDJSON_UINT64_C2(high32, low32)</div><div class="ttdoc">Construct a 64-bit literal by a pair of 32-bit integer. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:294</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_reader_html"><div class="ttname"><a href="classrapidjson_1_1_generic_reader.html">rapidjson::GenericReader</a></div><div class="ttdoc">SAX-style JSON parser. Use Reader for UTF8 encoding and default allocator. </div><div class="ttdef"><b>Definition:</b> fwd.h:88</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_schema_validator_html_a914628c4d69faea91ada1dee61d25d59"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_validator.html#a914628c4d69faea91ada1dee61d25d59">rapidjson::GenericSchemaValidator::GetInvalidSchemaKeyword</a></div><div class="ttdeci">const Ch * GetInvalidSchemaKeyword() const </div><div class="ttdoc">Gets the keyword of invalid schema. </div><div class="ttdef"><b>Definition:</b> schema.h:1662</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_schema_document_html_ad200cc7bcb193c8568cdbda7b7fd0496"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_document.html#ad200cc7bcb193c8568cdbda7b7fd0496">rapidjson::GenericSchemaDocument::GenericSchemaDocument</a></div><div class="ttdeci">GenericSchemaDocument(const ValueType &amp;document, IRemoteSchemaDocumentProviderType *remoteProvider=0, Allocator *allocator=0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> schema.h:1339</div></div>
<div class="ttc" id="namespacerapidjson_html_a44eb33eaa523e36d466b1ced64b85c84"><div class="ttname"><a href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">rapidjson::SizeType</a></div><div class="ttdeci">unsigned SizeType</div><div class="ttdoc">Size type (for string lengths, array sizes, etc.) </div><div class="ttdef"><b>Definition:</b> rapidjson.h:389</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">rapidjson::kFalseType</a></div><div class="ttdoc">false </div><div class="ttdef"><b>Definition:</b> rapidjson.h:618</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_string_buffer_html"><div class="ttname"><a href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer</a></div><div class="ttdoc">Represents an in-memory output stream. </div><div class="ttdef"><b>Definition:</b> fwd.h:59</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_aaf58b9337ccc0cdf16aa9634c4645109"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109">rapidjson::GenericValue::End</a></div><div class="ttdeci">ValueIterator End()</div><div class="ttdoc">Past-the-end element iterator </div><div class="ttdef"><b>Definition:</b> document.h:1566</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_schema_validator_html_a60dfb4a89593c8d3ca4c89a6202feb52"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_validator.html#a60dfb4a89593c8d3ca4c89a6202feb52">rapidjson::GenericSchemaValidator::GetInvalidDocumentPointer</a></div><div class="ttdeci">PointerType GetInvalidDocumentPointer() const</div><div class="ttdoc">Gets the JSON pointer pointed to the invalid value. </div><div class="ttdef"><b>Definition:</b> schema.h:1667</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_schema_validator_html_ad9f00d71bf62b8983cf2514c43fb1572"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_validator.html#ad9f00d71bf62b8983cf2514c43fb1572">rapidjson::GenericSchemaValidator::~GenericSchemaValidator</a></div><div class="ttdeci">~GenericSchemaValidator()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> schema.h:1635</div></div>
+<div class="ttc" id="classrapidjson_1_1_crt_allocator_html"><div class="ttname"><a href="classrapidjson_1_1_crt_allocator.html">rapidjson::CrtAllocator</a></div><div class="ttdoc">C-runtime library allocator. </div><div class="ttdef"><b>Definition:</b> allocators.h:62</div></div>
<div class="ttc" id="rapidjson_8h_html_abdc7cd7902748ffe6626d71c59a73c3b"><div class="ttname"><a href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a></div><div class="ttdeci">#define RAPIDJSON_NEW(TypeName)</div><div class="ttdoc">! customization point for global new </div><div class="ttdef"><b>Definition:</b> rapidjson.h:599</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_schema_validator_html_ad32a9ad31dbb588edaaf038ab053275b"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_validator.html#ad32a9ad31dbb588edaaf038ab053275b">rapidjson::GenericSchemaValidator::IsValid</a></div><div class="ttdeci">virtual bool IsValid() const</div><div class="ttdoc">Checks whether the current state is valid. </div><div class="ttdef"><b>Definition:</b> schema.h:1654</div></div>
+<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s_html_structrapidjson_1_1_parse_result"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result">rapidjson::ParseResult</a></div><div class="ttdoc">Result of parsing (wraps ParseErrorCode) </div><div class="ttdef"><b>Definition:</b> error.h:106</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_schema_validator_html_acc07bd08b00195d84bb5b83f59c593d3"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_validator.html#acc07bd08b00195d84bb5b83f59c593d3">rapidjson::GenericSchemaValidator::GenericSchemaValidator</a></div><div class="ttdeci">GenericSchemaValidator(const SchemaDocumentType &amp;schemaDocument, StateAllocator *allocator=0, size_t schemaStackCapacity=kDefaultSchemaStackCapacity, size_t documentStackCapacity=kDefaultDocumentStackCapacity)</div><div class="ttdoc">Constructor without output handler. </div><div class="ttdef"><b>Definition:</b> schema.h:1585</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_pointer_html"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html">rapidjson::GenericPointer</a></div><div class="ttdoc">Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator. </div><div class="ttdef"><b>Definition:</b> fwd.h:126</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_schema_document_html"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_document.html">rapidjson::GenericSchemaDocument</a></div><div class="ttdoc">JSON schema document. </div><div class="ttdef"><b>Definition:</b> fwd.h:136</div></div>
-<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
+<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">rapidjson::kObjectType</a></div><div class="ttdoc">object </div><div class="ttdef"><b>Definition:</b> rapidjson.h:620</div></div>
<div class="ttc" id="document_8h_html"><div class="ttname"><a href="document_8h.html">document.h</a></div></div>
<div class="ttc" id="classrapidjson_1_1_generic_schema_validator_html_afe6cd0d9088a1d4cf8100c0efc9f76fc"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_validator.html#afe6cd0d9088a1d4cf8100c0efc9f76fc">rapidjson::GenericSchemaValidator::Reset</a></div><div class="ttdeci">void Reset()</div><div class="ttdoc">Reset the internal states. </div><div class="ttdef"><b>Definition:</b> schema.h:1645</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_schema_validator_html_ab520a4ee6df3e23ffb948c8d5ae7bf38"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_validator.html#ab520a4ee6df3e23ffb948c8d5ae7bf38">rapidjson::GenericSchemaValidator::IsValid</a></div><div class="ttdeci">virtual bool IsValid() const </div><div class="ttdoc">Checks whether the current state is valid. </div><div class="ttdef"><b>Definition:</b> schema.h:1654</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html_a0ec9f34bef5890241d4bc882b73b1db4"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html#a0ec9f34bef5890241d4bc882b73b1db4">rapidjson::GenericValue::PushBack</a></div><div class="ttdeci">GenericValue &amp; PushBack(GenericValue &amp;value, Allocator &amp;allocator)</div><div class="ttdoc">Append a GenericValue at the end of the array. </div><div class="ttdef"><b>Definition:</b> document.h:1599</div></div>
<div class="ttc" id="classrapidjson_1_1_i_generic_remote_schema_document_provider_html"><div class="ttname"><a href="classrapidjson_1_1_i_generic_remote_schema_document_provider.html">rapidjson::IGenericRemoteSchemaDocumentProvider</a></div><div class="ttdef"><b>Definition:</b> fwd.h:133</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">rapidjson::kArrayType</a></div><div class="ttdoc">array </div><div class="ttdef"><b>Definition:</b> rapidjson.h:621</div></div>
<div class="ttc" id="rapidjson_8h_html_a52c941c3fdd646527cdcd42aa846a28a"><div class="ttname"><a href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a></div><div class="ttdeci">#define RAPIDJSON_DELETE(x)</div><div class="ttdoc">! customization point for global delete </div><div class="ttdef"><b>Definition:</b> rapidjson.h:603</div></div>
-<div class="ttc" id="classrapidjson_1_1_schema_validating_reader_html_a1e2bcc66cad23376241cd91e8bf8c706"><div class="ttname"><a href="classrapidjson_1_1_schema_validating_reader.html#a1e2bcc66cad23376241cd91e8bf8c706">rapidjson::SchemaValidatingReader::SchemaValidatingReader</a></div><div class="ttdeci">SchemaValidatingReader(InputStream &amp;is, const SchemaDocumentType &amp;sd)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> schema.h:1983</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_schema_document_html_adf6f3372013227873ed392dee1e752bf"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_document.html#adf6f3372013227873ed392dee1e752bf">rapidjson::GenericSchemaDocument::~GenericSchemaDocument</a></div><div class="ttdeci">~GenericSchemaDocument()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> schema.h:1400</div></div>
+<div class="ttc" id="classrapidjson_1_1_schema_validating_reader_html_a1e2bcc66cad23376241cd91e8bf8c706"><div class="ttname"><a href="classrapidjson_1_1_schema_validating_reader.html#a1e2bcc66cad23376241cd91e8bf8c706">rapidjson::SchemaValidatingReader::SchemaValidatingReader</a></div><div class="ttdeci">SchemaValidatingReader(InputStream &amp;is, const SchemaDocumentType &amp;sd)</div><div class="ttdoc">Constructor </div><div class="ttdef"><b>Definition:</b> schema.h:1983</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_schema_document_html_adf6f3372013227873ed392dee1e752bf"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_document.html#adf6f3372013227873ed392dee1e752bf">rapidjson::GenericSchemaDocument::~GenericSchemaDocument</a></div><div class="ttdeci">~GenericSchemaDocument()</div><div class="ttdoc">Destructor </div><div class="ttdef"><b>Definition:</b> schema.h:1400</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">rapidjson::kNullType</a></div><div class="ttdoc">null </div><div class="ttdef"><b>Definition:</b> rapidjson.h:617</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">rapidjson::kStringType</a></div><div class="ttdoc">string </div><div class="ttdef"><b>Definition:</b> rapidjson.h:622</div></div>
-<div class="ttc" id="namespacerapidjson_html_a52bbb5d64d1319495089e1713a0653cf"><div class="ttname"><a href="namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf">rapidjson::SchemaDocument</a></div><div class="ttdeci">GenericSchemaDocument&lt; Value, CrtAllocator &gt; SchemaDocument</div><div class="ttdoc">GenericSchemaDocument using Value type. </div><div class="ttdef"><b>Definition:</b> fwd.h:136</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_schema_validator_html_af66e4a41d71c89edfabb176af7839f04"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_validator.html#af66e4a41d71c89edfabb176af7839f04">rapidjson::GenericSchemaValidator::GetInvalidDocumentPointer</a></div><div class="ttdeci">PointerType GetInvalidDocumentPointer() const </div><div class="ttdoc">Gets the JSON pointer pointed to the invalid value. </div><div class="ttdef"><b>Definition:</b> schema.h:1667</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_schema_document_html_a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_document.html#a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a">rapidjson::GenericSchemaDocument::GetRoot</a></div><div class="ttdeci">const SchemaType &amp; GetRoot() const</div><div class="ttdoc">Get the root schema. </div><div class="ttdef"><b>Definition:</b> schema.h:1413</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a7cb5eda2af1722e52efa591c4103ebec"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a7cb5eda2af1722e52efa591c4103ebec">rapidjson::GenericPointer::Append</a></div><div class="ttdeci">GenericPointer Append(const Token &amp;token, Allocator *allocator=0) const</div><div class="ttdoc">Append a token and return a new Pointer </div><div class="ttdef"><b>Definition:</b> pointer.h:211</div></div>
+<div class="ttc" id="structrapidjson_1_1_base_reader_handler_html"><div class="ttname"><a href="structrapidjson_1_1_base_reader_handler.html">rapidjson::BaseReaderHandler</a></div><div class="ttdoc">Default implementation of Handler. </div><div class="ttdef"><b>Definition:</b> fwd.h:85</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_schema_validator_html"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_validator.html">rapidjson::GenericSchemaValidator</a></div><div class="ttdoc">JSON Schema Validator. </div><div class="ttdef"><b>Definition:</b> fwd.h:145</div></div>
<div class="ttc" id="classrapidjson_1_1_allocator_html"><div class="ttname"><a href="classrapidjson_1_1_allocator.html">rapidjson::Allocator</a></div><div class="ttdoc">Concept for allocating, resizing and freeing memory block. </div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_value_html"><div class="ttname"><a href="classrapidjson_1_1_generic_value.html">rapidjson::GenericValue</a></div><div class="ttdoc">Represents a JSON value. Use Value for UTF8 encoding and default allocator. </div><div class="ttdef"><b>Definition:</b> document.h:67</div></div>
<div class="ttc" id="classrapidjson_1_1_schema_validating_reader_html"><div class="ttname"><a href="classrapidjson_1_1_schema_validating_reader.html">rapidjson::SchemaValidatingReader</a></div><div class="ttdoc">A helper class for parsing with validation. </div><div class="ttdef"><b>Definition:</b> schema.h:1973</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_pointer_html_a98b96d54c2c3378f1892ffffc501069c"><div class="ttname"><a href="classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c">rapidjson::GenericPointer::IsValid</a></div><div class="ttdeci">bool IsValid() const</div><div class="ttdoc">Check whether this is a valid pointer. </div><div class="ttdef"><b>Definition:</b> pointer.h:303</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_schema_validator_html_a3238efb9d9144c2d6577362d8dc5f61b"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_validator.html#a3238efb9d9144c2d6577362d8dc5f61b">rapidjson::GenericSchemaValidator::GetInvalidSchemaPointer</a></div><div class="ttdeci">PointerType GetInvalidSchemaPointer() const</div><div class="ttdoc">Gets the JSON pointer pointed to the invalid schema. </div><div class="ttdef"><b>Definition:</b> schema.h:1657</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_schema_validator_html_a0e1d8f19381bd53d77cc00a9a6dcd067"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_validator.html#a0e1d8f19381bd53d77cc00a9a6dcd067">rapidjson::GenericSchemaValidator::GenericSchemaValidator</a></div><div class="ttdeci">GenericSchemaValidator(const SchemaDocumentType &amp;schemaDocument, OutputHandler &amp;outputHandler, StateAllocator *allocator=0, size_t schemaStackCapacity=kDefaultSchemaStackCapacity, size_t documentStackCapacity=kDefaultDocumentStackCapacity)</div><div class="ttdoc">Constructor with output handler. </div><div class="ttdef"><b>Definition:</b> schema.h:1612</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_schema_document_html_af64ea17654ab0f1a91e382d422f91daf"><div class="ttname"><a href="classrapidjson_1_1_generic_schema_document.html#af64ea17654ab0f1a91e382d422f91daf">rapidjson::GenericSchemaDocument::GetRoot</a></div><div class="ttdeci">const SchemaType &amp; GetRoot() const </div><div class="ttdoc">Get the root schema. </div><div class="ttdef"><b>Definition:</b> schema.h:1413</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">rapidjson::kNumberType</a></div><div class="ttdoc">number </div><div class="ttdef"><b>Definition:</b> rapidjson.h:623</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
@@ -2148,7 +131,7 @@ $(document).ready(function(){initNavTree('schema_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>schema.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>schema.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/search/all_0.html b/zh-cn/search/all_0.html
index 1d6d7222..44592121 100644
--- a/zh-cn/search/all_0.html
+++ b/zh-cn/search/all_0.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_0.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_0.js b/zh-cn/search/all_0.js
index ecf88168..9794633c 100644
--- a/zh-cn/search/all_0.js
+++ b/zh-cn/search/all_0.js
@@ -1,14 +1,12 @@
var searchData=
[
- ['accept',['Accept',['../classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e',1,'rapidjson::GenericValue']]],
+ ['accept',['Accept',['../classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c',1,'rapidjson::GenericValue']]],
['addmember',['AddMember',['../classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68',1,'rapidjson::GenericValue::AddMember(GenericValue &amp;name, GenericValue &amp;value, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#ad290f179591025e871bedbbac89ac276',1,'rapidjson::GenericValue::AddMember(GenericValue &amp;name, StringRefType value, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a578e35f3350717db2aae534969b2346a',1,'rapidjson::GenericValue::AddMember(GenericValue &amp;name, std::basic_string&lt; Ch &gt; &amp;value, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#ab705cb56bfb380005704cda2d0edf168',1,'rapidjson::GenericValue::AddMember(GenericValue &amp;name, T value, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a85dc131bdad8077ce970d580d333d15a',1,'rapidjson::GenericValue::AddMember(StringRefType name, GenericValue &amp;value, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a2ccb4736d0f2ec07f06f630d8fe54f8d',1,'rapidjson::GenericValue::AddMember(StringRefType name, StringRefType value, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#aa70ada250f3a0c5aeee0ce138d136b06',1,'rapidjson::GenericValue::AddMember(StringRefType name, T value, Allocator &amp;allocator)']]],
['allocator',['Allocator',['../classrapidjson_1_1_allocator.html',1,'rapidjson']]],
['allocatortype',['AllocatorType',['../classrapidjson_1_1_generic_value.html#a5d47340c96346c5028fee4c9068d783d',1,'rapidjson::GenericValue::AllocatorType()'],['../classrapidjson_1_1_generic_document.html#a4c85243a28c9dcf2d1357da00fcaa773',1,'rapidjson::GenericDocument::AllocatorType()']]],
- ['append',['Append',['../classrapidjson_1_1_generic_pointer.html#a64f7bb98da73976b59597cdde96a40b8',1,'rapidjson::GenericPointer::Append(const Token &amp;token, Allocator *allocator=0) const '],['../classrapidjson_1_1_generic_pointer.html#a96e6f4c01632be39df82917f833710bc',1,'rapidjson::GenericPointer::Append(const Ch *name, SizeType length, Allocator *allocator=0) const '],['../classrapidjson_1_1_generic_pointer.html#af2e3630aeaebb6628c2b1694a0595452',1,'rapidjson::GenericPointer::Append(T *name, Allocator *allocator=0) const '],['../classrapidjson_1_1_generic_pointer.html#ac4b35d8051c17a8c9408f71ae8541d19',1,'rapidjson::GenericPointer::Append(const std::basic_string&lt; Ch &gt; &amp;name, Allocator *allocator=0) const '],['../classrapidjson_1_1_generic_pointer.html#ad0bd4948e56dce4b75b39f744050322c',1,'rapidjson::GenericPointer::Append(SizeType index, Allocator *allocator=0) const '],['../classrapidjson_1_1_generic_pointer.html#a3baa23b919dc9ba9421b8e6fbf3e0605',1,'rapidjson::GenericPointer::Append(const ValueType &amp;token, Allocator *allocator=0) const ']]],
+ ['append',['Append',['../classrapidjson_1_1_generic_pointer.html#a7cb5eda2af1722e52efa591c4103ebec',1,'rapidjson::GenericPointer::Append(const Token &amp;token, Allocator *allocator=0) const'],['../classrapidjson_1_1_generic_pointer.html#a30f4eac82e9fded60dead3f7d1cb3941',1,'rapidjson::GenericPointer::Append(const Ch *name, SizeType length, Allocator *allocator=0) const'],['../classrapidjson_1_1_generic_pointer.html#a033a099aaa6b36df2d5171bdc593e98e',1,'rapidjson::GenericPointer::Append(T *name, Allocator *allocator=0) const'],['../classrapidjson_1_1_generic_pointer.html#a18494d59f0317c037fa3bd037e436cec',1,'rapidjson::GenericPointer::Append(const std::basic_string&lt; Ch &gt; &amp;name, Allocator *allocator=0) const'],['../classrapidjson_1_1_generic_pointer.html#a4aadec8f0efe9a7ac42ac4906a5f676d',1,'rapidjson::GenericPointer::Append(SizeType index, Allocator *allocator=0) const'],['../classrapidjson_1_1_generic_pointer.html#a618808f066fb1104d36f012cced3b27a',1,'rapidjson::GenericPointer::Append(const ValueType &amp;token, Allocator *allocator=0) const']]],
['ascii',['ASCII',['../structrapidjson_1_1_a_s_c_i_i.html',1,'rapidjson']]],
['autoutf',['AutoUTF',['../structrapidjson_1_1_auto_u_t_f.html',1,'rapidjson']]],
- ['autoutfinputstream',['AutoUTFInputStream',['../classrapidjson_1_1_auto_u_t_f_input_stream.html#a5c9f041a3b32bf15bc9be888a8731d35',1,'rapidjson::AutoUTFInputStream']]],
- ['autoutfinputstream',['AutoUTFInputStream',['../classrapidjson_1_1_auto_u_t_f_input_stream.html',1,'rapidjson']]],
- ['autoutfoutputstream',['AutoUTFOutputStream',['../classrapidjson_1_1_auto_u_t_f_output_stream.html',1,'rapidjson']]],
- ['autoutfoutputstream',['AutoUTFOutputStream',['../classrapidjson_1_1_auto_u_t_f_output_stream.html#a39c828ee4c5b052df7338ec7fda1a17d',1,'rapidjson::AutoUTFOutputStream']]]
+ ['autoutfinputstream',['AutoUTFInputStream',['../classrapidjson_1_1_auto_u_t_f_input_stream.html',1,'rapidjson::AutoUTFInputStream&lt; CharType, InputByteStream &gt;'],['../classrapidjson_1_1_auto_u_t_f_input_stream.html#a5c9f041a3b32bf15bc9be888a8731d35',1,'rapidjson::AutoUTFInputStream::AutoUTFInputStream()']]],
+ ['autoutfoutputstream',['AutoUTFOutputStream',['../classrapidjson_1_1_auto_u_t_f_output_stream.html',1,'rapidjson::AutoUTFOutputStream&lt; CharType, OutputByteStream &gt;'],['../classrapidjson_1_1_auto_u_t_f_output_stream.html#a39c828ee4c5b052df7338ec7fda1a17d',1,'rapidjson::AutoUTFOutputStream::AutoUTFOutputStream()']]]
];
diff --git a/zh-cn/search/all_1.html b/zh-cn/search/all_1.html
index cbcfdc12..cbff42b4 100644
--- a/zh-cn/search/all_1.html
+++ b/zh-cn/search/all_1.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_1.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_1.js b/zh-cn/search/all_1.js
index a6e8337b..fbfb5b50 100644
--- a/zh-cn/search/all_1.js
+++ b/zh-cn/search/all_1.js
@@ -3,7 +3,7 @@ var searchData=
['basereaderhandler',['BaseReaderHandler',['../structrapidjson_1_1_base_reader_handler.html',1,'rapidjson']]],
['basicistreamwrapper',['BasicIStreamWrapper',['../classrapidjson_1_1_basic_i_stream_wrapper.html',1,'rapidjson']]],
['basicostreamwrapper',['BasicOStreamWrapper',['../classrapidjson_1_1_basic_o_stream_wrapper.html',1,'rapidjson']]],
- ['begin',['Begin',['../classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603',1,'rapidjson::GenericValue::Begin()'],['../classrapidjson_1_1_generic_value.html#abc8945d3411c6ce583d322753ce028e1',1,'rapidjson::GenericValue::Begin() const ']]],
+ ['begin',['Begin',['../classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603',1,'rapidjson::GenericValue::Begin()'],['../classrapidjson_1_1_generic_value.html#a07d947971c59c9ce884b3c5205c9238f',1,'rapidjson::GenericValue::Begin() const']]],
['begin_5f',['begin_',['../structrapidjson_1_1_memory_stream.html#a1cc586e50fbfc0bd5994977b42243b93',1,'rapidjson::MemoryStream']]],
- ['booleantype',['BooleanType',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a59558cbb7ba917a1c3924d83ed2da0d9',1,'rapidjson::ParseResult']]]
+ ['booleantype',['BooleanType',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#aff2daa285445bba8f76578ea274e34a3',1,'rapidjson::ParseResult']]]
];
diff --git a/zh-cn/search/all_10.html b/zh-cn/search/all_10.html
index 661ebc14..44a97e09 100644
--- a/zh-cn/search/all_10.html
+++ b/zh-cn/search/all_10.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_10.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_10.js b/zh-cn/search/all_10.js
index 1ea436d8..d66116f6 100644
--- a/zh-cn/search/all_10.js
+++ b/zh-cn/search/all_10.js
@@ -4,9 +4,8 @@ var searchData=
['schema',['Schema',['../md_doc_schema_8zh-cn.html',1,'']]],
['s',['s',['../structrapidjson_1_1_generic_string_ref.html#a001276ee57cbcbd3c14449045c71e994',1,'rapidjson::GenericStringRef']]],
['schemadocument',['SchemaDocument',['../namespacerapidjson.html#a52bbb5d64d1319495089e1713a0653cf',1,'rapidjson']]],
- ['schemavalidatingreader',['SchemaValidatingReader',['../classrapidjson_1_1_schema_validating_reader.html',1,'rapidjson']]],
- ['schemavalidatingreader',['SchemaValidatingReader',['../classrapidjson_1_1_schema_validating_reader.html#a1e2bcc66cad23376241cd91e8bf8c706',1,'rapidjson::SchemaValidatingReader']]],
- ['set',['Set',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a40c0bd4d6c535c57acbb5c2e656bea38',1,'rapidjson::ParseResult::Set()'],['../classrapidjson_1_1_generic_pointer.html#aecea7b5c4786f509e35c3917efa57fce',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#ac19f479c656ddd6a8bd9888a9fb27f96',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, const ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#a98454081fb9557b3d2285c4e89bd34f6',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, const Ch *value, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#a151f17dc1c655b9dc0a9a3cf06e6bdcb',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;value, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#ae9037fa1a22498e2a8c0f96f866f6288',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, T value, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#add58edd4f813645f8ffead6956967f96',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const '],['../classrapidjson_1_1_generic_pointer.html#a83ff802b8fcacd96e60ba1c2627a19f0',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;value) const '],['../classrapidjson_1_1_generic_pointer.html#a2ee50bcbfa76119094eef0284eeddfbe',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *value) const '],['../classrapidjson_1_1_generic_pointer.html#a9bd1c4076e732ffc1b4527ac5659264e',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;value) const '],['../classrapidjson_1_1_generic_pointer.html#af547130d348ca1805d882955a377bbe4',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T value) const ']]],
+ ['schemavalidatingreader',['SchemaValidatingReader',['../classrapidjson_1_1_schema_validating_reader.html',1,'rapidjson::SchemaValidatingReader&lt; parseFlags, InputStream, SourceEncoding, SchemaDocumentType, StackAllocator &gt;'],['../classrapidjson_1_1_schema_validating_reader.html#a1e2bcc66cad23376241cd91e8bf8c706',1,'rapidjson::SchemaValidatingReader::SchemaValidatingReader()']]],
+ ['set',['Set',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a40c0bd4d6c535c57acbb5c2e656bea38',1,'rapidjson::ParseResult::Set()'],['../classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#af2f51d68c82136086bed9593719abd1a',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, const ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#a4f0ef2b49a9561d570217249343d9335',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, const Ch *value, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#a0ae84f686e1af593b9445c2c502101b2',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;value, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#aa6df2ca27eecabbbad825a64a3d2bfe9',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, T value, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#a9371832d9089cca9b7f549172fd75cc8',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const'],['../classrapidjson_1_1_generic_pointer.html#ad7a692d4e08d578f7e24afb7c4004276',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;value) const'],['../classrapidjson_1_1_generic_pointer.html#afb649edbdbe09a6840b12d67c9f2501e',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *value) const'],['../classrapidjson_1_1_generic_pointer.html#a3a7ff4e0b700c2975cf455fef23226b4',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;value) const'],['../classrapidjson_1_1_generic_pointer.html#a8e5ed62ba30bb3f7a09a826746f70574',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T value) const']]],
['setarray',['SetArray',['../classrapidjson_1_1_generic_value.html#a25069c76d045b058e54835d8c467c789',1,'rapidjson::GenericValue']]],
['setbool',['SetBool',['../classrapidjson_1_1_generic_value.html#a5623c9039977ca0daf394e5c12f10c2d',1,'rapidjson::GenericValue']]],
['setformatoptions',['SetFormatOptions',['../classrapidjson_1_1_pretty_writer.html#acde6176577f29869e28a4f3c4a251090',1,'rapidjson::PrettyWriter']]],
@@ -14,7 +13,7 @@ var searchData=
['setmaxdecimalplaces',['SetMaxDecimalPlaces',['../classrapidjson_1_1_writer.html#aa7b6967dc237519e2a6d8b3939fb9634',1,'rapidjson::Writer']]],
['setobject',['SetObject',['../classrapidjson_1_1_generic_value.html#a7cb3cbaefe4fb99aaf9f155fb4ee039b',1,'rapidjson::GenericValue']]],
['setstring',['SetString',['../classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f',1,'rapidjson::GenericValue::SetString(const Ch *s, SizeType length)'],['../classrapidjson_1_1_generic_value.html#aabb538578a3c1e60c86cda32d062bc1c',1,'rapidjson::GenericValue::SetString(StringRefType s)'],['../classrapidjson_1_1_generic_value.html#ae6351043ec30d8a151b0a072cfbc46d5',1,'rapidjson::GenericValue::SetString(const Ch *s, SizeType length, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#ab4babf200cac2dacb412a3ea279ddf5b',1,'rapidjson::GenericValue::SetString(const Ch *s, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a9ba3d9d8a106d5b7e92fb49db897c21b',1,'rapidjson::GenericValue::SetString(StringRefType s, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a3e930bffb40a78e570e3deef461f0532',1,'rapidjson::GenericValue::SetString(const std::basic_string&lt; Ch &gt; &amp;s, Allocator &amp;allocator)']]],
- ['size',['Size',['../classrapidjson_1_1_memory_pool_allocator.html#aad83829efa77ad26a23f74d6cab3d781',1,'rapidjson::MemoryPoolAllocator::Size()'],['../classrapidjson_1_1_generic_value.html#a2e6e849cfb368a3fa708f8bcf1d56ec9',1,'rapidjson::GenericValue::Size()']]],
+ ['size',['Size',['../classrapidjson_1_1_memory_pool_allocator.html#aa08b368c54e7643fcd23ef55139b9b40',1,'rapidjson::MemoryPoolAllocator::Size()'],['../classrapidjson_1_1_generic_value.html#a799a8a2503989f486f3fc7a660266555',1,'rapidjson::GenericValue::Size()']]],
['size_5f',['size_',['../structrapidjson_1_1_memory_stream.html#a8c8437d59c32168a74226312d9e96ace',1,'rapidjson::MemoryStream']]],
['sizetype',['SizeType',['../namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84',1,'rapidjson']]],
['skipwhitespace',['SkipWhitespace',['../namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a',1,'rapidjson::SkipWhitespace(InputStream &amp;is)'],['../namespacerapidjson.html#a3caa6f393c9940e6525d5f1c21ed9ea2',1,'rapidjson::SkipWhitespace(InsituStringStream &amp;is)'],['../namespacerapidjson.html#a791735c27e073a70d720c2775ddf9568',1,'rapidjson::SkipWhitespace(StringStream &amp;is)']]],
@@ -25,10 +24,10 @@ var searchData=
['streamtraits_3c_20genericstringstream_3c_20encoding_20_3e_20_3e',['StreamTraits&lt; GenericStringStream&lt; Encoding &gt; &gt;',['../structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4.html',1,'rapidjson']]],
['string',['String',['../classrapidjson_1_1_pretty_writer.html#a363c2280393e27e19bceb8d015c2832c',1,'rapidjson::PrettyWriter::String()'],['../classrapidjson_1_1_writer.html#a849e2b675a2b868699a14d45c7396f24',1,'rapidjson::Writer::String()']]],
['stringbuffer',['StringBuffer',['../namespacerapidjson.html#ac0765ea91f41539645c4b78689d03f21',1,'rapidjson']]],
- ['stringify',['Stringify',['../classrapidjson_1_1_generic_pointer.html#ab9166f175517b1bff8c2219ea769e506',1,'rapidjson::GenericPointer']]],
- ['stringifyurifragment',['StringifyUriFragment',['../classrapidjson_1_1_generic_pointer.html#a40413907ac94e218f93625d3a5c8c454',1,'rapidjson::GenericPointer']]],
+ ['stringify',['Stringify',['../classrapidjson_1_1_generic_pointer.html#a73073ca3c9e47eba7c27c16151b269ac',1,'rapidjson::GenericPointer']]],
+ ['stringifyurifragment',['StringifyUriFragment',['../classrapidjson_1_1_generic_pointer.html#ae985c27c1d061b93ba4f8875cfa5f7b5',1,'rapidjson::GenericPointer']]],
['stringref',['StringRef',['../structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5',1,'rapidjson::GenericStringRef::StringRef(const CharType *str)'],['../structrapidjson_1_1_generic_string_ref.html#a578c51ab574a50a9c760b9da7c7562f2',1,'rapidjson::GenericStringRef::StringRef(const CharType *str, size_t length)'],['../structrapidjson_1_1_generic_string_ref.html#af94951529a5d51e8c4e6e770bb707c1f',1,'rapidjson::GenericStringRef::StringRef(const std::basic_string&lt; CharType &gt; &amp;str)'],['../namespacerapidjson.html#aa6b9fd9f6aa49405a574c362ba9af6b5',1,'rapidjson::StringRef(const CharType *str)'],['../namespacerapidjson.html#a578c51ab574a50a9c760b9da7c7562f2',1,'rapidjson::StringRef(const CharType *str, size_t length)'],['../namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f',1,'rapidjson::StringRef(const std::basic_string&lt; CharType &gt; &amp;str)']]],
['stringreftype',['StringRefType',['../classrapidjson_1_1_generic_value.html#a559eb9cea54364a35518b02f6d74f379',1,'rapidjson::GenericValue']]],
['stringstream',['StringStream',['../namespacerapidjson.html#a021f77051e9f85188fc2f71ff5a15ebc',1,'rapidjson']]],
- ['swap',['swap',['../classrapidjson_1_1_generic_value.html#a58ecce8a34fc029039b8079de246bdaa',1,'rapidjson::GenericValue::swap()'],['../classrapidjson_1_1_generic_document.html#a0d63efcc43758ac3aed77e868233369d',1,'rapidjson::GenericDocument::swap()'],['../classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db',1,'rapidjson::GenericValue::Swap()'],['../classrapidjson_1_1_generic_document.html#abf1cbab989b856f9d260787b2575750b',1,'rapidjson::GenericDocument::Swap()'],['../classrapidjson_1_1_generic_pointer.html#aaaa5b0ecdfa6af45e7dabc1987c87cac',1,'rapidjson::GenericPointer::Swap(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#ad9f28da15453d91c3669618a6f48bfcc',1,'rapidjson::GenericPointer::Swap(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const ']]]
+ ['swap',['swap',['../classrapidjson_1_1_generic_value.html#a58ecce8a34fc029039b8079de246bdaa',1,'rapidjson::GenericValue::swap()'],['../classrapidjson_1_1_generic_document.html#a0d63efcc43758ac3aed77e868233369d',1,'rapidjson::GenericDocument::swap()'],['../classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db',1,'rapidjson::GenericValue::Swap()'],['../classrapidjson_1_1_generic_document.html#abf1cbab989b856f9d260787b2575750b',1,'rapidjson::GenericDocument::Swap()'],['../classrapidjson_1_1_generic_pointer.html#a4690cd1d6c85168ebd2ce0afe186a4fa',1,'rapidjson::GenericPointer::Swap(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#a29d7ee42eb5646f829aeca6c6989555a',1,'rapidjson::GenericPointer::Swap(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const']]]
];
diff --git a/zh-cn/search/all_11.html b/zh-cn/search/all_11.html
index 823f5836..cd669fa0 100644
--- a/zh-cn/search/all_11.html
+++ b/zh-cn/search/all_11.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_11.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_12.html b/zh-cn/search/all_12.html
index 99f201c3..ba9781be 100644
--- a/zh-cn/search/all_12.html
+++ b/zh-cn/search/all_12.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_12.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_13.html b/zh-cn/search/all_13.html
index abf755d9..d15f7ebe 100644
--- a/zh-cn/search/all_13.html
+++ b/zh-cn/search/all_13.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_13.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_14.html b/zh-cn/search/all_14.html
index 88026575..d78c2879 100644
--- a/zh-cn/search/all_14.html
+++ b/zh-cn/search/all_14.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_14.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_14.js b/zh-cn/search/all_14.js
index 93526165..3108546e 100644
--- a/zh-cn/search/all_14.js
+++ b/zh-cn/search/all_14.js
@@ -1,6 +1,5 @@
var searchData=
[
['writeflag',['WriteFlag',['../namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19',1,'rapidjson']]],
- ['writer',['Writer',['../classrapidjson_1_1_writer.html',1,'rapidjson']]],
- ['writer',['Writer',['../classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2',1,'rapidjson::Writer']]]
+ ['writer',['Writer',['../classrapidjson_1_1_writer.html',1,'rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;'],['../classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2',1,'rapidjson::Writer::Writer()']]]
];
diff --git a/zh-cn/search/all_15.html b/zh-cn/search/all_15.html
index 9d2a0570..cf1c9422 100644
--- a/zh-cn/search/all_15.html
+++ b/zh-cn/search/all_15.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_15.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_16.html b/zh-cn/search/all_16.html
index 7646fb7d..95d157de 100644
--- a/zh-cn/search/all_16.html
+++ b/zh-cn/search/all_16.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_16.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_17.html b/zh-cn/search/all_17.html
index 168d44eb..8f78a07b 100644
--- a/zh-cn/search/all_17.html
+++ b/zh-cn/search/all_17.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_17.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_18.html b/zh-cn/search/all_18.html
index f7c1025e..4088f1f5 100644
--- a/zh-cn/search/all_18.html
+++ b/zh-cn/search/all_18.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_18.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_2.html b/zh-cn/search/all_2.html
index d95564d2..b68abf2a 100644
--- a/zh-cn/search/all_2.html
+++ b/zh-cn/search/all_2.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_2.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_2.js b/zh-cn/search/all_2.js
index 5cd50422..e3cbc62b 100644
--- a/zh-cn/search/all_2.js
+++ b/zh-cn/search/all_2.js
@@ -1,14 +1,14 @@
var searchData=
[
- ['capacity',['Capacity',['../classrapidjson_1_1_memory_pool_allocator.html#a7433671a5129289939c3a4f24d173b6e',1,'rapidjson::MemoryPoolAllocator::Capacity()'],['../classrapidjson_1_1_generic_value.html#a6cbb8a305fdc40beb83bee2b99ac5b59',1,'rapidjson::GenericValue::Capacity()']]],
+ ['capacity',['Capacity',['../classrapidjson_1_1_memory_pool_allocator.html#acdf0fc08cbcd940205a0a6289f1c58bd',1,'rapidjson::MemoryPoolAllocator::Capacity()'],['../classrapidjson_1_1_generic_value.html#a812e5c07f74a90566e7636330740eb6a',1,'rapidjson::GenericValue::Capacity()']]],
['ch',['Ch',['../structrapidjson_1_1_generic_string_ref.html#aa2a8eccae3d7eb14c30bc21afb7d6fba',1,'rapidjson::GenericStringRef::Ch()'],['../classrapidjson_1_1_generic_value.html#adcdbc7fa85a9a41b78966d7e0dcc2ac4',1,'rapidjson::GenericValue::Ch()'],['../classrapidjson_1_1_generic_document.html#a8367a827588dd91d02e21ef945bec9f5',1,'rapidjson::GenericDocument::Ch()'],['../classrapidjson_1_1_file_read_stream.html#a4a5f34875b40d22def206c9a09ecd929',1,'rapidjson::FileReadStream::Ch()'],['../classrapidjson_1_1_file_write_stream.html#afc606cc81f6c3709d81bf99b30566330',1,'rapidjson::FileWriteStream::Ch()'],['../classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7',1,'rapidjson::GenericPointer::Ch()'],['../classrapidjson_1_1_generic_reader.html#a0781d19e8c6bc044d9cc5f5d3dde287e',1,'rapidjson::GenericReader::Ch()']]],
['clear',['Clear',['../classrapidjson_1_1_memory_pool_allocator.html#aa050d52c62503ca6d6f66289ce83a18e',1,'rapidjson::MemoryPoolAllocator::Clear()'],['../classrapidjson_1_1_generic_value.html#aa56b69bac5423622eff6998ce4802106',1,'rapidjson::GenericValue::Clear()'],['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f',1,'rapidjson::ParseResult::Clear()']]],
- ['code',['Code',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a51cfd45c07e28aa4fdd78b55d86f0591',1,'rapidjson::ParseResult']]],
+ ['code',['Code',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a3c6a1f7b7dc21363a255eb10a3c0e00e',1,'rapidjson::ParseResult']]],
['constiterator',['ConstIterator',['../classrapidjson_1_1_generic_member_iterator.html#a61b9a9ba8a5917d90406532f104605cc',1,'rapidjson::GenericMemberIterator']]],
['constmemberiterator',['ConstMemberIterator',['../classrapidjson_1_1_generic_value.html#a6cd2b09795c48d2892bebc0ae350d51f',1,'rapidjson::GenericValue']]],
['constvalueiterator',['ConstValueIterator',['../classrapidjson_1_1_generic_value.html#a89a6588121742fc3f154b10b8f15f45f',1,'rapidjson::GenericValue']]],
['copyfrom',['CopyFrom',['../classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae',1,'rapidjson::GenericValue']]],
- ['create',['Create',['../classrapidjson_1_1_generic_pointer.html#a3733a6d6cf2a3a13f2a59b109b56d800',1,'rapidjson::GenericPointer::Create(ValueType &amp;root, typename ValueType::AllocatorType &amp;allocator, bool *alreadyExist=0) const '],['../classrapidjson_1_1_generic_pointer.html#a2b5a8fb688e6b6a1b077ce103df455c3',1,'rapidjson::GenericPointer::Create(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, bool *alreadyExist=0) const ']]],
+ ['create',['Create',['../classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856',1,'rapidjson::GenericPointer::Create(ValueType &amp;root, typename ValueType::AllocatorType &amp;allocator, bool *alreadyExist=0) const'],['../classrapidjson_1_1_generic_pointer.html#adc4bf5a3892f5626a8517f90c88e4b7f',1,'rapidjson::GenericPointer::Create(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, bool *alreadyExist=0) const']]],
['crtallocator',['CrtAllocator',['../classrapidjson_1_1_crt_allocator.html',1,'rapidjson']]],
['change_20log',['Change Log',['../md__c_h_a_n_g_e_l_o_g.html',1,'']]]
];
diff --git a/zh-cn/search/all_3.html b/zh-cn/search/all_3.html
index 08cda7d5..2839e866 100644
--- a/zh-cn/search/all_3.html
+++ b/zh-cn/search/all_3.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_3.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_4.html b/zh-cn/search/all_4.html
index fe3a772f..a5c8b896 100644
--- a/zh-cn/search/all_4.html
+++ b/zh-cn/search/all_4.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_4.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_4.js b/zh-cn/search/all_4.js
index 1df2f9c6..194a102f 100644
--- a/zh-cn/search/all_4.js
+++ b/zh-cn/search/all_4.js
@@ -1,14 +1,14 @@
var searchData=
[
- ['empty',['Empty',['../classrapidjson_1_1_generic_value.html#a08bf77a430b865404c57a93d8f0f6d3d',1,'rapidjson::GenericValue']]],
+ ['empty',['Empty',['../classrapidjson_1_1_generic_value.html#ad08a62c65a793ab1d0abe7eac03776fd',1,'rapidjson::GenericValue']]],
['encodedinputstream',['EncodedInputStream',['../classrapidjson_1_1_encoded_input_stream.html',1,'rapidjson']]],
['encodedinputstream_3c_20utf8_3c_3e_2c_20memorystream_20_3e',['EncodedInputStream&lt; UTF8&lt;&gt;, MemoryStream &gt;',['../classrapidjson_1_1_encoded_input_stream_3_01_u_t_f8_3_4_00_01_memory_stream_01_4.html',1,'rapidjson']]],
['encodedoutputstream',['EncodedOutputStream',['../classrapidjson_1_1_encoded_output_stream.html',1,'rapidjson']]],
['encoding',['Encoding',['../classrapidjson_1_1_encoding.html',1,'rapidjson']]],
['encodingtype',['EncodingType',['../classrapidjson_1_1_generic_value.html#a05906384808645a2e798d29a9b2d441d',1,'rapidjson::GenericValue::EncodingType()'],['../classrapidjson_1_1_generic_pointer.html#a399790c5fe8076d91a58c621c0c2a79e',1,'rapidjson::GenericPointer::EncodingType()']]],
- ['end',['End',['../classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109',1,'rapidjson::GenericValue::End()'],['../classrapidjson_1_1_generic_value.html#ad2d9786831d721cf8f1bf0dbdf86404a',1,'rapidjson::GenericValue::End() const ']]],
+ ['end',['End',['../classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109',1,'rapidjson::GenericValue::End()'],['../classrapidjson_1_1_generic_value.html#abdd6a3b703a03aada4c186a2365698e7',1,'rapidjson::GenericValue::End() const']]],
['end_5f',['end_',['../structrapidjson_1_1_memory_stream.html#a47f45298891e8156121b4017954fabe8',1,'rapidjson::MemoryStream']]],
- ['erase',['Erase',['../classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99',1,'rapidjson::GenericValue::Erase(ConstValueIterator pos)'],['../classrapidjson_1_1_generic_value.html#a916f443e02f9379d8fbde49a4d440f61',1,'rapidjson::GenericValue::Erase(ConstValueIterator first, ConstValueIterator last)'],['../classrapidjson_1_1_generic_pointer.html#aec10492caf6e853935d9a360bbe73713',1,'rapidjson::GenericPointer::Erase()']]],
+ ['erase',['Erase',['../classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99',1,'rapidjson::GenericValue::Erase(ConstValueIterator pos)'],['../classrapidjson_1_1_generic_value.html#a916f443e02f9379d8fbde49a4d440f61',1,'rapidjson::GenericValue::Erase(ConstValueIterator first, ConstValueIterator last)'],['../classrapidjson_1_1_generic_pointer.html#a923a1100c029a28e25894708bdce784c',1,'rapidjson::GenericPointer::Erase()']]],
['erasemember',['EraseMember',['../classrapidjson_1_1_generic_value.html#a163e60b101e5ae534597c050a6eba511',1,'rapidjson::GenericValue::EraseMember(ConstMemberIterator pos)'],['../classrapidjson_1_1_generic_value.html#a121e40b5944be337189eb63b98b7e6ce',1,'rapidjson::GenericValue::EraseMember(ConstMemberIterator first, ConstMemberIterator last)'],['../classrapidjson_1_1_generic_value.html#ac51a3b3046aaa12aa1d88ac876a28cec',1,'rapidjson::GenericValue::EraseMember(const Ch *name)']]],
['error_2eh',['error.h',['../error_8h.html',1,'']]]
];
diff --git a/zh-cn/search/all_5.html b/zh-cn/search/all_5.html
index 9c0be75d..53e5c542 100644
--- a/zh-cn/search/all_5.html
+++ b/zh-cn/search/all_5.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_5.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_5.js b/zh-cn/search/all_5.js
index 099a0f08..ce761ebf 100644
--- a/zh-cn/search/all_5.js
+++ b/zh-cn/search/all_5.js
@@ -1,7 +1,6 @@
var searchData=
[
- ['filereadstream',['FileReadStream',['../classrapidjson_1_1_file_read_stream.html',1,'rapidjson']]],
- ['filereadstream',['FileReadStream',['../classrapidjson_1_1_file_read_stream.html#a72b610ada5d86e8977a2bc1f2f4c0808',1,'rapidjson::FileReadStream']]],
+ ['filereadstream',['FileReadStream',['../classrapidjson_1_1_file_read_stream.html',1,'rapidjson::FileReadStream'],['../classrapidjson_1_1_file_read_stream.html#a72b610ada5d86e8977a2bc1f2f4c0808',1,'rapidjson::FileReadStream::FileReadStream()']]],
['filewritestream',['FileWriteStream',['../classrapidjson_1_1_file_write_stream.html',1,'rapidjson']]],
['findmember',['FindMember',['../classrapidjson_1_1_generic_value.html#ad22fdeac87ec6c370dd43075d3586811',1,'rapidjson::GenericValue::FindMember(const Ch *name)'],['../classrapidjson_1_1_generic_value.html#a8d75bf0c6c0fa4f8d340a4236e98539b',1,'rapidjson::GenericValue::FindMember(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name)'],['../classrapidjson_1_1_generic_value.html#a278b420ea75b0ec18d88d4c9e9199d62',1,'rapidjson::GenericValue::FindMember(const std::basic_string&lt; Ch &gt; &amp;name)']]],
['flush',['Flush',['../classrapidjson_1_1_writer.html#a72cefd18d176bc12a53adb3185c51ca7',1,'rapidjson::Writer']]],
diff --git a/zh-cn/search/all_6.html b/zh-cn/search/all_6.html
index ce26e0fc..c09529a1 100644
--- a/zh-cn/search/all_6.html
+++ b/zh-cn/search/all_6.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_6.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_6.js b/zh-cn/search/all_6.js
index 94aa761d..bdf867c0 100644
--- a/zh-cn/search/all_6.js
+++ b/zh-cn/search/all_6.js
@@ -1,49 +1,41 @@
var searchData=
[
['genericarray',['GenericArray',['../classrapidjson_1_1_generic_array.html',1,'rapidjson']]],
- ['genericdocument',['GenericDocument',['../classrapidjson_1_1_generic_document.html',1,'rapidjson']]],
- ['genericdocument',['GenericDocument',['../classrapidjson_1_1_generic_document.html#aa52c3016961f25ecd989d82839bce4e5',1,'rapidjson::GenericDocument::GenericDocument(Type type, Allocator *allocator=0, size_t stackCapacity=kDefaultStackCapacity, StackAllocator *stackAllocator=0)'],['../classrapidjson_1_1_generic_document.html#a82b27e7b228eb46a23f99720063ab4fb',1,'rapidjson::GenericDocument::GenericDocument(Allocator *allocator=0, size_t stackCapacity=kDefaultStackCapacity, StackAllocator *stackAllocator=0)']]],
+ ['genericdocument',['GenericDocument',['../classrapidjson_1_1_generic_document.html',1,'rapidjson::GenericDocument&lt; Encoding, Allocator, StackAllocator &gt;'],['../classrapidjson_1_1_generic_document.html#aa52c3016961f25ecd989d82839bce4e5',1,'rapidjson::GenericDocument::GenericDocument(Type type, Allocator *allocator=0, size_t stackCapacity=kDefaultStackCapacity, StackAllocator *stackAllocator=0)'],['../classrapidjson_1_1_generic_document.html#a82b27e7b228eb46a23f99720063ab4fb',1,'rapidjson::GenericDocument::GenericDocument(Allocator *allocator=0, size_t stackCapacity=kDefaultStackCapacity, StackAllocator *stackAllocator=0)']]],
['genericinsitustringstream',['GenericInsituStringStream',['../structrapidjson_1_1_generic_insitu_string_stream.html',1,'rapidjson']]],
['genericmember',['GenericMember',['../structrapidjson_1_1_generic_member.html',1,'rapidjson']]],
- ['genericmemberiterator',['GenericMemberIterator',['../classrapidjson_1_1_generic_member_iterator.html#ac920af483c9e31a6746c22acf0dffc50',1,'rapidjson::GenericMemberIterator::GenericMemberIterator()'],['../classrapidjson_1_1_generic_member_iterator.html#aa30ffef74b3f4978b403024d81b484e4',1,'rapidjson::GenericMemberIterator::GenericMemberIterator(const NonConstIterator &amp;it)']]],
- ['genericmemberiterator',['GenericMemberIterator',['../classrapidjson_1_1_generic_member_iterator.html',1,'rapidjson']]],
+ ['genericmemberiterator',['GenericMemberIterator',['../classrapidjson_1_1_generic_member_iterator.html',1,'rapidjson::GenericMemberIterator&lt; Const, Encoding, Allocator &gt;'],['../classrapidjson_1_1_generic_member_iterator.html#ac920af483c9e31a6746c22acf0dffc50',1,'rapidjson::GenericMemberIterator::GenericMemberIterator()'],['../classrapidjson_1_1_generic_member_iterator.html#aa30ffef74b3f4978b403024d81b484e4',1,'rapidjson::GenericMemberIterator::GenericMemberIterator(const NonConstIterator &amp;it)']]],
['genericmemorybuffer',['GenericMemoryBuffer',['../structrapidjson_1_1_generic_memory_buffer.html',1,'rapidjson']]],
['genericobject',['GenericObject',['../classrapidjson_1_1_generic_object.html',1,'rapidjson']]],
- ['genericpointer',['GenericPointer',['../classrapidjson_1_1_generic_pointer.html',1,'rapidjson']]],
- ['genericpointer',['GenericPointer',['../classrapidjson_1_1_generic_pointer.html#aa077ce171ea25cf501c12f2d5df7f248',1,'rapidjson::GenericPointer::GenericPointer(Allocator *allocator=0)'],['../classrapidjson_1_1_generic_pointer.html#a8f831aae14afc493a82b5fb6aa9c3c43',1,'rapidjson::GenericPointer::GenericPointer(const Ch *source, Allocator *allocator=0)'],['../classrapidjson_1_1_generic_pointer.html#aeefcd60e5ad37d80ec43f5315ae84809',1,'rapidjson::GenericPointer::GenericPointer(const std::basic_string&lt; Ch &gt; &amp;source, Allocator *allocator=0)'],['../classrapidjson_1_1_generic_pointer.html#a00ad17ea227d2556404df7cc64c6aeb5',1,'rapidjson::GenericPointer::GenericPointer(const Ch *source, size_t length, Allocator *allocator=0)'],['../classrapidjson_1_1_generic_pointer.html#a6df9f6a01d1b5945811055e1cf8aead6',1,'rapidjson::GenericPointer::GenericPointer(const Token *tokens, size_t tokenCount)'],['../classrapidjson_1_1_generic_pointer.html#a9f8119f2c714f78794854828789b832e',1,'rapidjson::GenericPointer::GenericPointer(const GenericPointer &amp;rhs, Allocator *allocator=0)']]],
- ['genericreader',['GenericReader',['../classrapidjson_1_1_generic_reader.html',1,'rapidjson']]],
- ['genericreader',['GenericReader',['../classrapidjson_1_1_generic_reader.html#a56ab1065ea75167aeacb4802425bf57f',1,'rapidjson::GenericReader']]],
- ['genericschemadocument',['GenericSchemaDocument',['../classrapidjson_1_1_generic_schema_document.html',1,'rapidjson']]],
- ['genericschemadocument',['GenericSchemaDocument',['../classrapidjson_1_1_generic_schema_document.html#ad200cc7bcb193c8568cdbda7b7fd0496',1,'rapidjson::GenericSchemaDocument']]],
- ['genericschemavalidator',['GenericSchemaValidator',['../classrapidjson_1_1_generic_schema_validator.html',1,'rapidjson']]],
- ['genericschemavalidator',['GenericSchemaValidator',['../classrapidjson_1_1_generic_schema_validator.html#acc07bd08b00195d84bb5b83f59c593d3',1,'rapidjson::GenericSchemaValidator::GenericSchemaValidator(const SchemaDocumentType &amp;schemaDocument, StateAllocator *allocator=0, size_t schemaStackCapacity=kDefaultSchemaStackCapacity, size_t documentStackCapacity=kDefaultDocumentStackCapacity)'],['../classrapidjson_1_1_generic_schema_validator.html#a0e1d8f19381bd53d77cc00a9a6dcd067',1,'rapidjson::GenericSchemaValidator::GenericSchemaValidator(const SchemaDocumentType &amp;schemaDocument, OutputHandler &amp;outputHandler, StateAllocator *allocator=0, size_t schemaStackCapacity=kDefaultSchemaStackCapacity, size_t documentStackCapacity=kDefaultDocumentStackCapacity)']]],
+ ['genericpointer',['GenericPointer',['../classrapidjson_1_1_generic_pointer.html',1,'rapidjson::GenericPointer&lt; ValueType, Allocator &gt;'],['../classrapidjson_1_1_generic_pointer.html#aa077ce171ea25cf501c12f2d5df7f248',1,'rapidjson::GenericPointer::GenericPointer(Allocator *allocator=0)'],['../classrapidjson_1_1_generic_pointer.html#a8f831aae14afc493a82b5fb6aa9c3c43',1,'rapidjson::GenericPointer::GenericPointer(const Ch *source, Allocator *allocator=0)'],['../classrapidjson_1_1_generic_pointer.html#aeefcd60e5ad37d80ec43f5315ae84809',1,'rapidjson::GenericPointer::GenericPointer(const std::basic_string&lt; Ch &gt; &amp;source, Allocator *allocator=0)'],['../classrapidjson_1_1_generic_pointer.html#a00ad17ea227d2556404df7cc64c6aeb5',1,'rapidjson::GenericPointer::GenericPointer(const Ch *source, size_t length, Allocator *allocator=0)'],['../classrapidjson_1_1_generic_pointer.html#a6df9f6a01d1b5945811055e1cf8aead6',1,'rapidjson::GenericPointer::GenericPointer(const Token *tokens, size_t tokenCount)'],['../classrapidjson_1_1_generic_pointer.html#a9f8119f2c714f78794854828789b832e',1,'rapidjson::GenericPointer::GenericPointer(const GenericPointer &amp;rhs, Allocator *allocator=0)']]],
+ ['genericreader',['GenericReader',['../classrapidjson_1_1_generic_reader.html',1,'rapidjson::GenericReader&lt; SourceEncoding, TargetEncoding, StackAllocator &gt;'],['../classrapidjson_1_1_generic_reader.html#a56ab1065ea75167aeacb4802425bf57f',1,'rapidjson::GenericReader::GenericReader()']]],
+ ['genericschemadocument',['GenericSchemaDocument',['../classrapidjson_1_1_generic_schema_document.html',1,'rapidjson::GenericSchemaDocument&lt; ValueT, Allocator &gt;'],['../classrapidjson_1_1_generic_schema_document.html#ad200cc7bcb193c8568cdbda7b7fd0496',1,'rapidjson::GenericSchemaDocument::GenericSchemaDocument()']]],
+ ['genericschemavalidator',['GenericSchemaValidator',['../classrapidjson_1_1_generic_schema_validator.html',1,'rapidjson::GenericSchemaValidator&lt; SchemaDocumentType, OutputHandler, StateAllocator &gt;'],['../classrapidjson_1_1_generic_schema_validator.html#acc07bd08b00195d84bb5b83f59c593d3',1,'rapidjson::GenericSchemaValidator::GenericSchemaValidator(const SchemaDocumentType &amp;schemaDocument, StateAllocator *allocator=0, size_t schemaStackCapacity=kDefaultSchemaStackCapacity, size_t documentStackCapacity=kDefaultDocumentStackCapacity)'],['../classrapidjson_1_1_generic_schema_validator.html#a0e1d8f19381bd53d77cc00a9a6dcd067',1,'rapidjson::GenericSchemaValidator::GenericSchemaValidator(const SchemaDocumentType &amp;schemaDocument, OutputHandler &amp;outputHandler, StateAllocator *allocator=0, size_t schemaStackCapacity=kDefaultSchemaStackCapacity, size_t documentStackCapacity=kDefaultDocumentStackCapacity)']]],
['genericstringbuffer',['GenericStringBuffer',['../classrapidjson_1_1_generic_string_buffer.html',1,'rapidjson']]],
- ['genericstringref',['GenericStringRef',['../structrapidjson_1_1_generic_string_ref.html#acd4d5ebac2b610ce647356aa52998002',1,'rapidjson::GenericStringRef::GenericStringRef(const CharType(&amp;str)[N]) RAPIDJSON_NOEXCEPT'],['../structrapidjson_1_1_generic_string_ref.html#a29cf407c6aa2313f13dff78d6ce02687',1,'rapidjson::GenericStringRef::GenericStringRef(const CharType *str)'],['../structrapidjson_1_1_generic_string_ref.html#ad9eb120a58cee500ff3bd5706779c4e4',1,'rapidjson::GenericStringRef::GenericStringRef(const CharType *str, SizeType len)']]],
- ['genericstringref',['GenericStringRef',['../structrapidjson_1_1_generic_string_ref.html',1,'rapidjson']]],
+ ['genericstringref',['GenericStringRef',['../structrapidjson_1_1_generic_string_ref.html',1,'rapidjson::GenericStringRef&lt; CharType &gt;'],['../structrapidjson_1_1_generic_string_ref.html#acd4d5ebac2b610ce647356aa52998002',1,'rapidjson::GenericStringRef::GenericStringRef(const CharType(&amp;str)[N]) RAPIDJSON_NOEXCEPT'],['../structrapidjson_1_1_generic_string_ref.html#a29cf407c6aa2313f13dff78d6ce02687',1,'rapidjson::GenericStringRef::GenericStringRef(const CharType *str)'],['../structrapidjson_1_1_generic_string_ref.html#ad9eb120a58cee500ff3bd5706779c4e4',1,'rapidjson::GenericStringRef::GenericStringRef(const CharType *str, SizeType len)']]],
['genericstringstream',['GenericStringStream',['../structrapidjson_1_1_generic_string_stream.html',1,'rapidjson']]],
- ['genericvalue',['GenericValue',['../classrapidjson_1_1_generic_value.html#ad1f8199e65662e0d52a13a1577d4e4a5',1,'rapidjson::GenericValue::GenericValue() RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a646b6d4d3d98799a0926d96ffa127a58',1,'rapidjson::GenericValue::GenericValue(Type type) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#adca019775f68f012643781cd2c2515ac',1,'rapidjson::GenericValue::GenericValue(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs, Allocator &amp;allocator, bool copyConstStrings=false)'],['../classrapidjson_1_1_generic_value.html#ab933ad7ff8c9d08f73cebaecb700dbe9',1,'rapidjson::GenericValue::GenericValue(bool b) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#abba0c9ccfd90726f916c36013a2e9e19',1,'rapidjson::GenericValue::GenericValue(int i) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a4a8060a42b7953a2981ad892180ca5a6',1,'rapidjson::GenericValue::GenericValue(unsigned u) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#acd4ae9a8dba4498d1d7cce6667529bb8',1,'rapidjson::GenericValue::GenericValue(int64_t i64) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a1f125e735577aae64c0306345de45563',1,'rapidjson::GenericValue::GenericValue(uint64_t u64) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a71b9e2ec1f7bf9e2f034126ca7b4945a',1,'rapidjson::GenericValue::GenericValue(double d) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#afe94e5e86a5b1a3fb605a9f8422f048b',1,'rapidjson::GenericValue::GenericValue(float f) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a51e93a4fb57f77a39767acb076bf43c1',1,'rapidjson::GenericValue::GenericValue(const Ch *s, SizeType length) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a65bfc3073fa80ee5eba8e985abe2f941',1,'rapidjson::GenericValue::GenericValue(StringRefType s) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#ad9553bb9ccbfd19547c473a95405a8b2',1,'rapidjson::GenericValue::GenericValue(const Ch *s, SizeType length, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a83ba61e8a5170c2e172fd60ebc11016f',1,'rapidjson::GenericValue::GenericValue(const Ch *s, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a852788b35257762cd8d6c4bf5c5d77bc',1,'rapidjson::GenericValue::GenericValue(const std::basic_string&lt; Ch &gt; &amp;s, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a77b0f41557b3c34b57a180698312c4a8',1,'rapidjson::GenericValue::GenericValue(Array a) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a893da1069660536fd3943a0149206a6e',1,'rapidjson::GenericValue::GenericValue(Object o) RAPIDJSON_NOEXCEPT']]],
- ['genericvalue',['GenericValue',['../classrapidjson_1_1_generic_value.html',1,'rapidjson']]],
+ ['genericvalue',['GenericValue',['../classrapidjson_1_1_generic_value.html',1,'rapidjson::GenericValue&lt; Encoding, Allocator &gt;'],['../classrapidjson_1_1_generic_value.html#ad1f8199e65662e0d52a13a1577d4e4a5',1,'rapidjson::GenericValue::GenericValue() RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a646b6d4d3d98799a0926d96ffa127a58',1,'rapidjson::GenericValue::GenericValue(Type type) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#adca019775f68f012643781cd2c2515ac',1,'rapidjson::GenericValue::GenericValue(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs, Allocator &amp;allocator, bool copyConstStrings=false)'],['../classrapidjson_1_1_generic_value.html#ab933ad7ff8c9d08f73cebaecb700dbe9',1,'rapidjson::GenericValue::GenericValue(bool b) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#abba0c9ccfd90726f916c36013a2e9e19',1,'rapidjson::GenericValue::GenericValue(int i) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a4a8060a42b7953a2981ad892180ca5a6',1,'rapidjson::GenericValue::GenericValue(unsigned u) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#acd4ae9a8dba4498d1d7cce6667529bb8',1,'rapidjson::GenericValue::GenericValue(int64_t i64) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a1f125e735577aae64c0306345de45563',1,'rapidjson::GenericValue::GenericValue(uint64_t u64) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a71b9e2ec1f7bf9e2f034126ca7b4945a',1,'rapidjson::GenericValue::GenericValue(double d) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#afe94e5e86a5b1a3fb605a9f8422f048b',1,'rapidjson::GenericValue::GenericValue(float f) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a51e93a4fb57f77a39767acb076bf43c1',1,'rapidjson::GenericValue::GenericValue(const Ch *s, SizeType length) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a65bfc3073fa80ee5eba8e985abe2f941',1,'rapidjson::GenericValue::GenericValue(StringRefType s) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#ad9553bb9ccbfd19547c473a95405a8b2',1,'rapidjson::GenericValue::GenericValue(const Ch *s, SizeType length, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a83ba61e8a5170c2e172fd60ebc11016f',1,'rapidjson::GenericValue::GenericValue(const Ch *s, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a852788b35257762cd8d6c4bf5c5d77bc',1,'rapidjson::GenericValue::GenericValue(const std::basic_string&lt; Ch &gt; &amp;s, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a77b0f41557b3c34b57a180698312c4a8',1,'rapidjson::GenericValue::GenericValue(Array a) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a893da1069660536fd3943a0149206a6e',1,'rapidjson::GenericValue::GenericValue(Object o) RAPIDJSON_NOEXCEPT']]],
['genericvalue_3c_20rapidjson_3a_3aencoding_2c_20rapidjson_3a_3aallocator_20_3e',['GenericValue&lt; rapidjson::Encoding, rapidjson::Allocator &gt;',['../classrapidjson_1_1_generic_value.html',1,'rapidjson']]],
- ['get',['Get',['../classrapidjson_1_1_generic_pointer.html#a309d819cc14e9d2183df4807bc99fea5',1,'rapidjson::GenericPointer::Get(ValueType &amp;root, size_t *unresolvedTokenIndex=0) const '],['../classrapidjson_1_1_generic_pointer.html#ab6982b814e41d8f64bea7d5faab93b1f',1,'rapidjson::GenericPointer::Get(const ValueType &amp;root, size_t *unresolvedTokenIndex=0) const ']]],
+ ['get',['Get',['../classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd',1,'rapidjson::GenericPointer::Get(ValueType &amp;root, size_t *unresolvedTokenIndex=0) const'],['../classrapidjson_1_1_generic_pointer.html#aac2171a0ac38298b2d0ae063351ec176',1,'rapidjson::GenericPointer::Get(const ValueType &amp;root, size_t *unresolvedTokenIndex=0) const']]],
['getallocator',['GetAllocator',['../classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f',1,'rapidjson::GenericDocument::GetAllocator()'],['../classrapidjson_1_1_generic_pointer.html#acdac4ea8e57920194827be4afb942d97',1,'rapidjson::GenericPointer::GetAllocator()']]],
- ['getbool',['GetBool',['../classrapidjson_1_1_generic_value.html#a69d917b47799f63fc588bf294fa71483',1,'rapidjson::GenericValue']]],
- ['getdouble',['GetDouble',['../classrapidjson_1_1_generic_value.html#aa059dee923cc0446752e321ff70936a6',1,'rapidjson::GenericValue']]],
- ['geterroroffset',['GetErrorOffset',['../classrapidjson_1_1_generic_document.html#ab791c05727d83f6834a1b916783dbc06',1,'rapidjson::GenericDocument::GetErrorOffset()'],['../classrapidjson_1_1_generic_reader.html#ab907a36c410e96154c99797a6a0ce16d',1,'rapidjson::GenericReader::GetErrorOffset()']]],
- ['getfloat',['GetFloat',['../classrapidjson_1_1_generic_value.html#a0eda9834f241e5c5b23161a7ee33758b',1,'rapidjson::GenericValue']]],
- ['getinvaliddocumentpointer',['GetInvalidDocumentPointer',['../classrapidjson_1_1_generic_schema_validator.html#af66e4a41d71c89edfabb176af7839f04',1,'rapidjson::GenericSchemaValidator']]],
- ['getinvalidschemakeyword',['GetInvalidSchemaKeyword',['../classrapidjson_1_1_generic_schema_validator.html#a914628c4d69faea91ada1dee61d25d59',1,'rapidjson::GenericSchemaValidator']]],
- ['getinvalidschemapointer',['GetInvalidSchemaPointer',['../classrapidjson_1_1_generic_schema_validator.html#a8381f8d4dca195449f086ffbd25bb9b7',1,'rapidjson::GenericSchemaValidator']]],
- ['getlength',['GetLength',['../classrapidjson_1_1_generic_string_buffer.html#aefe471aaf1430189bf40ddb3fb7ebca3',1,'rapidjson::GenericStringBuffer']]],
- ['getparseerror',['GetParseError',['../classrapidjson_1_1_generic_document.html#ad97e64c123ec1e07ea62ab0a9ce80c00',1,'rapidjson::GenericDocument']]],
+ ['getbool',['GetBool',['../classrapidjson_1_1_generic_value.html#a78d80b935babeedbfa71914a8fe5baa7',1,'rapidjson::GenericValue']]],
+ ['getdouble',['GetDouble',['../classrapidjson_1_1_generic_value.html#aa27d086d265f0ce447b15b15f0a2ed6e',1,'rapidjson::GenericValue']]],
+ ['geterroroffset',['GetErrorOffset',['../classrapidjson_1_1_generic_document.html#af532179ca5ad5434a5e8af63f5da4c5f',1,'rapidjson::GenericDocument::GetErrorOffset()'],['../classrapidjson_1_1_generic_reader.html#ab50019e0a715320f83b7610b83dcef8f',1,'rapidjson::GenericReader::GetErrorOffset()']]],
+ ['getfloat',['GetFloat',['../classrapidjson_1_1_generic_value.html#a573712808dd5d8814c103cf55fd761b4',1,'rapidjson::GenericValue']]],
+ ['getinvaliddocumentpointer',['GetInvalidDocumentPointer',['../classrapidjson_1_1_generic_schema_validator.html#a60dfb4a89593c8d3ca4c89a6202feb52',1,'rapidjson::GenericSchemaValidator']]],
+ ['getinvalidschemakeyword',['GetInvalidSchemaKeyword',['../classrapidjson_1_1_generic_schema_validator.html#a03bcd5497a574cffbd066d0aec2b5585',1,'rapidjson::GenericSchemaValidator']]],
+ ['getinvalidschemapointer',['GetInvalidSchemaPointer',['../classrapidjson_1_1_generic_schema_validator.html#a3238efb9d9144c2d6577362d8dc5f61b',1,'rapidjson::GenericSchemaValidator']]],
+ ['getlength',['GetLength',['../classrapidjson_1_1_generic_string_buffer.html#a0a114be213152d570a2d9fde7a28fe11',1,'rapidjson::GenericStringBuffer']]],
+ ['getparseerror',['GetParseError',['../classrapidjson_1_1_generic_document.html#ab94c280c079a6837a24951cb4d8f337b',1,'rapidjson::GenericDocument']]],
['getparseerror_5fen',['GetParseError_En',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79',1,'rapidjson']]],
- ['getparseerrorcode',['GetParseErrorCode',['../classrapidjson_1_1_generic_pointer.html#ac817b123619422f03c44a46978d9fbd0',1,'rapidjson::GenericPointer::GetParseErrorCode()'],['../classrapidjson_1_1_generic_reader.html#a40fd326bad7d7033f096b549cbf159db',1,'rapidjson::GenericReader::GetParseErrorCode()']]],
- ['getparseerrorfunc',['GetParseErrorFunc',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga4e77e464ec8abe1111ee581fc2cb00de',1,'rapidjson']]],
- ['getparseerroroffset',['GetParseErrorOffset',['../classrapidjson_1_1_generic_pointer.html#adc01f1be5f05127f849a2bf10a97e89b',1,'rapidjson::GenericPointer']]],
- ['getroot',['GetRoot',['../classrapidjson_1_1_generic_schema_document.html#af64ea17654ab0f1a91e382d422f91daf',1,'rapidjson::GenericSchemaDocument']]],
- ['getsize',['GetSize',['../classrapidjson_1_1_generic_string_buffer.html#a629cedcefa12a8057fad525df8548a88',1,'rapidjson::GenericStringBuffer']]],
- ['getstackcapacity',['GetStackCapacity',['../classrapidjson_1_1_generic_document.html#ac785c064649dea6cfa67207b6bda748e',1,'rapidjson::GenericDocument']]],
- ['getstringlength',['GetStringLength',['../classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8',1,'rapidjson::GenericValue']]],
- ['gettokencount',['GetTokenCount',['../classrapidjson_1_1_generic_pointer.html#a2949cb104effdf323781ae70ce469ed9',1,'rapidjson::GenericPointer']]],
- ['gettokens',['GetTokens',['../classrapidjson_1_1_generic_pointer.html#a0ee51e6c996d4665b398dae5dbf00bc4',1,'rapidjson::GenericPointer']]],
- ['getwithdefault',['GetWithDefault',['../classrapidjson_1_1_generic_pointer.html#a6c615761374ddce265d542f4b4b476b1',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, const ValueType &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#ae9f3e27a210a0974892c1260c2e4a39f',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, const Ch *defaultValue, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#ab914090864d0ded21a376867c33ad865',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#a3bb1e63a2c0aa61a9e95d6d65c4c3ffd',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, T defaultValue, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#af89e3e8f87bb833d4eb4bb2fd4074431',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;defaultValue) const '],['../classrapidjson_1_1_generic_pointer.html#ad96e263ba29209259fd4abe63d7f4458',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *defaultValue) const '],['../classrapidjson_1_1_generic_pointer.html#a5e9e740bec7f5a1703088171e0b2557b',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;defaultValue) const '],['../classrapidjson_1_1_generic_pointer.html#a573a35dd96aacffe209e1442720f447a',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T defaultValue) const ']]]
+ ['getparseerrorcode',['GetParseErrorCode',['../classrapidjson_1_1_generic_pointer.html#af649a48d77aa856cddaa748ad6b0d6ac',1,'rapidjson::GenericPointer::GetParseErrorCode()'],['../classrapidjson_1_1_generic_reader.html#a042c621cf745c5ed3a6f5ff9418dd05e',1,'rapidjson::GenericReader::GetParseErrorCode()']]],
+ ['getparseerrorfunc',['GetParseErrorFunc',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gac1bee7fdafeba5a85c27943fcde12882',1,'rapidjson']]],
+ ['getparseerroroffset',['GetParseErrorOffset',['../classrapidjson_1_1_generic_pointer.html#a75caef2a047c56466f0b599bdda882c9',1,'rapidjson::GenericPointer']]],
+ ['getroot',['GetRoot',['../classrapidjson_1_1_generic_schema_document.html#a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a',1,'rapidjson::GenericSchemaDocument']]],
+ ['getsize',['GetSize',['../classrapidjson_1_1_generic_string_buffer.html#a9d830ec37a4ba0fba3b523c90aaf8b42',1,'rapidjson::GenericStringBuffer']]],
+ ['getstackcapacity',['GetStackCapacity',['../classrapidjson_1_1_generic_document.html#a153e5a065ca9660673974f9df203be4b',1,'rapidjson::GenericDocument']]],
+ ['getstringlength',['GetStringLength',['../classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea',1,'rapidjson::GenericValue']]],
+ ['gettokencount',['GetTokenCount',['../classrapidjson_1_1_generic_pointer.html#a791e40c10682b9db0adf2b6e0b8b3d78',1,'rapidjson::GenericPointer']]],
+ ['gettokens',['GetTokens',['../classrapidjson_1_1_generic_pointer.html#ac07c300d43f04dad9caa0cb209cb2853',1,'rapidjson::GenericPointer']]],
+ ['getwithdefault',['GetWithDefault',['../classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, const ValueType &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#abdc025b8391b271f1134a7ba7039c27f',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, const Ch *defaultValue, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#a2ac51ee7af5b9d7628140ae8501edcf4',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#a16833ef8a38386e6c310d602426b45f0',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, T defaultValue, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#a07fa31c03c96e260f234087882dce408',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;defaultValue) const'],['../classrapidjson_1_1_generic_pointer.html#aaa4e92344cc07e98adb5b9f5b93927b8',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *defaultValue) const'],['../classrapidjson_1_1_generic_pointer.html#af19e2313004885cfa9c45f50b30b32e2',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;defaultValue) const'],['../classrapidjson_1_1_generic_pointer.html#a1f428c25a3a905683e616d76c2d9efcf',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T defaultValue) const']]]
];
diff --git a/zh-cn/search/all_7.html b/zh-cn/search/all_7.html
index 4737e5ef..ff9387b0 100644
--- a/zh-cn/search/all_7.html
+++ b/zh-cn/search/all_7.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_7.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_7.js b/zh-cn/search/all_7.js
index e8483641..fd72ef6f 100644
--- a/zh-cn/search/all_7.js
+++ b/zh-cn/search/all_7.js
@@ -1,7 +1,7 @@
var searchData=
[
['handler',['Handler',['../classrapidjson_1_1_handler.html',1,'rapidjson']]],
- ['hasmember',['HasMember',['../classrapidjson_1_1_generic_value.html#af17b9b6ba6a9fb4e02d2dced5aa0ee0c',1,'rapidjson::GenericValue::HasMember(const Ch *name) const '],['../classrapidjson_1_1_generic_value.html#afb1942ef13566484e1806689834a053f',1,'rapidjson::GenericValue::HasMember(const std::basic_string&lt; Ch &gt; &amp;name) const '],['../classrapidjson_1_1_generic_value.html#a548e6c8a99c525573d933933610977cb',1,'rapidjson::GenericValue::HasMember(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const ']]],
- ['hasparseerror',['HasParseError',['../classrapidjson_1_1_generic_document.html#a2ab17089bd6249bf2a7959d56d35cb68',1,'rapidjson::GenericDocument::HasParseError()'],['../classrapidjson_1_1_generic_reader.html#a46ded2951b8fa395ed421989d66e71fe',1,'rapidjson::GenericReader::HasParseError()']]],
+ ['hasmember',['HasMember',['../classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b',1,'rapidjson::GenericValue::HasMember(const Ch *name) const'],['../classrapidjson_1_1_generic_value.html#a9b3b30acbe60d7a5b105afa05c1ddfb0',1,'rapidjson::GenericValue::HasMember(const std::basic_string&lt; Ch &gt; &amp;name) const'],['../classrapidjson_1_1_generic_value.html#a794129b8adffb97d123306a0c0ccaf71',1,'rapidjson::GenericValue::HasMember(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const']]],
+ ['hasparseerror',['HasParseError',['../classrapidjson_1_1_generic_document.html#a7607bb42b51547e44bfd4cab35d8f20e',1,'rapidjson::GenericDocument::HasParseError()'],['../classrapidjson_1_1_generic_reader.html#ac42370c3497a0e2b6973110f298e3a59',1,'rapidjson::GenericReader::HasParseError()']]],
['head_5f',['head_',['../structrapidjson_1_1_generic_string_stream.html#a2556705b0a0fd6393862efe6db025b32',1,'rapidjson::GenericStringStream']]]
];
diff --git a/zh-cn/search/all_8.html b/zh-cn/search/all_8.html
index 5109bfc7..78ea1189 100644
--- a/zh-cn/search/all_8.html
+++ b/zh-cn/search/all_8.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_8.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_8.js b/zh-cn/search/all_8.js
index 7889fa90..be4f4b40 100644
--- a/zh-cn/search/all_8.js
+++ b/zh-cn/search/all_8.js
@@ -6,10 +6,10 @@ var searchData=
['index',['index',['../structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d',1,'rapidjson::GenericPointer::Token']]],
['insitustringstream',['InsituStringStream',['../namespacerapidjson.html#a64e957c8d9d7cd15b193ffc31410038e',1,'rapidjson']]],
['iremoteschemadocumentprovider',['IRemoteSchemaDocumentProvider',['../namespacerapidjson.html#af91eb8eea47b79d75b23e29fa9c0abb5',1,'rapidjson']]],
- ['is',['Is',['../classrapidjson_1_1_generic_value.html#ade8d1ca2b8e8afa02cde46e26866440b',1,'rapidjson::GenericValue']]],
- ['iscomplete',['IsComplete',['../classrapidjson_1_1_writer.html#a0cde8037db76f887cd9c557fd68630c5',1,'rapidjson::Writer']]],
- ['iserror',['IsError',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a5ab5548c7a7776f4da20eac09fe57c1b',1,'rapidjson::ParseResult']]],
- ['isvalid',['IsValid',['../classrapidjson_1_1_generic_pointer.html#a112f364fe9aeabba2a72e83bcbeb8fda',1,'rapidjson::GenericPointer::IsValid()'],['../classrapidjson_1_1_generic_schema_validator.html#ab520a4ee6df3e23ffb948c8d5ae7bf38',1,'rapidjson::GenericSchemaValidator::IsValid()']]],
+ ['is',['Is',['../classrapidjson_1_1_generic_value.html#acc6b1791cca8daef18521918136264b7',1,'rapidjson::GenericValue']]],
+ ['iscomplete',['IsComplete',['../classrapidjson_1_1_writer.html#a190d964d3e62155e87153e858a0b04da',1,'rapidjson::Writer']]],
+ ['iserror',['IsError',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ab6d87c6ce9c849f35e902fbe23f485c4',1,'rapidjson::ParseResult']]],
+ ['isvalid',['IsValid',['../classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c',1,'rapidjson::GenericPointer::IsValid()'],['../classrapidjson_1_1_generic_schema_validator.html#ad32a9ad31dbb588edaaf038ab053275b',1,'rapidjson::GenericSchemaValidator::IsValid()']]],
['iterativeparsecomplete',['IterativeParseComplete',['../classrapidjson_1_1_generic_reader.html#a60fa11ff60f71b3a466bbd962f35dfdb',1,'rapidjson::GenericReader']]],
['iterativeparseinit',['IterativeParseInit',['../classrapidjson_1_1_generic_reader.html#a90403a2c55dadf82fd2bb9d4c66b3280',1,'rapidjson::GenericReader']]],
['iterativeparsenext',['IterativeParseNext',['../classrapidjson_1_1_generic_reader.html#abac6611bec17167de50fede5cd5194ca',1,'rapidjson::GenericReader']]],
diff --git a/zh-cn/search/all_9.html b/zh-cn/search/all_9.html
index de10f764..ab1ed563 100644
--- a/zh-cn/search/all_9.html
+++ b/zh-cn/search/all_9.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_9.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_a.html b/zh-cn/search/all_a.html
index ec01bb15..e51c18dd 100644
--- a/zh-cn/search/all_a.html
+++ b/zh-cn/search/all_a.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_a.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_b.html b/zh-cn/search/all_b.html
index 9018b78d..19ad5f82 100644
--- a/zh-cn/search/all_b.html
+++ b/zh-cn/search/all_b.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_b.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_b.js b/zh-cn/search/all_b.js
index 2891bd6e..26d51a84 100644
--- a/zh-cn/search/all_b.js
+++ b/zh-cn/search/all_b.js
@@ -2,12 +2,11 @@ var searchData=
[
['malloc',['Malloc',['../classrapidjson_1_1_memory_pool_allocator.html#a208c29e04b1d748bfe068444b7044344',1,'rapidjson::MemoryPoolAllocator']]],
['member',['Member',['../classrapidjson_1_1_generic_value.html#a0220ddebe2f023fa75b643a50e90e559',1,'rapidjson::GenericValue']]],
- ['memberbegin',['MemberBegin',['../classrapidjson_1_1_generic_value.html#a469c0cc3e72f846757fb64fa52fafee5',1,'rapidjson::GenericValue::MemberBegin() const '],['../classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a',1,'rapidjson::GenericValue::MemberBegin()']]],
- ['membercount',['MemberCount',['../classrapidjson_1_1_generic_value.html#acf5019b9002ebfd66a1191d19e986c7b',1,'rapidjson::GenericValue']]],
- ['memberend',['MemberEnd',['../classrapidjson_1_1_generic_value.html#a88d2c5b861cd8a6a14976456dfbc1f64',1,'rapidjson::GenericValue::MemberEnd() const '],['../classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee',1,'rapidjson::GenericValue::MemberEnd()']]],
+ ['memberbegin',['MemberBegin',['../classrapidjson_1_1_generic_value.html#ae89a77887aa3eb1f1f913727cbff6786',1,'rapidjson::GenericValue::MemberBegin() const'],['../classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a',1,'rapidjson::GenericValue::MemberBegin()']]],
+ ['membercount',['MemberCount',['../classrapidjson_1_1_generic_value.html#a8b7e47c57a20d0de0cd19eee799ebd88',1,'rapidjson::GenericValue']]],
+ ['memberend',['MemberEnd',['../classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c',1,'rapidjson::GenericValue::MemberEnd() const'],['../classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee',1,'rapidjson::GenericValue::MemberEnd()']]],
['memberiterator',['MemberIterator',['../classrapidjson_1_1_generic_value.html#aca5596987335016c1a7c2a9467baf80b',1,'rapidjson::GenericValue']]],
- ['memorypoolallocator',['MemoryPoolAllocator',['../classrapidjson_1_1_memory_pool_allocator.html#a59d783f4feba17dcd35d9f25fcbc09f4',1,'rapidjson::MemoryPoolAllocator::MemoryPoolAllocator(size_t chunkSize=kDefaultChunkCapacity, BaseAllocator *baseAllocator=0)'],['../classrapidjson_1_1_memory_pool_allocator.html#abcc572bdb6902c9d69711540db5098a7',1,'rapidjson::MemoryPoolAllocator::MemoryPoolAllocator(void *buffer, size_t size, size_t chunkSize=kDefaultChunkCapacity, BaseAllocator *baseAllocator=0)']]],
- ['memorypoolallocator',['MemoryPoolAllocator',['../classrapidjson_1_1_memory_pool_allocator.html',1,'rapidjson']]],
+ ['memorypoolallocator',['MemoryPoolAllocator',['../classrapidjson_1_1_memory_pool_allocator.html',1,'rapidjson::MemoryPoolAllocator&lt; BaseAllocator &gt;'],['../classrapidjson_1_1_memory_pool_allocator.html#a59d783f4feba17dcd35d9f25fcbc09f4',1,'rapidjson::MemoryPoolAllocator::MemoryPoolAllocator(size_t chunkSize=kDefaultChunkCapacity, BaseAllocator *baseAllocator=0)'],['../classrapidjson_1_1_memory_pool_allocator.html#abcc572bdb6902c9d69711540db5098a7',1,'rapidjson::MemoryPoolAllocator::MemoryPoolAllocator(void *buffer, size_t size, size_t chunkSize=kDefaultChunkCapacity, BaseAllocator *baseAllocator=0)']]],
['memorystream',['MemoryStream',['../structrapidjson_1_1_memory_stream.html',1,'rapidjson']]],
['move',['Move',['../classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b',1,'rapidjson::GenericValue']]]
];
diff --git a/zh-cn/search/all_c.html b/zh-cn/search/all_c.html
index 498da16c..d4abeea2 100644
--- a/zh-cn/search/all_c.html
+++ b/zh-cn/search/all_c.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_c.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_d.html b/zh-cn/search/all_d.html
index e0dd3ef4..6b5ee709 100644
--- a/zh-cn/search/all_d.html
+++ b/zh-cn/search/all_d.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_d.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_d.js b/zh-cn/search/all_d.js
index 061ae897..1170c1ac 100644
--- a/zh-cn/search/all_d.js
+++ b/zh-cn/search/all_d.js
@@ -1,13 +1,13 @@
var searchData=
[
- ['objectempty',['ObjectEmpty',['../classrapidjson_1_1_generic_value.html#a1f28a345c9b9c93c76abf695669e4378',1,'rapidjson::GenericValue']]],
- ['offset',['Offset',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a056e5792c1554fbc05b5f1cc168d82ae',1,'rapidjson::ParseResult']]],
- ['operator_20booleantype',['operator BooleanType',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a1743018526769d9b5b782fd7cffc9838',1,'rapidjson::ParseResult']]],
- ['operator_20const_20ch_20_2a',['operator const Ch *',['../structrapidjson_1_1_generic_string_ref.html#af535787e3593802222f7b3f3096beff0',1,'rapidjson::GenericStringRef']]],
- ['operator_20parseresult',['operator ParseResult',['../classrapidjson_1_1_generic_document.html#a0de48f0c884423b6fcfabc2e93942968',1,'rapidjson::GenericDocument']]],
- ['operator_21_3d',['operator!=',['../classrapidjson_1_1_generic_value.html#a0cb232adce79932c499c5f04cbc8dc54',1,'rapidjson::GenericValue::operator!=(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const '],['../classrapidjson_1_1_generic_value.html#aff1711092a1278d36b8152f5520a686e',1,'rapidjson::GenericValue::operator!=(const Ch *rhs) const '],['../classrapidjson_1_1_generic_value.html#ad7e6ef7acbbfef57485b9f2dee620dbf',1,'rapidjson::GenericValue::operator!=(const T &amp;rhs) const '],['../classrapidjson_1_1_generic_value.html#ae08898bef949f217f0e5d28e19f05992',1,'rapidjson::GenericValue::operator!=()'],['../classrapidjson_1_1_generic_pointer.html#a3e74f5b9c9fd3307f6ebac61a7131524',1,'rapidjson::GenericPointer::operator!=()']]],
- ['operator_2d',['operator-',['../classrapidjson_1_1_generic_member_iterator.html#a6d7cfaef258b0774da1b642907d81060',1,'rapidjson::GenericMemberIterator']]],
+ ['objectempty',['ObjectEmpty',['../classrapidjson_1_1_generic_value.html#a1f4835373e05abae52b91e1c6b7ec92c',1,'rapidjson::GenericValue']]],
+ ['offset',['Offset',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a85036788b0cfd1c676900de6f8260bd6',1,'rapidjson::ParseResult']]],
+ ['operator_20booleantype',['operator BooleanType',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#af0936ace1dc9b674e9afb75ec6145b32',1,'rapidjson::ParseResult']]],
+ ['operator_20const_20ch_20_2a',['operator const Ch *',['../structrapidjson_1_1_generic_string_ref.html#a86d30bb594a41619a7a5ba6c8dcce2bd',1,'rapidjson::GenericStringRef']]],
+ ['operator_20parseresult',['operator ParseResult',['../classrapidjson_1_1_generic_document.html#a36d19989c9221b27036675455516a974',1,'rapidjson::GenericDocument']]],
+ ['operator_21_3d',['operator!=',['../classrapidjson_1_1_generic_value.html#ad5bf5afd53f21f370f917041b3be4bfc',1,'rapidjson::GenericValue::operator!=(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const'],['../classrapidjson_1_1_generic_value.html#a6443cf5323fb46c4c51cd15a365da49b',1,'rapidjson::GenericValue::operator!=(const Ch *rhs) const'],['../classrapidjson_1_1_generic_value.html#ae6fe0576ff0336f6e2b09fe32f3ff809',1,'rapidjson::GenericValue::operator!=(const T &amp;rhs) const'],['../classrapidjson_1_1_generic_value.html#ae08898bef949f217f0e5d28e19f05992',1,'rapidjson::GenericValue::operator!=()'],['../classrapidjson_1_1_generic_pointer.html#a8ca73989b4f3ffa5154a229f95f1e0c9',1,'rapidjson::GenericPointer::operator!=()']]],
+ ['operator_2d',['operator-',['../classrapidjson_1_1_generic_member_iterator.html#abfad2c34a97f82178cbf9464e958e2c2',1,'rapidjson::GenericMemberIterator']]],
['operator_3d',['operator=',['../classrapidjson_1_1_generic_value.html#ae8bcedd951f50b69786aaaa1828e9fac',1,'rapidjson::GenericValue::operator=(GenericValue &amp;rhs) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#aecc9d0a6aafe31f4fdf9f6e75e5f089c',1,'rapidjson::GenericValue::operator=(StringRefType str) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#ab7446da62fdc61d6d987d508cdb6ac13',1,'rapidjson::GenericValue::operator=(T value)'],['../classrapidjson_1_1_generic_pointer.html#a23194bb6ce6c07c78981344fe80ac3a6',1,'rapidjson::GenericPointer::operator=()']]],
- ['operator_3d_3d',['operator==',['../classrapidjson_1_1_generic_value.html#afbdbc9cbc3b59feb5a28d5bfee97dbb3',1,'rapidjson::GenericValue::operator==(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const '],['../classrapidjson_1_1_generic_value.html#a7bed9035dd1beeabe6f47e870874e793',1,'rapidjson::GenericValue::operator==(const Ch *rhs) const '],['../classrapidjson_1_1_generic_value.html#a6f7f7c66d8f8c08e496ae831ba114126',1,'rapidjson::GenericValue::operator==(const std::basic_string&lt; Ch &gt; &amp;rhs) const '],['../classrapidjson_1_1_generic_value.html#ae6c196979931e8283bcbd499133169ed',1,'rapidjson::GenericValue::operator==(const T &amp;rhs) const '],['../classrapidjson_1_1_generic_value.html#aaa465706fda1e1ef4513ce877e0b4b69',1,'rapidjson::GenericValue::operator==()'],['../classrapidjson_1_1_generic_pointer.html#af0d009a8322a7b61f63a9539ca8bddaf',1,'rapidjson::GenericPointer::operator==()']]],
+ ['operator_3d_3d',['operator==',['../classrapidjson_1_1_generic_value.html#ab4e5285102bb686f39bca2855a17a181',1,'rapidjson::GenericValue::operator==(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const'],['../classrapidjson_1_1_generic_value.html#af03ef6020e188bbfceb018da5cd8becc',1,'rapidjson::GenericValue::operator==(const Ch *rhs) const'],['../classrapidjson_1_1_generic_value.html#af089d2bee0386ca7504ff4fab466c87f',1,'rapidjson::GenericValue::operator==(const std::basic_string&lt; Ch &gt; &amp;rhs) const'],['../classrapidjson_1_1_generic_value.html#aaddbbbb35cd783f209f889cf8dea9570',1,'rapidjson::GenericValue::operator==(const T &amp;rhs) const'],['../classrapidjson_1_1_generic_value.html#aaa465706fda1e1ef4513ce877e0b4b69',1,'rapidjson::GenericValue::operator==()'],['../classrapidjson_1_1_generic_pointer.html#a3bb15fa5592f2bfad6f2c9af7940b952',1,'rapidjson::GenericPointer::operator==()']]],
['operator_5b_5d',['operator[]',['../classrapidjson_1_1_generic_value.html#a8ec7fc7f221306925c7674dccbe02b07',1,'rapidjson::GenericValue::operator[](T *name)'],['../classrapidjson_1_1_generic_value.html#aa62b57746c96ce3d264b2fe178196062',1,'rapidjson::GenericValue::operator[](const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name)'],['../classrapidjson_1_1_generic_value.html#a4d337239ee3e2096462f6a36b9ab0811',1,'rapidjson::GenericValue::operator[](const std::basic_string&lt; Ch &gt; &amp;name)'],['../classrapidjson_1_1_generic_value.html#adc312de070d03a63e6c692c9c61db156',1,'rapidjson::GenericValue::operator[](SizeType index)']]]
];
diff --git a/zh-cn/search/all_e.html b/zh-cn/search/all_e.html
index 0d197a9e..d33536a8 100644
--- a/zh-cn/search/all_e.html
+++ b/zh-cn/search/all_e.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_e.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/all_e.js b/zh-cn/search/all_e.js
index b868188f..95e98d0d 100644
--- a/zh-cn/search/all_e.js
+++ b/zh-cn/search/all_e.js
@@ -5,16 +5,14 @@ var searchData=
['parseerrorcode',['ParseErrorCode',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga7d3acf640886b1f2552dc8c4cd6dea60',1,'rapidjson']]],
['parseflag',['ParseFlag',['../namespacerapidjson.html#a81379eb4e94a0386d71d15fda882ebc9',1,'rapidjson']]],
['parseinsitu',['ParseInsitu',['../classrapidjson_1_1_generic_document.html#a7ba626bf84eb45a9bca0b7723bf47f3f',1,'rapidjson::GenericDocument::ParseInsitu(Ch *str)'],['../classrapidjson_1_1_generic_document.html#af061c039a990c2970dc31e5626149367',1,'rapidjson::GenericDocument::ParseInsitu(Ch *str)']]],
- ['parseresult',['ParseResult',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0f03679d5fa2736d9e351541e767fac1',1,'rapidjson::ParseResult::ParseResult()'],['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ad15710045513f13ba526753c4a2cb59b',1,'rapidjson::ParseResult::ParseResult(ParseErrorCode code, size_t offset)']]],
- ['parseresult',['ParseResult',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result',1,'rapidjson']]],
+ ['parseresult',['ParseResult',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#structrapidjson_1_1_parse_result',1,'rapidjson::ParseResult'],['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a0f03679d5fa2736d9e351541e767fac1',1,'rapidjson::ParseResult::ParseResult()'],['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ad15710045513f13ba526753c4a2cb59b',1,'rapidjson::ParseResult::ParseResult(ParseErrorCode code, size_t offset)']]],
['parsestream',['ParseStream',['../classrapidjson_1_1_generic_document.html#a3ae97682cf04685c7db9d89ebc399b85',1,'rapidjson::GenericDocument::ParseStream(InputStream &amp;is)'],['../classrapidjson_1_1_generic_document.html#ae4ee7d86b8c906c83dbe15e57eb6ac6a',1,'rapidjson::GenericDocument::ParseStream(InputStream &amp;is)'],['../classrapidjson_1_1_generic_document.html#acf96a3c7fd61486d049c701b1fe5d414',1,'rapidjson::GenericDocument::ParseStream(InputStream &amp;is)']]],
['pointer',['Pointer',['../classrapidjson_1_1_generic_member_iterator.html#a17955e32a06f667c672b270e6a4d2195',1,'rapidjson::GenericMemberIterator::Pointer()'],['../namespacerapidjson.html#a080910f74d2f5046e6724280159cf374',1,'rapidjson::Pointer()']]],
['pointerparseerrorcode',['PointerParseErrorCode',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gade540ee4cc2a416c23b8ee2c12393c7b',1,'rapidjson']]],
['popback',['PopBack',['../classrapidjson_1_1_generic_value.html#ae475f31fb851138ced40e2ff6cb43ca6',1,'rapidjson::GenericValue']]],
['populate',['Populate',['../classrapidjson_1_1_generic_document.html#a63e18887979da500ece6f0bd10d29b64',1,'rapidjson::GenericDocument']]],
['prettyformatoptions',['PrettyFormatOptions',['../namespacerapidjson.html#a084b31753ef2edefdeca8a5374eccc4b',1,'rapidjson']]],
- ['prettywriter',['PrettyWriter',['../classrapidjson_1_1_pretty_writer.html',1,'rapidjson']]],
- ['prettywriter',['PrettyWriter',['../classrapidjson_1_1_pretty_writer.html#a688d7ebf5c8015e423b7a970afc8e0a0',1,'rapidjson::PrettyWriter']]],
+ ['prettywriter',['PrettyWriter',['../classrapidjson_1_1_pretty_writer.html',1,'rapidjson::PrettyWriter&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;'],['../classrapidjson_1_1_pretty_writer.html#a688d7ebf5c8015e423b7a970afc8e0a0',1,'rapidjson::PrettyWriter::PrettyWriter()']]],
['pushback',['PushBack',['../classrapidjson_1_1_generic_value.html#a0ec9f34bef5890241d4bc882b73b1db4',1,'rapidjson::GenericValue::PushBack(GenericValue &amp;value, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a41946915cb219a684f6ffc9341efee22',1,'rapidjson::GenericValue::PushBack(StringRefType value, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#aa59273e0adfe2a9d0e6ac29d2537d9ed',1,'rapidjson::GenericValue::PushBack(T value, Allocator &amp;allocator)']]],
['putn',['PutN',['../namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a',1,'rapidjson::PutN(FileWriteStream &amp;stream, char c, size_t n)'],['../namespacerapidjson.html#aba27b0c8dcf724aa2b288a24fda0811b',1,'rapidjson::PutN(MemoryBuffer &amp;memoryBuffer, char c, size_t n)'],['../namespacerapidjson.html#a1d49d2cab617858b53a1db23b1759f43',1,'rapidjson::PutN(Stream &amp;stream, Ch c, size_t n)'],['../namespacerapidjson.html#a9d43be9c033dc49738b713fe6fbafecf',1,'rapidjson::PutN(GenericStringBuffer&lt; UTF8&lt;&gt; &gt; &amp;stream, char c, size_t n)']]],
['putreserve',['PutReserve',['../namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740',1,'rapidjson']]],
diff --git a/zh-cn/search/all_f.html b/zh-cn/search/all_f.html
index c513fe3f..da0fbf51 100644
--- a/zh-cn/search/all_f.html
+++ b/zh-cn/search/all_f.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_f.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/classes_0.html b/zh-cn/search/classes_0.html
index 5f789c03..20d2bc4a 100644
--- a/zh-cn/search/classes_0.html
+++ b/zh-cn/search/classes_0.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_0.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/classes_1.html b/zh-cn/search/classes_1.html
index 8dc24199..25c7111e 100644
--- a/zh-cn/search/classes_1.html
+++ b/zh-cn/search/classes_1.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_1.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/classes_2.html b/zh-cn/search/classes_2.html
index e6b6657a..ffbe4bc0 100644
--- a/zh-cn/search/classes_2.html
+++ b/zh-cn/search/classes_2.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_2.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/classes_3.html b/zh-cn/search/classes_3.html
index 9e552bed..e8bf126a 100644
--- a/zh-cn/search/classes_3.html
+++ b/zh-cn/search/classes_3.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_3.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/classes_4.html b/zh-cn/search/classes_4.html
index 7e9392ac..1ef472bd 100644
--- a/zh-cn/search/classes_4.html
+++ b/zh-cn/search/classes_4.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_4.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/classes_5.html b/zh-cn/search/classes_5.html
index 6af48374..dc6638ea 100644
--- a/zh-cn/search/classes_5.html
+++ b/zh-cn/search/classes_5.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_5.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/classes_6.html b/zh-cn/search/classes_6.html
index 1a77d097..434e4df4 100644
--- a/zh-cn/search/classes_6.html
+++ b/zh-cn/search/classes_6.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_6.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/classes_7.html b/zh-cn/search/classes_7.html
index 813a0e45..9d81a4ed 100644
--- a/zh-cn/search/classes_7.html
+++ b/zh-cn/search/classes_7.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_7.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/classes_8.html b/zh-cn/search/classes_8.html
index 78413532..c44d9856 100644
--- a/zh-cn/search/classes_8.html
+++ b/zh-cn/search/classes_8.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_8.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/classes_9.html b/zh-cn/search/classes_9.html
index b26e7b48..ad7543b6 100644
--- a/zh-cn/search/classes_9.html
+++ b/zh-cn/search/classes_9.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_9.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/classes_a.html b/zh-cn/search/classes_a.html
index ce24389d..91cb74bb 100644
--- a/zh-cn/search/classes_a.html
+++ b/zh-cn/search/classes_a.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_a.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/classes_b.html b/zh-cn/search/classes_b.html
index 0cf845e8..9fe91ca2 100644
--- a/zh-cn/search/classes_b.html
+++ b/zh-cn/search/classes_b.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_b.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/classes_c.html b/zh-cn/search/classes_c.html
index aeaece21..2bc5f2a1 100644
--- a/zh-cn/search/classes_c.html
+++ b/zh-cn/search/classes_c.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_c.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/classes_d.html b/zh-cn/search/classes_d.html
index 5cdd9584..6c59c992 100644
--- a/zh-cn/search/classes_d.html
+++ b/zh-cn/search/classes_d.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_d.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/classes_e.html b/zh-cn/search/classes_e.html
index 18d933c3..cc6c2022 100644
--- a/zh-cn/search/classes_e.html
+++ b/zh-cn/search/classes_e.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="classes_e.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/defines_0.html b/zh-cn/search/defines_0.html
index 1f50b1c1..cc74eab7 100644
--- a/zh-cn/search/defines_0.html
+++ b/zh-cn/search/defines_0.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="defines_0.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/enums_0.html b/zh-cn/search/enums_0.html
index a2fff0ab..3c5338e4 100644
--- a/zh-cn/search/enums_0.html
+++ b/zh-cn/search/enums_0.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="enums_0.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/enums_1.html b/zh-cn/search/enums_1.html
index 888b5b28..71382f36 100644
--- a/zh-cn/search/enums_1.html
+++ b/zh-cn/search/enums_1.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="enums_1.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/enums_2.html b/zh-cn/search/enums_2.html
index 6db0c8e2..b84445bd 100644
--- a/zh-cn/search/enums_2.html
+++ b/zh-cn/search/enums_2.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="enums_2.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/enums_3.html b/zh-cn/search/enums_3.html
index 86a9f171..59117816 100644
--- a/zh-cn/search/enums_3.html
+++ b/zh-cn/search/enums_3.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="enums_3.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/enumvalues_0.html b/zh-cn/search/enumvalues_0.html
index 06ac7d5a..3bec9083 100644
--- a/zh-cn/search/enumvalues_0.html
+++ b/zh-cn/search/enumvalues_0.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="enumvalues_0.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/files_0.html b/zh-cn/search/files_0.html
index 82d61f4e..24d63c81 100644
--- a/zh-cn/search/files_0.html
+++ b/zh-cn/search/files_0.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="files_0.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/files_1.html b/zh-cn/search/files_1.html
index fae0a306..7859059c 100644
--- a/zh-cn/search/files_1.html
+++ b/zh-cn/search/files_1.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="files_1.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/files_2.html b/zh-cn/search/files_2.html
index 9579940f..ee139ea3 100644
--- a/zh-cn/search/files_2.html
+++ b/zh-cn/search/files_2.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="files_2.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_0.html b/zh-cn/search/functions_0.html
index 8e968cbd..a643e534 100644
--- a/zh-cn/search/functions_0.html
+++ b/zh-cn/search/functions_0.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_0.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_0.js b/zh-cn/search/functions_0.js
index e56bcfc8..1ab6629a 100644
--- a/zh-cn/search/functions_0.js
+++ b/zh-cn/search/functions_0.js
@@ -1,8 +1,8 @@
var searchData=
[
- ['accept',['Accept',['../classrapidjson_1_1_generic_value.html#aeef0506cd1f8d703db4833c503f0657e',1,'rapidjson::GenericValue']]],
+ ['accept',['Accept',['../classrapidjson_1_1_generic_value.html#ad3ebfa73796f4db4836ec47c2261700c',1,'rapidjson::GenericValue']]],
['addmember',['AddMember',['../classrapidjson_1_1_generic_value.html#ab018d734d189532b27943bc45776ba68',1,'rapidjson::GenericValue::AddMember(GenericValue &amp;name, GenericValue &amp;value, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#ad290f179591025e871bedbbac89ac276',1,'rapidjson::GenericValue::AddMember(GenericValue &amp;name, StringRefType value, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a578e35f3350717db2aae534969b2346a',1,'rapidjson::GenericValue::AddMember(GenericValue &amp;name, std::basic_string&lt; Ch &gt; &amp;value, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#ab705cb56bfb380005704cda2d0edf168',1,'rapidjson::GenericValue::AddMember(GenericValue &amp;name, T value, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a85dc131bdad8077ce970d580d333d15a',1,'rapidjson::GenericValue::AddMember(StringRefType name, GenericValue &amp;value, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a2ccb4736d0f2ec07f06f630d8fe54f8d',1,'rapidjson::GenericValue::AddMember(StringRefType name, StringRefType value, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#aa70ada250f3a0c5aeee0ce138d136b06',1,'rapidjson::GenericValue::AddMember(StringRefType name, T value, Allocator &amp;allocator)']]],
- ['append',['Append',['../classrapidjson_1_1_generic_pointer.html#a64f7bb98da73976b59597cdde96a40b8',1,'rapidjson::GenericPointer::Append(const Token &amp;token, Allocator *allocator=0) const '],['../classrapidjson_1_1_generic_pointer.html#a96e6f4c01632be39df82917f833710bc',1,'rapidjson::GenericPointer::Append(const Ch *name, SizeType length, Allocator *allocator=0) const '],['../classrapidjson_1_1_generic_pointer.html#af2e3630aeaebb6628c2b1694a0595452',1,'rapidjson::GenericPointer::Append(T *name, Allocator *allocator=0) const '],['../classrapidjson_1_1_generic_pointer.html#ac4b35d8051c17a8c9408f71ae8541d19',1,'rapidjson::GenericPointer::Append(const std::basic_string&lt; Ch &gt; &amp;name, Allocator *allocator=0) const '],['../classrapidjson_1_1_generic_pointer.html#ad0bd4948e56dce4b75b39f744050322c',1,'rapidjson::GenericPointer::Append(SizeType index, Allocator *allocator=0) const '],['../classrapidjson_1_1_generic_pointer.html#a3baa23b919dc9ba9421b8e6fbf3e0605',1,'rapidjson::GenericPointer::Append(const ValueType &amp;token, Allocator *allocator=0) const ']]],
+ ['append',['Append',['../classrapidjson_1_1_generic_pointer.html#a7cb5eda2af1722e52efa591c4103ebec',1,'rapidjson::GenericPointer::Append(const Token &amp;token, Allocator *allocator=0) const'],['../classrapidjson_1_1_generic_pointer.html#a30f4eac82e9fded60dead3f7d1cb3941',1,'rapidjson::GenericPointer::Append(const Ch *name, SizeType length, Allocator *allocator=0) const'],['../classrapidjson_1_1_generic_pointer.html#a033a099aaa6b36df2d5171bdc593e98e',1,'rapidjson::GenericPointer::Append(T *name, Allocator *allocator=0) const'],['../classrapidjson_1_1_generic_pointer.html#a18494d59f0317c037fa3bd037e436cec',1,'rapidjson::GenericPointer::Append(const std::basic_string&lt; Ch &gt; &amp;name, Allocator *allocator=0) const'],['../classrapidjson_1_1_generic_pointer.html#a4aadec8f0efe9a7ac42ac4906a5f676d',1,'rapidjson::GenericPointer::Append(SizeType index, Allocator *allocator=0) const'],['../classrapidjson_1_1_generic_pointer.html#a618808f066fb1104d36f012cced3b27a',1,'rapidjson::GenericPointer::Append(const ValueType &amp;token, Allocator *allocator=0) const']]],
['autoutfinputstream',['AutoUTFInputStream',['../classrapidjson_1_1_auto_u_t_f_input_stream.html#a5c9f041a3b32bf15bc9be888a8731d35',1,'rapidjson::AutoUTFInputStream']]],
['autoutfoutputstream',['AutoUTFOutputStream',['../classrapidjson_1_1_auto_u_t_f_output_stream.html#a39c828ee4c5b052df7338ec7fda1a17d',1,'rapidjson::AutoUTFOutputStream']]]
];
diff --git a/zh-cn/search/functions_1.html b/zh-cn/search/functions_1.html
index 870fae9a..a5e89da2 100644
--- a/zh-cn/search/functions_1.html
+++ b/zh-cn/search/functions_1.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_1.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_1.js b/zh-cn/search/functions_1.js
index b5d79670..62230315 100644
--- a/zh-cn/search/functions_1.js
+++ b/zh-cn/search/functions_1.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['begin',['Begin',['../classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603',1,'rapidjson::GenericValue::Begin()'],['../classrapidjson_1_1_generic_value.html#abc8945d3411c6ce583d322753ce028e1',1,'rapidjson::GenericValue::Begin() const ']]]
+ ['begin',['Begin',['../classrapidjson_1_1_generic_value.html#a8d1040c479d89edb261db86400ebe603',1,'rapidjson::GenericValue::Begin()'],['../classrapidjson_1_1_generic_value.html#a07d947971c59c9ce884b3c5205c9238f',1,'rapidjson::GenericValue::Begin() const']]]
];
diff --git a/zh-cn/search/functions_10.html b/zh-cn/search/functions_10.html
index 7eb35cdd..924447ba 100644
--- a/zh-cn/search/functions_10.html
+++ b/zh-cn/search/functions_10.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_10.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_11.html b/zh-cn/search/functions_11.html
index 8f4c00b5..d3c36b26 100644
--- a/zh-cn/search/functions_11.html
+++ b/zh-cn/search/functions_11.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_11.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_2.html b/zh-cn/search/functions_2.html
index 1a8a12a5..4011bb8f 100644
--- a/zh-cn/search/functions_2.html
+++ b/zh-cn/search/functions_2.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_2.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_2.js b/zh-cn/search/functions_2.js
index c73407b8..1d71b0e7 100644
--- a/zh-cn/search/functions_2.js
+++ b/zh-cn/search/functions_2.js
@@ -1,8 +1,8 @@
var searchData=
[
- ['capacity',['Capacity',['../classrapidjson_1_1_memory_pool_allocator.html#a7433671a5129289939c3a4f24d173b6e',1,'rapidjson::MemoryPoolAllocator::Capacity()'],['../classrapidjson_1_1_generic_value.html#a6cbb8a305fdc40beb83bee2b99ac5b59',1,'rapidjson::GenericValue::Capacity()']]],
+ ['capacity',['Capacity',['../classrapidjson_1_1_memory_pool_allocator.html#acdf0fc08cbcd940205a0a6289f1c58bd',1,'rapidjson::MemoryPoolAllocator::Capacity()'],['../classrapidjson_1_1_generic_value.html#a812e5c07f74a90566e7636330740eb6a',1,'rapidjson::GenericValue::Capacity()']]],
['clear',['Clear',['../classrapidjson_1_1_memory_pool_allocator.html#aa050d52c62503ca6d6f66289ce83a18e',1,'rapidjson::MemoryPoolAllocator::Clear()'],['../classrapidjson_1_1_generic_value.html#aa56b69bac5423622eff6998ce4802106',1,'rapidjson::GenericValue::Clear()'],['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a17c9f7f81675283393222658d613000f',1,'rapidjson::ParseResult::Clear()']]],
- ['code',['Code',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a51cfd45c07e28aa4fdd78b55d86f0591',1,'rapidjson::ParseResult']]],
+ ['code',['Code',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a3c6a1f7b7dc21363a255eb10a3c0e00e',1,'rapidjson::ParseResult']]],
['copyfrom',['CopyFrom',['../classrapidjson_1_1_generic_value.html#ad9399a2a69444c44a9db2f63c3aa3eae',1,'rapidjson::GenericValue']]],
- ['create',['Create',['../classrapidjson_1_1_generic_pointer.html#a3733a6d6cf2a3a13f2a59b109b56d800',1,'rapidjson::GenericPointer::Create(ValueType &amp;root, typename ValueType::AllocatorType &amp;allocator, bool *alreadyExist=0) const '],['../classrapidjson_1_1_generic_pointer.html#a2b5a8fb688e6b6a1b077ce103df455c3',1,'rapidjson::GenericPointer::Create(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, bool *alreadyExist=0) const ']]]
+ ['create',['Create',['../classrapidjson_1_1_generic_pointer.html#ad0b5b67c57572e81689762094ac8c856',1,'rapidjson::GenericPointer::Create(ValueType &amp;root, typename ValueType::AllocatorType &amp;allocator, bool *alreadyExist=0) const'],['../classrapidjson_1_1_generic_pointer.html#adc4bf5a3892f5626a8517f90c88e4b7f',1,'rapidjson::GenericPointer::Create(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, bool *alreadyExist=0) const']]]
];
diff --git a/zh-cn/search/functions_3.html b/zh-cn/search/functions_3.html
index 8be2be10..36983b78 100644
--- a/zh-cn/search/functions_3.html
+++ b/zh-cn/search/functions_3.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_3.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_4.html b/zh-cn/search/functions_4.html
index da4a5fdb..d825f8ee 100644
--- a/zh-cn/search/functions_4.html
+++ b/zh-cn/search/functions_4.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_4.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_4.js b/zh-cn/search/functions_4.js
index e1b69c04..fb291c2e 100644
--- a/zh-cn/search/functions_4.js
+++ b/zh-cn/search/functions_4.js
@@ -1,7 +1,7 @@
var searchData=
[
- ['empty',['Empty',['../classrapidjson_1_1_generic_value.html#a08bf77a430b865404c57a93d8f0f6d3d',1,'rapidjson::GenericValue']]],
- ['end',['End',['../classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109',1,'rapidjson::GenericValue::End()'],['../classrapidjson_1_1_generic_value.html#ad2d9786831d721cf8f1bf0dbdf86404a',1,'rapidjson::GenericValue::End() const ']]],
- ['erase',['Erase',['../classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99',1,'rapidjson::GenericValue::Erase(ConstValueIterator pos)'],['../classrapidjson_1_1_generic_value.html#a916f443e02f9379d8fbde49a4d440f61',1,'rapidjson::GenericValue::Erase(ConstValueIterator first, ConstValueIterator last)'],['../classrapidjson_1_1_generic_pointer.html#aec10492caf6e853935d9a360bbe73713',1,'rapidjson::GenericPointer::Erase()']]],
+ ['empty',['Empty',['../classrapidjson_1_1_generic_value.html#ad08a62c65a793ab1d0abe7eac03776fd',1,'rapidjson::GenericValue']]],
+ ['end',['End',['../classrapidjson_1_1_generic_value.html#aaf58b9337ccc0cdf16aa9634c4645109',1,'rapidjson::GenericValue::End()'],['../classrapidjson_1_1_generic_value.html#abdd6a3b703a03aada4c186a2365698e7',1,'rapidjson::GenericValue::End() const']]],
+ ['erase',['Erase',['../classrapidjson_1_1_generic_value.html#a68ba73eeda7b9429ca05267065d3cc99',1,'rapidjson::GenericValue::Erase(ConstValueIterator pos)'],['../classrapidjson_1_1_generic_value.html#a916f443e02f9379d8fbde49a4d440f61',1,'rapidjson::GenericValue::Erase(ConstValueIterator first, ConstValueIterator last)'],['../classrapidjson_1_1_generic_pointer.html#a923a1100c029a28e25894708bdce784c',1,'rapidjson::GenericPointer::Erase()']]],
['erasemember',['EraseMember',['../classrapidjson_1_1_generic_value.html#a163e60b101e5ae534597c050a6eba511',1,'rapidjson::GenericValue::EraseMember(ConstMemberIterator pos)'],['../classrapidjson_1_1_generic_value.html#a121e40b5944be337189eb63b98b7e6ce',1,'rapidjson::GenericValue::EraseMember(ConstMemberIterator first, ConstMemberIterator last)'],['../classrapidjson_1_1_generic_value.html#ac51a3b3046aaa12aa1d88ac876a28cec',1,'rapidjson::GenericValue::EraseMember(const Ch *name)']]]
];
diff --git a/zh-cn/search/functions_5.html b/zh-cn/search/functions_5.html
index 5698c3e6..361e40d5 100644
--- a/zh-cn/search/functions_5.html
+++ b/zh-cn/search/functions_5.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_5.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_6.html b/zh-cn/search/functions_6.html
index 31ba55e5..4285e870 100644
--- a/zh-cn/search/functions_6.html
+++ b/zh-cn/search/functions_6.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_6.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_6.js b/zh-cn/search/functions_6.js
index 8ace115d..06ab4d06 100644
--- a/zh-cn/search/functions_6.js
+++ b/zh-cn/search/functions_6.js
@@ -8,25 +8,25 @@ var searchData=
['genericschemavalidator',['GenericSchemaValidator',['../classrapidjson_1_1_generic_schema_validator.html#acc07bd08b00195d84bb5b83f59c593d3',1,'rapidjson::GenericSchemaValidator::GenericSchemaValidator(const SchemaDocumentType &amp;schemaDocument, StateAllocator *allocator=0, size_t schemaStackCapacity=kDefaultSchemaStackCapacity, size_t documentStackCapacity=kDefaultDocumentStackCapacity)'],['../classrapidjson_1_1_generic_schema_validator.html#a0e1d8f19381bd53d77cc00a9a6dcd067',1,'rapidjson::GenericSchemaValidator::GenericSchemaValidator(const SchemaDocumentType &amp;schemaDocument, OutputHandler &amp;outputHandler, StateAllocator *allocator=0, size_t schemaStackCapacity=kDefaultSchemaStackCapacity, size_t documentStackCapacity=kDefaultDocumentStackCapacity)']]],
['genericstringref',['GenericStringRef',['../structrapidjson_1_1_generic_string_ref.html#acd4d5ebac2b610ce647356aa52998002',1,'rapidjson::GenericStringRef::GenericStringRef(const CharType(&amp;str)[N]) RAPIDJSON_NOEXCEPT'],['../structrapidjson_1_1_generic_string_ref.html#a29cf407c6aa2313f13dff78d6ce02687',1,'rapidjson::GenericStringRef::GenericStringRef(const CharType *str)'],['../structrapidjson_1_1_generic_string_ref.html#ad9eb120a58cee500ff3bd5706779c4e4',1,'rapidjson::GenericStringRef::GenericStringRef(const CharType *str, SizeType len)']]],
['genericvalue',['GenericValue',['../classrapidjson_1_1_generic_value.html#ad1f8199e65662e0d52a13a1577d4e4a5',1,'rapidjson::GenericValue::GenericValue() RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a646b6d4d3d98799a0926d96ffa127a58',1,'rapidjson::GenericValue::GenericValue(Type type) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#adca019775f68f012643781cd2c2515ac',1,'rapidjson::GenericValue::GenericValue(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs, Allocator &amp;allocator, bool copyConstStrings=false)'],['../classrapidjson_1_1_generic_value.html#ab933ad7ff8c9d08f73cebaecb700dbe9',1,'rapidjson::GenericValue::GenericValue(bool b) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#abba0c9ccfd90726f916c36013a2e9e19',1,'rapidjson::GenericValue::GenericValue(int i) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a4a8060a42b7953a2981ad892180ca5a6',1,'rapidjson::GenericValue::GenericValue(unsigned u) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#acd4ae9a8dba4498d1d7cce6667529bb8',1,'rapidjson::GenericValue::GenericValue(int64_t i64) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a1f125e735577aae64c0306345de45563',1,'rapidjson::GenericValue::GenericValue(uint64_t u64) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a71b9e2ec1f7bf9e2f034126ca7b4945a',1,'rapidjson::GenericValue::GenericValue(double d) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#afe94e5e86a5b1a3fb605a9f8422f048b',1,'rapidjson::GenericValue::GenericValue(float f) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a51e93a4fb57f77a39767acb076bf43c1',1,'rapidjson::GenericValue::GenericValue(const Ch *s, SizeType length) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a65bfc3073fa80ee5eba8e985abe2f941',1,'rapidjson::GenericValue::GenericValue(StringRefType s) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#ad9553bb9ccbfd19547c473a95405a8b2',1,'rapidjson::GenericValue::GenericValue(const Ch *s, SizeType length, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a83ba61e8a5170c2e172fd60ebc11016f',1,'rapidjson::GenericValue::GenericValue(const Ch *s, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a852788b35257762cd8d6c4bf5c5d77bc',1,'rapidjson::GenericValue::GenericValue(const std::basic_string&lt; Ch &gt; &amp;s, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a77b0f41557b3c34b57a180698312c4a8',1,'rapidjson::GenericValue::GenericValue(Array a) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#a893da1069660536fd3943a0149206a6e',1,'rapidjson::GenericValue::GenericValue(Object o) RAPIDJSON_NOEXCEPT']]],
- ['get',['Get',['../classrapidjson_1_1_generic_pointer.html#a309d819cc14e9d2183df4807bc99fea5',1,'rapidjson::GenericPointer::Get(ValueType &amp;root, size_t *unresolvedTokenIndex=0) const '],['../classrapidjson_1_1_generic_pointer.html#ab6982b814e41d8f64bea7d5faab93b1f',1,'rapidjson::GenericPointer::Get(const ValueType &amp;root, size_t *unresolvedTokenIndex=0) const ']]],
+ ['get',['Get',['../classrapidjson_1_1_generic_pointer.html#af09e26073a7263fc9e8f0c14160f45bd',1,'rapidjson::GenericPointer::Get(ValueType &amp;root, size_t *unresolvedTokenIndex=0) const'],['../classrapidjson_1_1_generic_pointer.html#aac2171a0ac38298b2d0ae063351ec176',1,'rapidjson::GenericPointer::Get(const ValueType &amp;root, size_t *unresolvedTokenIndex=0) const']]],
['getallocator',['GetAllocator',['../classrapidjson_1_1_generic_document.html#ad92c6cd025d411258d1f2ad890e2ee3f',1,'rapidjson::GenericDocument::GetAllocator()'],['../classrapidjson_1_1_generic_pointer.html#acdac4ea8e57920194827be4afb942d97',1,'rapidjson::GenericPointer::GetAllocator()']]],
- ['getbool',['GetBool',['../classrapidjson_1_1_generic_value.html#a69d917b47799f63fc588bf294fa71483',1,'rapidjson::GenericValue']]],
- ['getdouble',['GetDouble',['../classrapidjson_1_1_generic_value.html#aa059dee923cc0446752e321ff70936a6',1,'rapidjson::GenericValue']]],
- ['geterroroffset',['GetErrorOffset',['../classrapidjson_1_1_generic_document.html#ab791c05727d83f6834a1b916783dbc06',1,'rapidjson::GenericDocument::GetErrorOffset()'],['../classrapidjson_1_1_generic_reader.html#ab907a36c410e96154c99797a6a0ce16d',1,'rapidjson::GenericReader::GetErrorOffset()']]],
- ['getfloat',['GetFloat',['../classrapidjson_1_1_generic_value.html#a0eda9834f241e5c5b23161a7ee33758b',1,'rapidjson::GenericValue']]],
- ['getinvaliddocumentpointer',['GetInvalidDocumentPointer',['../classrapidjson_1_1_generic_schema_validator.html#af66e4a41d71c89edfabb176af7839f04',1,'rapidjson::GenericSchemaValidator']]],
- ['getinvalidschemakeyword',['GetInvalidSchemaKeyword',['../classrapidjson_1_1_generic_schema_validator.html#a914628c4d69faea91ada1dee61d25d59',1,'rapidjson::GenericSchemaValidator']]],
- ['getinvalidschemapointer',['GetInvalidSchemaPointer',['../classrapidjson_1_1_generic_schema_validator.html#a8381f8d4dca195449f086ffbd25bb9b7',1,'rapidjson::GenericSchemaValidator']]],
- ['getlength',['GetLength',['../classrapidjson_1_1_generic_string_buffer.html#aefe471aaf1430189bf40ddb3fb7ebca3',1,'rapidjson::GenericStringBuffer']]],
- ['getparseerror',['GetParseError',['../classrapidjson_1_1_generic_document.html#ad97e64c123ec1e07ea62ab0a9ce80c00',1,'rapidjson::GenericDocument']]],
+ ['getbool',['GetBool',['../classrapidjson_1_1_generic_value.html#a78d80b935babeedbfa71914a8fe5baa7',1,'rapidjson::GenericValue']]],
+ ['getdouble',['GetDouble',['../classrapidjson_1_1_generic_value.html#aa27d086d265f0ce447b15b15f0a2ed6e',1,'rapidjson::GenericValue']]],
+ ['geterroroffset',['GetErrorOffset',['../classrapidjson_1_1_generic_document.html#af532179ca5ad5434a5e8af63f5da4c5f',1,'rapidjson::GenericDocument::GetErrorOffset()'],['../classrapidjson_1_1_generic_reader.html#ab50019e0a715320f83b7610b83dcef8f',1,'rapidjson::GenericReader::GetErrorOffset()']]],
+ ['getfloat',['GetFloat',['../classrapidjson_1_1_generic_value.html#a573712808dd5d8814c103cf55fd761b4',1,'rapidjson::GenericValue']]],
+ ['getinvaliddocumentpointer',['GetInvalidDocumentPointer',['../classrapidjson_1_1_generic_schema_validator.html#a60dfb4a89593c8d3ca4c89a6202feb52',1,'rapidjson::GenericSchemaValidator']]],
+ ['getinvalidschemakeyword',['GetInvalidSchemaKeyword',['../classrapidjson_1_1_generic_schema_validator.html#a03bcd5497a574cffbd066d0aec2b5585',1,'rapidjson::GenericSchemaValidator']]],
+ ['getinvalidschemapointer',['GetInvalidSchemaPointer',['../classrapidjson_1_1_generic_schema_validator.html#a3238efb9d9144c2d6577362d8dc5f61b',1,'rapidjson::GenericSchemaValidator']]],
+ ['getlength',['GetLength',['../classrapidjson_1_1_generic_string_buffer.html#a0a114be213152d570a2d9fde7a28fe11',1,'rapidjson::GenericStringBuffer']]],
+ ['getparseerror',['GetParseError',['../classrapidjson_1_1_generic_document.html#ab94c280c079a6837a24951cb4d8f337b',1,'rapidjson::GenericDocument']]],
['getparseerror_5fen',['GetParseError_En',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gabdaf1a7a4db30fb0e3d927fdf0fabe79',1,'rapidjson']]],
- ['getparseerrorcode',['GetParseErrorCode',['../classrapidjson_1_1_generic_pointer.html#ac817b123619422f03c44a46978d9fbd0',1,'rapidjson::GenericPointer::GetParseErrorCode()'],['../classrapidjson_1_1_generic_reader.html#a40fd326bad7d7033f096b549cbf159db',1,'rapidjson::GenericReader::GetParseErrorCode()']]],
- ['getparseerroroffset',['GetParseErrorOffset',['../classrapidjson_1_1_generic_pointer.html#adc01f1be5f05127f849a2bf10a97e89b',1,'rapidjson::GenericPointer']]],
- ['getroot',['GetRoot',['../classrapidjson_1_1_generic_schema_document.html#af64ea17654ab0f1a91e382d422f91daf',1,'rapidjson::GenericSchemaDocument']]],
- ['getsize',['GetSize',['../classrapidjson_1_1_generic_string_buffer.html#a629cedcefa12a8057fad525df8548a88',1,'rapidjson::GenericStringBuffer']]],
- ['getstackcapacity',['GetStackCapacity',['../classrapidjson_1_1_generic_document.html#ac785c064649dea6cfa67207b6bda748e',1,'rapidjson::GenericDocument']]],
- ['getstringlength',['GetStringLength',['../classrapidjson_1_1_generic_value.html#a979c4ba6dd2a311be837ae083423aca8',1,'rapidjson::GenericValue']]],
- ['gettokencount',['GetTokenCount',['../classrapidjson_1_1_generic_pointer.html#a2949cb104effdf323781ae70ce469ed9',1,'rapidjson::GenericPointer']]],
- ['gettokens',['GetTokens',['../classrapidjson_1_1_generic_pointer.html#a0ee51e6c996d4665b398dae5dbf00bc4',1,'rapidjson::GenericPointer']]],
- ['getwithdefault',['GetWithDefault',['../classrapidjson_1_1_generic_pointer.html#a6c615761374ddce265d542f4b4b476b1',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, const ValueType &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#ae9f3e27a210a0974892c1260c2e4a39f',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, const Ch *defaultValue, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#ab914090864d0ded21a376867c33ad865',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#a3bb1e63a2c0aa61a9e95d6d65c4c3ffd',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, T defaultValue, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#af89e3e8f87bb833d4eb4bb2fd4074431',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;defaultValue) const '],['../classrapidjson_1_1_generic_pointer.html#ad96e263ba29209259fd4abe63d7f4458',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *defaultValue) const '],['../classrapidjson_1_1_generic_pointer.html#a5e9e740bec7f5a1703088171e0b2557b',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;defaultValue) const '],['../classrapidjson_1_1_generic_pointer.html#a573a35dd96aacffe209e1442720f447a',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T defaultValue) const ']]]
+ ['getparseerrorcode',['GetParseErrorCode',['../classrapidjson_1_1_generic_pointer.html#af649a48d77aa856cddaa748ad6b0d6ac',1,'rapidjson::GenericPointer::GetParseErrorCode()'],['../classrapidjson_1_1_generic_reader.html#a042c621cf745c5ed3a6f5ff9418dd05e',1,'rapidjson::GenericReader::GetParseErrorCode()']]],
+ ['getparseerroroffset',['GetParseErrorOffset',['../classrapidjson_1_1_generic_pointer.html#a75caef2a047c56466f0b599bdda882c9',1,'rapidjson::GenericPointer']]],
+ ['getroot',['GetRoot',['../classrapidjson_1_1_generic_schema_document.html#a8b2ac6de85dc9c1fb4f4d0be4aeb2d6a',1,'rapidjson::GenericSchemaDocument']]],
+ ['getsize',['GetSize',['../classrapidjson_1_1_generic_string_buffer.html#a9d830ec37a4ba0fba3b523c90aaf8b42',1,'rapidjson::GenericStringBuffer']]],
+ ['getstackcapacity',['GetStackCapacity',['../classrapidjson_1_1_generic_document.html#a153e5a065ca9660673974f9df203be4b',1,'rapidjson::GenericDocument']]],
+ ['getstringlength',['GetStringLength',['../classrapidjson_1_1_generic_value.html#a18599e0d1a7e70a11b35f5e219390fea',1,'rapidjson::GenericValue']]],
+ ['gettokencount',['GetTokenCount',['../classrapidjson_1_1_generic_pointer.html#a791e40c10682b9db0adf2b6e0b8b3d78',1,'rapidjson::GenericPointer']]],
+ ['gettokens',['GetTokens',['../classrapidjson_1_1_generic_pointer.html#ac07c300d43f04dad9caa0cb209cb2853',1,'rapidjson::GenericPointer']]],
+ ['getwithdefault',['GetWithDefault',['../classrapidjson_1_1_generic_pointer.html#acd36d0bbfcca43feaeeba5488d8384c2',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, const ValueType &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#abdc025b8391b271f1134a7ba7039c27f',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, const Ch *defaultValue, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#a2ac51ee7af5b9d7628140ae8501edcf4',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;defaultValue, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#a16833ef8a38386e6c310d602426b45f0',1,'rapidjson::GenericPointer::GetWithDefault(ValueType &amp;root, T defaultValue, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#a07fa31c03c96e260f234087882dce408',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;defaultValue) const'],['../classrapidjson_1_1_generic_pointer.html#aaa4e92344cc07e98adb5b9f5b93927b8',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *defaultValue) const'],['../classrapidjson_1_1_generic_pointer.html#af19e2313004885cfa9c45f50b30b32e2',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;defaultValue) const'],['../classrapidjson_1_1_generic_pointer.html#a1f428c25a3a905683e616d76c2d9efcf',1,'rapidjson::GenericPointer::GetWithDefault(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T defaultValue) const']]]
];
diff --git a/zh-cn/search/functions_7.html b/zh-cn/search/functions_7.html
index 82038869..3ae35484 100644
--- a/zh-cn/search/functions_7.html
+++ b/zh-cn/search/functions_7.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_7.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_7.js b/zh-cn/search/functions_7.js
index 7fdf8383..f360d07d 100644
--- a/zh-cn/search/functions_7.js
+++ b/zh-cn/search/functions_7.js
@@ -1,5 +1,5 @@
var searchData=
[
- ['hasmember',['HasMember',['../classrapidjson_1_1_generic_value.html#af17b9b6ba6a9fb4e02d2dced5aa0ee0c',1,'rapidjson::GenericValue::HasMember(const Ch *name) const '],['../classrapidjson_1_1_generic_value.html#afb1942ef13566484e1806689834a053f',1,'rapidjson::GenericValue::HasMember(const std::basic_string&lt; Ch &gt; &amp;name) const '],['../classrapidjson_1_1_generic_value.html#a548e6c8a99c525573d933933610977cb',1,'rapidjson::GenericValue::HasMember(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const ']]],
- ['hasparseerror',['HasParseError',['../classrapidjson_1_1_generic_document.html#a2ab17089bd6249bf2a7959d56d35cb68',1,'rapidjson::GenericDocument::HasParseError()'],['../classrapidjson_1_1_generic_reader.html#a46ded2951b8fa395ed421989d66e71fe',1,'rapidjson::GenericReader::HasParseError()']]]
+ ['hasmember',['HasMember',['../classrapidjson_1_1_generic_value.html#aa78e2eb30c6b918826eccf03f04f166b',1,'rapidjson::GenericValue::HasMember(const Ch *name) const'],['../classrapidjson_1_1_generic_value.html#a9b3b30acbe60d7a5b105afa05c1ddfb0',1,'rapidjson::GenericValue::HasMember(const std::basic_string&lt; Ch &gt; &amp;name) const'],['../classrapidjson_1_1_generic_value.html#a794129b8adffb97d123306a0c0ccaf71',1,'rapidjson::GenericValue::HasMember(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name) const']]],
+ ['hasparseerror',['HasParseError',['../classrapidjson_1_1_generic_document.html#a7607bb42b51547e44bfd4cab35d8f20e',1,'rapidjson::GenericDocument::HasParseError()'],['../classrapidjson_1_1_generic_reader.html#ac42370c3497a0e2b6973110f298e3a59',1,'rapidjson::GenericReader::HasParseError()']]]
];
diff --git a/zh-cn/search/functions_8.html b/zh-cn/search/functions_8.html
index 820f338b..687480fc 100644
--- a/zh-cn/search/functions_8.html
+++ b/zh-cn/search/functions_8.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_8.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_8.js b/zh-cn/search/functions_8.js
index 90efbbae..d5731d70 100644
--- a/zh-cn/search/functions_8.js
+++ b/zh-cn/search/functions_8.js
@@ -1,9 +1,9 @@
var searchData=
[
- ['is',['Is',['../classrapidjson_1_1_generic_value.html#ade8d1ca2b8e8afa02cde46e26866440b',1,'rapidjson::GenericValue']]],
- ['iscomplete',['IsComplete',['../classrapidjson_1_1_writer.html#a0cde8037db76f887cd9c557fd68630c5',1,'rapidjson::Writer']]],
- ['iserror',['IsError',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a5ab5548c7a7776f4da20eac09fe57c1b',1,'rapidjson::ParseResult']]],
- ['isvalid',['IsValid',['../classrapidjson_1_1_generic_pointer.html#a112f364fe9aeabba2a72e83bcbeb8fda',1,'rapidjson::GenericPointer::IsValid()'],['../classrapidjson_1_1_generic_schema_validator.html#ab520a4ee6df3e23ffb948c8d5ae7bf38',1,'rapidjson::GenericSchemaValidator::IsValid()']]],
+ ['is',['Is',['../classrapidjson_1_1_generic_value.html#acc6b1791cca8daef18521918136264b7',1,'rapidjson::GenericValue']]],
+ ['iscomplete',['IsComplete',['../classrapidjson_1_1_writer.html#a190d964d3e62155e87153e858a0b04da',1,'rapidjson::Writer']]],
+ ['iserror',['IsError',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ab6d87c6ce9c849f35e902fbe23f485c4',1,'rapidjson::ParseResult']]],
+ ['isvalid',['IsValid',['../classrapidjson_1_1_generic_pointer.html#a98b96d54c2c3378f1892ffffc501069c',1,'rapidjson::GenericPointer::IsValid()'],['../classrapidjson_1_1_generic_schema_validator.html#ad32a9ad31dbb588edaaf038ab053275b',1,'rapidjson::GenericSchemaValidator::IsValid()']]],
['iterativeparsecomplete',['IterativeParseComplete',['../classrapidjson_1_1_generic_reader.html#a60fa11ff60f71b3a466bbd962f35dfdb',1,'rapidjson::GenericReader']]],
['iterativeparseinit',['IterativeParseInit',['../classrapidjson_1_1_generic_reader.html#a90403a2c55dadf82fd2bb9d4c66b3280',1,'rapidjson::GenericReader']]],
['iterativeparsenext',['IterativeParseNext',['../classrapidjson_1_1_generic_reader.html#abac6611bec17167de50fede5cd5194ca',1,'rapidjson::GenericReader']]]
diff --git a/zh-cn/search/functions_9.html b/zh-cn/search/functions_9.html
index a2dca620..30be3745 100644
--- a/zh-cn/search/functions_9.html
+++ b/zh-cn/search/functions_9.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_9.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_9.js b/zh-cn/search/functions_9.js
index c1f51ecd..29348d8c 100644
--- a/zh-cn/search/functions_9.js
+++ b/zh-cn/search/functions_9.js
@@ -1,9 +1,9 @@
var searchData=
[
['malloc',['Malloc',['../classrapidjson_1_1_memory_pool_allocator.html#a208c29e04b1d748bfe068444b7044344',1,'rapidjson::MemoryPoolAllocator']]],
- ['memberbegin',['MemberBegin',['../classrapidjson_1_1_generic_value.html#a469c0cc3e72f846757fb64fa52fafee5',1,'rapidjson::GenericValue::MemberBegin() const '],['../classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a',1,'rapidjson::GenericValue::MemberBegin()']]],
- ['membercount',['MemberCount',['../classrapidjson_1_1_generic_value.html#acf5019b9002ebfd66a1191d19e986c7b',1,'rapidjson::GenericValue']]],
- ['memberend',['MemberEnd',['../classrapidjson_1_1_generic_value.html#a88d2c5b861cd8a6a14976456dfbc1f64',1,'rapidjson::GenericValue::MemberEnd() const '],['../classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee',1,'rapidjson::GenericValue::MemberEnd()']]],
+ ['memberbegin',['MemberBegin',['../classrapidjson_1_1_generic_value.html#ae89a77887aa3eb1f1f913727cbff6786',1,'rapidjson::GenericValue::MemberBegin() const'],['../classrapidjson_1_1_generic_value.html#a93f0f317f397c36a24a0f3c32648623a',1,'rapidjson::GenericValue::MemberBegin()']]],
+ ['membercount',['MemberCount',['../classrapidjson_1_1_generic_value.html#a8b7e47c57a20d0de0cd19eee799ebd88',1,'rapidjson::GenericValue']]],
+ ['memberend',['MemberEnd',['../classrapidjson_1_1_generic_value.html#a34ee3d75a7aa308043fb34b0743bfe7c',1,'rapidjson::GenericValue::MemberEnd() const'],['../classrapidjson_1_1_generic_value.html#adb109ae9f12615efadf9277cb5e9c4ee',1,'rapidjson::GenericValue::MemberEnd()']]],
['memorypoolallocator',['MemoryPoolAllocator',['../classrapidjson_1_1_memory_pool_allocator.html#a59d783f4feba17dcd35d9f25fcbc09f4',1,'rapidjson::MemoryPoolAllocator::MemoryPoolAllocator(size_t chunkSize=kDefaultChunkCapacity, BaseAllocator *baseAllocator=0)'],['../classrapidjson_1_1_memory_pool_allocator.html#abcc572bdb6902c9d69711540db5098a7',1,'rapidjson::MemoryPoolAllocator::MemoryPoolAllocator(void *buffer, size_t size, size_t chunkSize=kDefaultChunkCapacity, BaseAllocator *baseAllocator=0)']]],
['move',['Move',['../classrapidjson_1_1_generic_value.html#a07b19e65fb756cae13e5bdc515cfbd4b',1,'rapidjson::GenericValue']]]
];
diff --git a/zh-cn/search/functions_a.html b/zh-cn/search/functions_a.html
index fc5daa53..90b96dd2 100644
--- a/zh-cn/search/functions_a.html
+++ b/zh-cn/search/functions_a.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_a.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_a.js b/zh-cn/search/functions_a.js
index 71f617dd..03e2facf 100644
--- a/zh-cn/search/functions_a.js
+++ b/zh-cn/search/functions_a.js
@@ -1,13 +1,13 @@
var searchData=
[
- ['objectempty',['ObjectEmpty',['../classrapidjson_1_1_generic_value.html#a1f28a345c9b9c93c76abf695669e4378',1,'rapidjson::GenericValue']]],
- ['offset',['Offset',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a056e5792c1554fbc05b5f1cc168d82ae',1,'rapidjson::ParseResult']]],
- ['operator_20booleantype',['operator BooleanType',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a1743018526769d9b5b782fd7cffc9838',1,'rapidjson::ParseResult']]],
- ['operator_20const_20ch_20_2a',['operator const Ch *',['../structrapidjson_1_1_generic_string_ref.html#af535787e3593802222f7b3f3096beff0',1,'rapidjson::GenericStringRef']]],
- ['operator_20parseresult',['operator ParseResult',['../classrapidjson_1_1_generic_document.html#a0de48f0c884423b6fcfabc2e93942968',1,'rapidjson::GenericDocument']]],
- ['operator_21_3d',['operator!=',['../classrapidjson_1_1_generic_value.html#a0cb232adce79932c499c5f04cbc8dc54',1,'rapidjson::GenericValue::operator!=(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const '],['../classrapidjson_1_1_generic_value.html#aff1711092a1278d36b8152f5520a686e',1,'rapidjson::GenericValue::operator!=(const Ch *rhs) const '],['../classrapidjson_1_1_generic_value.html#ad7e6ef7acbbfef57485b9f2dee620dbf',1,'rapidjson::GenericValue::operator!=(const T &amp;rhs) const '],['../classrapidjson_1_1_generic_pointer.html#a3e74f5b9c9fd3307f6ebac61a7131524',1,'rapidjson::GenericPointer::operator!=()']]],
- ['operator_2d',['operator-',['../classrapidjson_1_1_generic_member_iterator.html#a6d7cfaef258b0774da1b642907d81060',1,'rapidjson::GenericMemberIterator']]],
+ ['objectempty',['ObjectEmpty',['../classrapidjson_1_1_generic_value.html#a1f4835373e05abae52b91e1c6b7ec92c',1,'rapidjson::GenericValue']]],
+ ['offset',['Offset',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a85036788b0cfd1c676900de6f8260bd6',1,'rapidjson::ParseResult']]],
+ ['operator_20booleantype',['operator BooleanType',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#af0936ace1dc9b674e9afb75ec6145b32',1,'rapidjson::ParseResult']]],
+ ['operator_20const_20ch_20_2a',['operator const Ch *',['../structrapidjson_1_1_generic_string_ref.html#a86d30bb594a41619a7a5ba6c8dcce2bd',1,'rapidjson::GenericStringRef']]],
+ ['operator_20parseresult',['operator ParseResult',['../classrapidjson_1_1_generic_document.html#a36d19989c9221b27036675455516a974',1,'rapidjson::GenericDocument']]],
+ ['operator_21_3d',['operator!=',['../classrapidjson_1_1_generic_value.html#ad5bf5afd53f21f370f917041b3be4bfc',1,'rapidjson::GenericValue::operator!=(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const'],['../classrapidjson_1_1_generic_value.html#a6443cf5323fb46c4c51cd15a365da49b',1,'rapidjson::GenericValue::operator!=(const Ch *rhs) const'],['../classrapidjson_1_1_generic_value.html#ae6fe0576ff0336f6e2b09fe32f3ff809',1,'rapidjson::GenericValue::operator!=(const T &amp;rhs) const'],['../classrapidjson_1_1_generic_pointer.html#a8ca73989b4f3ffa5154a229f95f1e0c9',1,'rapidjson::GenericPointer::operator!=()']]],
+ ['operator_2d',['operator-',['../classrapidjson_1_1_generic_member_iterator.html#abfad2c34a97f82178cbf9464e958e2c2',1,'rapidjson::GenericMemberIterator']]],
['operator_3d',['operator=',['../classrapidjson_1_1_generic_value.html#ae8bcedd951f50b69786aaaa1828e9fac',1,'rapidjson::GenericValue::operator=(GenericValue &amp;rhs) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#aecc9d0a6aafe31f4fdf9f6e75e5f089c',1,'rapidjson::GenericValue::operator=(StringRefType str) RAPIDJSON_NOEXCEPT'],['../classrapidjson_1_1_generic_value.html#ab7446da62fdc61d6d987d508cdb6ac13',1,'rapidjson::GenericValue::operator=(T value)'],['../classrapidjson_1_1_generic_pointer.html#a23194bb6ce6c07c78981344fe80ac3a6',1,'rapidjson::GenericPointer::operator=()']]],
- ['operator_3d_3d',['operator==',['../classrapidjson_1_1_generic_value.html#afbdbc9cbc3b59feb5a28d5bfee97dbb3',1,'rapidjson::GenericValue::operator==(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const '],['../classrapidjson_1_1_generic_value.html#a7bed9035dd1beeabe6f47e870874e793',1,'rapidjson::GenericValue::operator==(const Ch *rhs) const '],['../classrapidjson_1_1_generic_value.html#a6f7f7c66d8f8c08e496ae831ba114126',1,'rapidjson::GenericValue::operator==(const std::basic_string&lt; Ch &gt; &amp;rhs) const '],['../classrapidjson_1_1_generic_value.html#ae6c196979931e8283bcbd499133169ed',1,'rapidjson::GenericValue::operator==(const T &amp;rhs) const '],['../classrapidjson_1_1_generic_pointer.html#af0d009a8322a7b61f63a9539ca8bddaf',1,'rapidjson::GenericPointer::operator==()']]],
+ ['operator_3d_3d',['operator==',['../classrapidjson_1_1_generic_value.html#ab4e5285102bb686f39bca2855a17a181',1,'rapidjson::GenericValue::operator==(const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;rhs) const'],['../classrapidjson_1_1_generic_value.html#af03ef6020e188bbfceb018da5cd8becc',1,'rapidjson::GenericValue::operator==(const Ch *rhs) const'],['../classrapidjson_1_1_generic_value.html#af089d2bee0386ca7504ff4fab466c87f',1,'rapidjson::GenericValue::operator==(const std::basic_string&lt; Ch &gt; &amp;rhs) const'],['../classrapidjson_1_1_generic_value.html#aaddbbbb35cd783f209f889cf8dea9570',1,'rapidjson::GenericValue::operator==(const T &amp;rhs) const'],['../classrapidjson_1_1_generic_pointer.html#a3bb15fa5592f2bfad6f2c9af7940b952',1,'rapidjson::GenericPointer::operator==()']]],
['operator_5b_5d',['operator[]',['../classrapidjson_1_1_generic_value.html#a8ec7fc7f221306925c7674dccbe02b07',1,'rapidjson::GenericValue::operator[](T *name)'],['../classrapidjson_1_1_generic_value.html#aa62b57746c96ce3d264b2fe178196062',1,'rapidjson::GenericValue::operator[](const GenericValue&lt; Encoding, SourceAllocator &gt; &amp;name)'],['../classrapidjson_1_1_generic_value.html#a4d337239ee3e2096462f6a36b9ab0811',1,'rapidjson::GenericValue::operator[](const std::basic_string&lt; Ch &gt; &amp;name)'],['../classrapidjson_1_1_generic_value.html#adc312de070d03a63e6c692c9c61db156',1,'rapidjson::GenericValue::operator[](SizeType index)']]]
];
diff --git a/zh-cn/search/functions_b.html b/zh-cn/search/functions_b.html
index 8f63b869..90e58b3e 100644
--- a/zh-cn/search/functions_b.html
+++ b/zh-cn/search/functions_b.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_b.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_c.html b/zh-cn/search/functions_c.html
index 273ccd99..fe7a030e 100644
--- a/zh-cn/search/functions_c.html
+++ b/zh-cn/search/functions_c.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_c.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_d.html b/zh-cn/search/functions_d.html
index 79bc8d23..cf407d1c 100644
--- a/zh-cn/search/functions_d.html
+++ b/zh-cn/search/functions_d.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_d.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_d.js b/zh-cn/search/functions_d.js
index 3eeca764..94ccab3a 100644
--- a/zh-cn/search/functions_d.js
+++ b/zh-cn/search/functions_d.js
@@ -1,7 +1,7 @@
var searchData=
[
['schemavalidatingreader',['SchemaValidatingReader',['../classrapidjson_1_1_schema_validating_reader.html#a1e2bcc66cad23376241cd91e8bf8c706',1,'rapidjson::SchemaValidatingReader']]],
- ['set',['Set',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a40c0bd4d6c535c57acbb5c2e656bea38',1,'rapidjson::ParseResult::Set()'],['../classrapidjson_1_1_generic_pointer.html#aecea7b5c4786f509e35c3917efa57fce',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#ac19f479c656ddd6a8bd9888a9fb27f96',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, const ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#a98454081fb9557b3d2285c4e89bd34f6',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, const Ch *value, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#a151f17dc1c655b9dc0a9a3cf06e6bdcb',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;value, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#ae9037fa1a22498e2a8c0f96f866f6288',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, T value, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#add58edd4f813645f8ffead6956967f96',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const '],['../classrapidjson_1_1_generic_pointer.html#a83ff802b8fcacd96e60ba1c2627a19f0',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;value) const '],['../classrapidjson_1_1_generic_pointer.html#a2ee50bcbfa76119094eef0284eeddfbe',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *value) const '],['../classrapidjson_1_1_generic_pointer.html#a9bd1c4076e732ffc1b4527ac5659264e',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;value) const '],['../classrapidjson_1_1_generic_pointer.html#af547130d348ca1805d882955a377bbe4',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T value) const ']]],
+ ['set',['Set',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a40c0bd4d6c535c57acbb5c2e656bea38',1,'rapidjson::ParseResult::Set()'],['../classrapidjson_1_1_generic_pointer.html#a0759b70ec70a6eb7a7545a34764ac663',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#af2f51d68c82136086bed9593719abd1a',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, const ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#a4f0ef2b49a9561d570217249343d9335',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, const Ch *value, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#a0ae84f686e1af593b9445c2c502101b2',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, const std::basic_string&lt; Ch &gt; &amp;value, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#aa6df2ca27eecabbbad825a64a3d2bfe9',1,'rapidjson::GenericPointer::Set(ValueType &amp;root, T value, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#a9371832d9089cca9b7f549172fd75cc8',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const'],['../classrapidjson_1_1_generic_pointer.html#ad7a692d4e08d578f7e24afb7c4004276',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const ValueType &amp;value) const'],['../classrapidjson_1_1_generic_pointer.html#afb649edbdbe09a6840b12d67c9f2501e',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const Ch *value) const'],['../classrapidjson_1_1_generic_pointer.html#a3a7ff4e0b700c2975cf455fef23226b4',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, const std::basic_string&lt; Ch &gt; &amp;value) const'],['../classrapidjson_1_1_generic_pointer.html#a8e5ed62ba30bb3f7a09a826746f70574',1,'rapidjson::GenericPointer::Set(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, T value) const']]],
['setarray',['SetArray',['../classrapidjson_1_1_generic_value.html#a25069c76d045b058e54835d8c467c789',1,'rapidjson::GenericValue']]],
['setbool',['SetBool',['../classrapidjson_1_1_generic_value.html#a5623c9039977ca0daf394e5c12f10c2d',1,'rapidjson::GenericValue']]],
['setformatoptions',['SetFormatOptions',['../classrapidjson_1_1_pretty_writer.html#acde6176577f29869e28a4f3c4a251090',1,'rapidjson::PrettyWriter']]],
@@ -9,11 +9,11 @@ var searchData=
['setmaxdecimalplaces',['SetMaxDecimalPlaces',['../classrapidjson_1_1_writer.html#aa7b6967dc237519e2a6d8b3939fb9634',1,'rapidjson::Writer']]],
['setobject',['SetObject',['../classrapidjson_1_1_generic_value.html#a7cb3cbaefe4fb99aaf9f155fb4ee039b',1,'rapidjson::GenericValue']]],
['setstring',['SetString',['../classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f',1,'rapidjson::GenericValue::SetString(const Ch *s, SizeType length)'],['../classrapidjson_1_1_generic_value.html#aabb538578a3c1e60c86cda32d062bc1c',1,'rapidjson::GenericValue::SetString(StringRefType s)'],['../classrapidjson_1_1_generic_value.html#ae6351043ec30d8a151b0a072cfbc46d5',1,'rapidjson::GenericValue::SetString(const Ch *s, SizeType length, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#ab4babf200cac2dacb412a3ea279ddf5b',1,'rapidjson::GenericValue::SetString(const Ch *s, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a9ba3d9d8a106d5b7e92fb49db897c21b',1,'rapidjson::GenericValue::SetString(StringRefType s, Allocator &amp;allocator)'],['../classrapidjson_1_1_generic_value.html#a3e930bffb40a78e570e3deef461f0532',1,'rapidjson::GenericValue::SetString(const std::basic_string&lt; Ch &gt; &amp;s, Allocator &amp;allocator)']]],
- ['size',['Size',['../classrapidjson_1_1_memory_pool_allocator.html#aad83829efa77ad26a23f74d6cab3d781',1,'rapidjson::MemoryPoolAllocator::Size()'],['../classrapidjson_1_1_generic_value.html#a2e6e849cfb368a3fa708f8bcf1d56ec9',1,'rapidjson::GenericValue::Size()']]],
+ ['size',['Size',['../classrapidjson_1_1_memory_pool_allocator.html#aa08b368c54e7643fcd23ef55139b9b40',1,'rapidjson::MemoryPoolAllocator::Size()'],['../classrapidjson_1_1_generic_value.html#a799a8a2503989f486f3fc7a660266555',1,'rapidjson::GenericValue::Size()']]],
['skipwhitespace',['SkipWhitespace',['../namespacerapidjson.html#a6efb0f4d2a6f81477a59718d42e9464a',1,'rapidjson::SkipWhitespace(InputStream &amp;is)'],['../namespacerapidjson.html#a3caa6f393c9940e6525d5f1c21ed9ea2',1,'rapidjson::SkipWhitespace(InsituStringStream &amp;is)'],['../namespacerapidjson.html#a791735c27e073a70d720c2775ddf9568',1,'rapidjson::SkipWhitespace(StringStream &amp;is)']]],
['string',['String',['../classrapidjson_1_1_pretty_writer.html#a363c2280393e27e19bceb8d015c2832c',1,'rapidjson::PrettyWriter::String()'],['../classrapidjson_1_1_writer.html#a849e2b675a2b868699a14d45c7396f24',1,'rapidjson::Writer::String()']]],
- ['stringify',['Stringify',['../classrapidjson_1_1_generic_pointer.html#ab9166f175517b1bff8c2219ea769e506',1,'rapidjson::GenericPointer']]],
- ['stringifyurifragment',['StringifyUriFragment',['../classrapidjson_1_1_generic_pointer.html#a40413907ac94e218f93625d3a5c8c454',1,'rapidjson::GenericPointer']]],
+ ['stringify',['Stringify',['../classrapidjson_1_1_generic_pointer.html#a73073ca3c9e47eba7c27c16151b269ac',1,'rapidjson::GenericPointer']]],
+ ['stringifyurifragment',['StringifyUriFragment',['../classrapidjson_1_1_generic_pointer.html#ae985c27c1d061b93ba4f8875cfa5f7b5',1,'rapidjson::GenericPointer']]],
['stringref',['StringRef',['../structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5',1,'rapidjson::GenericStringRef::StringRef(const CharType *str)'],['../structrapidjson_1_1_generic_string_ref.html#a578c51ab574a50a9c760b9da7c7562f2',1,'rapidjson::GenericStringRef::StringRef(const CharType *str, size_t length)'],['../structrapidjson_1_1_generic_string_ref.html#af94951529a5d51e8c4e6e770bb707c1f',1,'rapidjson::GenericStringRef::StringRef(const std::basic_string&lt; CharType &gt; &amp;str)'],['../namespacerapidjson.html#aa6b9fd9f6aa49405a574c362ba9af6b5',1,'rapidjson::StringRef(const CharType *str)'],['../namespacerapidjson.html#a578c51ab574a50a9c760b9da7c7562f2',1,'rapidjson::StringRef(const CharType *str, size_t length)'],['../namespacerapidjson.html#af94951529a5d51e8c4e6e770bb707c1f',1,'rapidjson::StringRef(const std::basic_string&lt; CharType &gt; &amp;str)']]],
- ['swap',['Swap',['../classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db',1,'rapidjson::GenericValue::Swap()'],['../classrapidjson_1_1_generic_document.html#abf1cbab989b856f9d260787b2575750b',1,'rapidjson::GenericDocument::Swap()'],['../classrapidjson_1_1_generic_pointer.html#aaaa5b0ecdfa6af45e7dabc1987c87cac',1,'rapidjson::GenericPointer::Swap(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const '],['../classrapidjson_1_1_generic_pointer.html#ad9f28da15453d91c3669618a6f48bfcc',1,'rapidjson::GenericPointer::Swap(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const ']]]
+ ['swap',['Swap',['../classrapidjson_1_1_generic_value.html#a06f10ef54f5692ce08206c26624a21db',1,'rapidjson::GenericValue::Swap()'],['../classrapidjson_1_1_generic_document.html#abf1cbab989b856f9d260787b2575750b',1,'rapidjson::GenericDocument::Swap()'],['../classrapidjson_1_1_generic_pointer.html#a4690cd1d6c85168ebd2ce0afe186a4fa',1,'rapidjson::GenericPointer::Swap(ValueType &amp;root, ValueType &amp;value, typename ValueType::AllocatorType &amp;allocator) const'],['../classrapidjson_1_1_generic_pointer.html#a29d7ee42eb5646f829aeca6c6989555a',1,'rapidjson::GenericPointer::Swap(GenericDocument&lt; EncodingType, typename ValueType::AllocatorType, stackAllocator &gt; &amp;document, ValueType &amp;value) const']]]
];
diff --git a/zh-cn/search/functions_e.html b/zh-cn/search/functions_e.html
index 8e1899d3..fe939678 100644
--- a/zh-cn/search/functions_e.html
+++ b/zh-cn/search/functions_e.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_e.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/functions_f.html b/zh-cn/search/functions_f.html
index 28e760f3..ecdb26e5 100644
--- a/zh-cn/search/functions_f.html
+++ b/zh-cn/search/functions_f.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="functions_f.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/groups_0.html b/zh-cn/search/groups_0.html
index 16277a8a..b725b944 100644
--- a/zh-cn/search/groups_0.html
+++ b/zh-cn/search/groups_0.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="groups_0.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/namespaces_0.html b/zh-cn/search/namespaces_0.html
index a314902e..8795ca13 100644
--- a/zh-cn/search/namespaces_0.html
+++ b/zh-cn/search/namespaces_0.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="namespaces_0.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/pages_0.html b/zh-cn/search/pages_0.html
index d3405cac..d8966525 100644
--- a/zh-cn/search/pages_0.html
+++ b/zh-cn/search/pages_0.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="pages_0.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/pages_1.html b/zh-cn/search/pages_1.html
index 5c50a42d..fefc8b5b 100644
--- a/zh-cn/search/pages_1.html
+++ b/zh-cn/search/pages_1.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="pages_1.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/pages_2.html b/zh-cn/search/pages_2.html
index 5c54d6a9..1878a58f 100644
--- a/zh-cn/search/pages_2.html
+++ b/zh-cn/search/pages_2.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="pages_2.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/pages_3.html b/zh-cn/search/pages_3.html
index 359f569a..35ccc33b 100644
--- a/zh-cn/search/pages_3.html
+++ b/zh-cn/search/pages_3.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="pages_3.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/pages_4.html b/zh-cn/search/pages_4.html
index 60d27cdd..5de79ee2 100644
--- a/zh-cn/search/pages_4.html
+++ b/zh-cn/search/pages_4.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="pages_4.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/pages_5.html b/zh-cn/search/pages_5.html
index 0ddc6ca7..667655ca 100644
--- a/zh-cn/search/pages_5.html
+++ b/zh-cn/search/pages_5.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="pages_5.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/pages_6.html b/zh-cn/search/pages_6.html
index eff606dd..3f015135 100644
--- a/zh-cn/search/pages_6.html
+++ b/zh-cn/search/pages_6.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="pages_6.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/related_0.html b/zh-cn/search/related_0.html
index afab6ecd..66239f98 100644
--- a/zh-cn/search/related_0.html
+++ b/zh-cn/search/related_0.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="related_0.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/related_1.html b/zh-cn/search/related_1.html
index 47ae26e7..9fe1f206 100644
--- a/zh-cn/search/related_1.html
+++ b/zh-cn/search/related_1.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="related_1.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/search.css b/zh-cn/search/search.css
index f8e2a8b0..a0dba441 100644
--- a/zh-cn/search/search.css
+++ b/zh-cn/search/search.css
@@ -6,14 +6,14 @@
#MSearchBox {
white-space : nowrap;
- position: absolute;
float: none;
- display: inline;
margin-top: 0px;
right: 0px;
width: 170px;
+ height: 24px;
z-index: 102;
- background-color: white;
+ display: inline;
+ position: absolute;
}
#MSearchBox .left
@@ -54,6 +54,7 @@
color: #909090;
outline: none;
font: 9pt Arial, Verdana, sans-serif;
+ -webkit-border-radius: 0px;
}
#FSearchBox #MSearchField {
@@ -102,7 +103,7 @@
left: 0; top: 0;
border: 1px solid #90A5CE;
background-color: #F9FAFC;
- z-index: 1;
+ z-index: 10001;
padding-top: 4px;
padding-bottom: 4px;
-moz-border-radius: 4px;
@@ -165,6 +166,7 @@ iframe#MSearchResults {
left: 0; top: 0;
border: 1px solid #000;
background-color: #EEF1F7;
+ z-index:10000;
}
/* ----------------------------------- */
diff --git a/zh-cn/search/search.js b/zh-cn/search/search.js
index 1b27ce41..dedce3bf 100644
--- a/zh-cn/search/search.js
+++ b/zh-cn/search/search.js
@@ -1,44 +1,3 @@
-// Search script generated by doxygen
-// Copyright (C) 2009 by Dimitri van Heesch.
-
-// The code in this file is loosly based on main.js, part of Natural Docs,
-// which is Copyright (C) 2003-2008 Greg Valure
-// Natural Docs is licensed under the GPL.
-
-var indexSectionsWithContent =
-{
- 0: "abcdefghiklmnoprstuvw~åæç",
- 1: "abcefghilmpstuw",
- 2: "r",
- 3: "der",
- 4: "abcdefghimoprstvw~",
- 5: "behiklnsv",
- 6: "abcdegimnprsv",
- 7: "ptuw",
- 8: "k",
- 9: "os",
- 10: "r",
- 11: "r",
- 12: "cdpsåæç"
-};
-
-var indexSectionNames =
-{
- 0: "all",
- 1: "classes",
- 2: "namespaces",
- 3: "files",
- 4: "functions",
- 5: "variables",
- 6: "typedefs",
- 7: "enums",
- 8: "enumvalues",
- 9: "related",
- 10: "defines",
- 11: "groups",
- 12: "pages"
-};
-
function convertToId(search)
{
var result = '';
@@ -50,11 +9,11 @@ function convertToId(search)
{
result+=c;
}
- else if (cn<16)
+ else if (cn<16)
{
result+="_0"+cn.toString(16);
}
- else
+ else
{
result+="_"+cn.toString(16);
}
@@ -93,14 +52,14 @@ function getYPos(item)
/* A class handling everything associated with the search panel.
Parameters:
- name - The name of the global variable that will be
+ name - The name of the global variable that will be
storing this instance. Is needed to be able to set timeouts.
resultPath - path to use for external files
*/
function SearchBox(name, resultsPath, inFrame, label)
{
if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
-
+
// ---------- Instance variables
this.name = name;
this.resultsPath = resultsPath;
@@ -177,7 +136,7 @@ function SearchBox(name, resultsPath, inFrame, label)
}
// stop selection hide timer
- if (this.hideTimeout)
+ if (this.hideTimeout)
{
clearTimeout(this.hideTimeout);
this.hideTimeout=0;
@@ -206,7 +165,7 @@ function SearchBox(name, resultsPath, inFrame, label)
if (e.shiftKey==1)
{
this.OnSearchSelectShow();
- var win=this.DOMSearchSelectWindow();
+ var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
@@ -257,7 +216,7 @@ function SearchBox(name, resultsPath, inFrame, label)
this.SelectItemCount = function(id)
{
var count=0;
- var win=this.DOMSearchSelectWindow();
+ var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
@@ -272,7 +231,7 @@ function SearchBox(name, resultsPath, inFrame, label)
this.SelectItemSet = function(id)
{
var i,j=0;
- var win=this.DOMSearchSelectWindow();
+ var win=this.DOMSearchSelectWindow();
for (i=0;i<win.childNodes.length;i++)
{
var child = win.childNodes[i]; // get span within a
@@ -376,7 +335,7 @@ function SearchBox(name, resultsPath, inFrame, label)
hasResultsPage = false;
}
- window.frames.MSearchResults.location = resultsPageWithSearch;
+ window.frames.MSearchResults.location = resultsPageWithSearch;
var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
if (domPopupSearchResultsWindow.style.display!='block')
@@ -410,12 +369,12 @@ function SearchBox(name, resultsPath, inFrame, label)
// -------- Activation Functions
- // Activates or deactivates the search panel, resetting things to
- // their default values if necessary.
+ // Activates or deactivates the search panel, resetting things to
+ // their default values if necessary.
this.Activate = function(isActive)
{
if (isActive || // open it
- this.DOMPopupSearchResultsWindow().style.display == 'block'
+ this.DOMPopupSearchResultsWindow().style.display == 'block'
)
{
this.DOMSearchBox().className = 'MSearchBoxActive';
@@ -423,8 +382,8 @@ function SearchBox(name, resultsPath, inFrame, label)
var searchField = this.DOMSearchField();
if (searchField.value == this.searchLabel) // clear "Search" term upon entry
- {
- searchField.value = '';
+ {
+ searchField.value = '';
this.searchActive = true;
}
}
@@ -463,12 +422,12 @@ function SearchResults(name)
}
if (element.nodeName == 'DIV' && element.hasChildNodes())
- {
- element = element.firstChild;
+ {
+ element = element.firstChild;
}
else if (element.nextSibling)
- {
- element = element.nextSibling;
+ {
+ element = element.nextSibling;
}
else
{
@@ -479,8 +438,8 @@ function SearchResults(name)
while (element && element!=parentElement && !element.nextSibling);
if (element && element!=parentElement)
- {
- element = element.nextSibling;
+ {
+ element = element.nextSibling;
}
}
}
@@ -533,7 +492,7 @@ function SearchResults(name)
var rowMatchName = row.id.toLowerCase();
rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
- if (search.length<=rowMatchName.length &&
+ if (search.length<=rowMatchName.length &&
rowMatchName.substr(0, search.length)==search)
{
row.style.display = 'block';
@@ -604,7 +563,7 @@ function SearchResults(name)
this.ProcessKeys = function(e)
{
- if (e.type == "keydown")
+ if (e.type == "keydown")
{
this.repeatOn = false;
this.lastKey = e.keyCode;
@@ -625,7 +584,7 @@ function SearchResults(name)
return this.lastKey!=0;
}
- this.Nav = function(evt,itemIndex)
+ this.Nav = function(evt,itemIndex)
{
var e = (evt) ? evt : window.event; // for IE
if (e.keyCode==13) return true;
@@ -639,7 +598,7 @@ function SearchResults(name)
{
var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
if (child && child.style.display == 'block') // children visible
- {
+ {
var n=0;
var tmpElem;
while (1) // search for last child
@@ -732,7 +691,7 @@ function SearchResults(name)
if (elem)
{
elem.focus();
- }
+ }
}
else if (this.lastKey==27) // Escape
{
@@ -815,3 +774,18 @@ function createResults()
}
}
+function init_search()
+{
+ var results = document.getElementById("MSearchSelectWindow");
+ for (var key in indexSectionLabels)
+ {
+ var link = document.createElement('a');
+ link.setAttribute('class','SelectItem');
+ link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
+ link.href='javascript:void(0)';
+ link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
+ results.appendChild(link);
+ }
+ searchBox.OnSelectItem(0);
+}
+
diff --git a/zh-cn/search/searchdata.js b/zh-cn/search/searchdata.js
new file mode 100644
index 00000000..6b341d3e
--- /dev/null
+++ b/zh-cn/search/searchdata.js
@@ -0,0 +1,51 @@
+var indexSectionsWithContent =
+{
+ 0: "abcdefghiklmnoprstuvw~åæç",
+ 1: "abcefghilmpstuw",
+ 2: "r",
+ 3: "der",
+ 4: "abcdefghimoprstvw~",
+ 5: "behiklnsv",
+ 6: "abcdegimnprsv",
+ 7: "ptuw",
+ 8: "k",
+ 9: "os",
+ 10: "r",
+ 11: "r",
+ 12: "cdpsåæç"
+};
+
+var indexSectionNames =
+{
+ 0: "all",
+ 1: "classes",
+ 2: "namespaces",
+ 3: "files",
+ 4: "functions",
+ 5: "variables",
+ 6: "typedefs",
+ 7: "enums",
+ 8: "enumvalues",
+ 9: "related",
+ 10: "defines",
+ 11: "groups",
+ 12: "pages"
+};
+
+var indexSectionLabels =
+{
+ 0: "全部",
+ 1: "类",
+ 2: "命名空间",
+ 3: "文件",
+ 4: "函数",
+ 5: "变量",
+ 6: "类型定义",
+ 7: "枚举",
+ 8: "枚举值",
+ 9: "友元",
+ 10: "宏定义",
+ 11: "组",
+ 12: "页"
+};
+
diff --git a/zh-cn/search/typedefs_0.html b/zh-cn/search/typedefs_0.html
index 1f8713ba..41796d25 100644
--- a/zh-cn/search/typedefs_0.html
+++ b/zh-cn/search/typedefs_0.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="typedefs_0.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/typedefs_1.html b/zh-cn/search/typedefs_1.html
index 7ccc3c4a..ee80c808 100644
--- a/zh-cn/search/typedefs_1.html
+++ b/zh-cn/search/typedefs_1.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="typedefs_1.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/typedefs_1.js b/zh-cn/search/typedefs_1.js
index 03d26d0b..ac73a3fd 100644
--- a/zh-cn/search/typedefs_1.js
+++ b/zh-cn/search/typedefs_1.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['booleantype',['BooleanType',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#a59558cbb7ba917a1c3924d83ed2da0d9',1,'rapidjson::ParseResult']]]
+ ['booleantype',['BooleanType',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#aff2daa285445bba8f76578ea274e34a3',1,'rapidjson::ParseResult']]]
];
diff --git a/zh-cn/search/typedefs_2.html b/zh-cn/search/typedefs_2.html
index fa6669bc..99fcdfd0 100644
--- a/zh-cn/search/typedefs_2.html
+++ b/zh-cn/search/typedefs_2.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="typedefs_2.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/typedefs_3.html b/zh-cn/search/typedefs_3.html
index 3d2f5002..d8544755 100644
--- a/zh-cn/search/typedefs_3.html
+++ b/zh-cn/search/typedefs_3.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="typedefs_3.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/typedefs_4.html b/zh-cn/search/typedefs_4.html
index 287d4dee..ec2abec7 100644
--- a/zh-cn/search/typedefs_4.html
+++ b/zh-cn/search/typedefs_4.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="typedefs_4.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/typedefs_5.html b/zh-cn/search/typedefs_5.html
index f3961536..34fe3684 100644
--- a/zh-cn/search/typedefs_5.html
+++ b/zh-cn/search/typedefs_5.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="typedefs_5.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/typedefs_5.js b/zh-cn/search/typedefs_5.js
index e22daade..5f764035 100644
--- a/zh-cn/search/typedefs_5.js
+++ b/zh-cn/search/typedefs_5.js
@@ -1,4 +1,4 @@
var searchData=
[
- ['getparseerrorfunc',['GetParseErrorFunc',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#ga4e77e464ec8abe1111ee581fc2cb00de',1,'rapidjson']]]
+ ['getparseerrorfunc',['GetParseErrorFunc',['../group___r_a_p_i_d_j_s_o_n___e_r_r_o_r_s.html#gac1bee7fdafeba5a85c27943fcde12882',1,'rapidjson']]]
];
diff --git a/zh-cn/search/typedefs_6.html b/zh-cn/search/typedefs_6.html
index 0c22597f..413ef108 100644
--- a/zh-cn/search/typedefs_6.html
+++ b/zh-cn/search/typedefs_6.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="typedefs_6.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/typedefs_7.html b/zh-cn/search/typedefs_7.html
index 0d926ca4..92050e22 100644
--- a/zh-cn/search/typedefs_7.html
+++ b/zh-cn/search/typedefs_7.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="typedefs_7.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/typedefs_8.html b/zh-cn/search/typedefs_8.html
index 602ff6ee..3e34128d 100644
--- a/zh-cn/search/typedefs_8.html
+++ b/zh-cn/search/typedefs_8.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="typedefs_8.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/typedefs_9.html b/zh-cn/search/typedefs_9.html
index 83d2f0eb..7593ef46 100644
--- a/zh-cn/search/typedefs_9.html
+++ b/zh-cn/search/typedefs_9.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="typedefs_9.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/typedefs_a.html b/zh-cn/search/typedefs_a.html
index b4745f11..f01d64cf 100644
--- a/zh-cn/search/typedefs_a.html
+++ b/zh-cn/search/typedefs_a.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="typedefs_a.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/typedefs_b.html b/zh-cn/search/typedefs_b.html
index 61bee95b..5c754f67 100644
--- a/zh-cn/search/typedefs_b.html
+++ b/zh-cn/search/typedefs_b.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="typedefs_b.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/typedefs_c.html b/zh-cn/search/typedefs_c.html
index 6aa9abe2..a28af561 100644
--- a/zh-cn/search/typedefs_c.html
+++ b/zh-cn/search/typedefs_c.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="typedefs_c.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/variables_0.html b/zh-cn/search/variables_0.html
index 0c8e4c65..1483892f 100644
--- a/zh-cn/search/variables_0.html
+++ b/zh-cn/search/variables_0.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_0.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/variables_1.html b/zh-cn/search/variables_1.html
index 13aafc9d..3944a6ef 100644
--- a/zh-cn/search/variables_1.html
+++ b/zh-cn/search/variables_1.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_1.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/variables_2.html b/zh-cn/search/variables_2.html
index c7a843ba..f60548e3 100644
--- a/zh-cn/search/variables_2.html
+++ b/zh-cn/search/variables_2.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_2.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/variables_3.html b/zh-cn/search/variables_3.html
index 536fbf9e..ed54562b 100644
--- a/zh-cn/search/variables_3.html
+++ b/zh-cn/search/variables_3.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_3.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/variables_4.html b/zh-cn/search/variables_4.html
index 26fe8331..d2c7fcfb 100644
--- a/zh-cn/search/variables_4.html
+++ b/zh-cn/search/variables_4.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_4.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/variables_5.html b/zh-cn/search/variables_5.html
index fe4c3f0e..526ff88b 100644
--- a/zh-cn/search/variables_5.html
+++ b/zh-cn/search/variables_5.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_5.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/variables_6.html b/zh-cn/search/variables_6.html
index f2f38232..714f0729 100644
--- a/zh-cn/search/variables_6.html
+++ b/zh-cn/search/variables_6.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_6.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/variables_7.html b/zh-cn/search/variables_7.html
index e4f943b0..11b73229 100644
--- a/zh-cn/search/variables_7.html
+++ b/zh-cn/search/variables_7.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_7.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/search/variables_8.html b/zh-cn/search/variables_8.html
index 51cd6cfc..87483dea 100644
--- a/zh-cn/search/variables_8.html
+++ b/zh-cn/search/variables_8.html
@@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="variables_8.js"></script>
<script type="text/javascript" src="search.js"></script>
diff --git a/zh-cn/ftv2splitbar.png b/zh-cn/splitbar.png
index fe895f2c..fe895f2c 100644
--- a/zh-cn/ftv2splitbar.png
+++ b/zh-cn/splitbar.png
Binary files differ
diff --git a/zh-cn/stack_8h_source.html b/zh-cn/stack_8h_source.html
index 40a8e5dd..45ef9b28 100644
--- a/zh-cn/stack_8h_source.html
+++ b/zh-cn/stack_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/internal/stack.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('stack_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,238 +81,7 @@ $(document).ready(function(){initNavTree('stack_8h_source.html','');});
<div class="title">stack.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_INTERNAL_STACK_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_INTERNAL_STACK_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../allocators.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;swap.h&quot;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(c++98-compat)</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"></span><span class="comment">// Stack</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">//! A type-unsafe stack for storing different types of data.</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span><span class="comment">/*! \tparam Allocator Allocator for allocating stack memory.</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">class </span>Stack {</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// Optimization note: Do not allocate memory for stack_ in constructor.</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">// Do it lazily when first Push() -&gt; Expand() -&gt; Resize().</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; Stack(Allocator* allocator, <span class="keywordtype">size_t</span> stackCapacity) : allocator_(allocator), ownAllocator_(0), stack_(0), stackTop_(0), stackEnd_(0), initialCapacity_(stackCapacity) {</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; Stack(Stack&amp;&amp; rhs)</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; : allocator_(rhs.allocator_),</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; ownAllocator_(rhs.ownAllocator_),</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; stack_(rhs.stack_),</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; stackTop_(rhs.stackTop_),</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; stackEnd_(rhs.stackEnd_),</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; initialCapacity_(rhs.initialCapacity_)</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; rhs.allocator_ = 0;</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; rhs.ownAllocator_ = 0;</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; rhs.stack_ = 0;</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; rhs.stackTop_ = 0;</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; rhs.stackEnd_ = 0;</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; rhs.initialCapacity_ = 0;</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; ~Stack() {</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; Destroy();</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; Stack&amp; operator=(Stack&amp;&amp; rhs) {</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span> (&amp;rhs != <span class="keyword">this</span>)</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; Destroy();</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; allocator_ = rhs.allocator_;</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; ownAllocator_ = rhs.ownAllocator_;</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; stack_ = rhs.stack_;</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; stackTop_ = rhs.stackTop_;</div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; stackEnd_ = rhs.stackEnd_;</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; initialCapacity_ = rhs.initialCapacity_;</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; rhs.allocator_ = 0;</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; rhs.ownAllocator_ = 0;</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; rhs.stack_ = 0;</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; rhs.stackTop_ = 0;</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; rhs.stackEnd_ = 0;</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; rhs.initialCapacity_ = 0;</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">void</span> Swap(Stack&amp; rhs) RAPIDJSON_NOEXCEPT {</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; internal::Swap(allocator_, rhs.allocator_);</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; internal::Swap(ownAllocator_, rhs.ownAllocator_);</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; internal::Swap(stack_, rhs.stack_);</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; internal::Swap(stackTop_, rhs.stackTop_);</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; internal::Swap(stackEnd_, rhs.stackEnd_);</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; internal::Swap(initialCapacity_, rhs.initialCapacity_);</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">void</span> Clear() { stackTop_ = stack_; }</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">void</span> ShrinkToFit() { </div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (Empty()) {</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="comment">// If the stack is empty, completely deallocate the memory.</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; Allocator::Free(stack_);</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; stack_ = 0;</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; stackTop_ = 0;</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; stackEnd_ = 0;</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; Resize(GetSize());</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">// Optimization note: try to minimize the size of this function for force inline.</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">// Expansion is run very infrequently, so it is moved to another (probably non-inline) function.</span></div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> Reserve(<span class="keywordtype">size_t</span> count = 1) {</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// Expand the stack if needed</span></div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(stackTop_ + <span class="keyword">sizeof</span>(T) * count &gt; stackEnd_))</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; Expand&lt;T&gt;(count);</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; RAPIDJSON_FORCEINLINE T* Push(<span class="keywordtype">size_t</span> count = 1) {</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; Reserve&lt;T&gt;(count);</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> PushUnsafe&lt;T&gt;(count);</div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; RAPIDJSON_FORCEINLINE T* PushUnsafe(<span class="keywordtype">size_t</span> count = 1) {</div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(stackTop_);</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(stackTop_ + <span class="keyword">sizeof</span>(T) * count &lt;= stackEnd_);</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; T* ret = <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stackTop_);</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; stackTop_ += <span class="keyword">sizeof</span>(T) * count;</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> ret;</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; T* Pop(<span class="keywordtype">size_t</span> count) {</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(GetSize() &gt;= count * <span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; stackTop_ -= count * <span class="keyword">sizeof</span>(T);</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stackTop_);</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; T* Top() { </div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(GetSize() &gt;= <span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stackTop_ - <span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">const</span> T* Top()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(GetSize() &gt;= <span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stackTop_ - <span class="keyword">sizeof</span>(T));</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; T* End() { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stackTop_); }</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">const</span> T* End()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stackTop_); }</div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; T* Bottom() { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stack_); }</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> T* Bottom()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stack_); }</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordtype">bool</span> HasAllocator()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span> allocator_ != 0;</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; Allocator&amp; GetAllocator() {</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(allocator_);</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> *allocator_;</div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordtype">bool</span> Empty()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stackTop_ == stack_; }</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordtype">size_t</span> GetSize()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(stackTop_ - stack_); }</div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordtype">size_t</span> GetCapacity()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(stackEnd_ - stack_); }</div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordtype">void</span> Expand(<span class="keywordtype">size_t</span> count) {</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="comment">// Only expand the capacity if the current stack exists. Otherwise just create a stack with initial capacity.</span></div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordtype">size_t</span> newCapacity;</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (stack_ == 0) {</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span> (!allocator_)</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; ownAllocator_ = allocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(Allocator)();</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; newCapacity = initialCapacity_;</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; newCapacity = GetCapacity();</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; newCapacity += (newCapacity + 1) / 2;</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordtype">size_t</span> newSize = GetSize() + <span class="keyword">sizeof</span>(T) * count;</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> (newCapacity &lt; newSize)</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; newCapacity = newSize;</div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; Resize(newCapacity);</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">void</span> Resize(<span class="keywordtype">size_t</span> newCapacity) {</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> size = GetSize(); <span class="comment">// Backup the current size</span></div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; stack_ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(allocator_-&gt;Realloc(stack_, GetCapacity(), newCapacity));</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; stackTop_ = stack_ + size;</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; stackEnd_ = stack_ + newCapacity;</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordtype">void</span> Destroy() {</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; Allocator::Free(stack_);</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a>(ownAllocator_); <span class="comment">// Only delete if it is owned by the stack</span></div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; }</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="comment">// Prohibit copy constructor &amp; assignment operator.</span></div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; Stack(<span class="keyword">const</span> Stack&amp;);</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; Stack&amp; operator=(<span class="keyword">const</span> Stack&amp;);</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; Allocator* allocator_;</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; Allocator* ownAllocator_;</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordtype">char</span> *stack_;</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordtype">char</span> *stackTop_;</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordtype">char</span> *stackEnd_;</div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordtype">size_t</span> initialCapacity_;</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;};</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_STACK_H_</span></div>
-<div class="ttc" id="rapidjson_8h_html_abdc7cd7902748ffe6626d71c59a73c3b"><div class="ttname"><a href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a></div><div class="ttdeci">#define RAPIDJSON_NEW(TypeName)</div><div class="ttdoc">! customization point for global new </div><div class="ttdef"><b>Definition:</b> rapidjson.h:599</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_INTERNAL_STACK_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_INTERNAL_STACK_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../allocators.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;swap.h&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_DIAG_OFF(c++98-compat)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"></span><span class="comment">// Stack</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">//! A type-unsafe stack for storing different types of data.</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span><span class="comment">/*! \tparam Allocator Allocator for allocating stack memory.</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">class </span>Stack {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="comment">// Optimization note: Do not allocate memory for stack_ in constructor.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="comment">// Do it lazily when first Push() -&gt; Expand() -&gt; Resize().</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; Stack(Allocator* allocator, <span class="keywordtype">size_t</span> stackCapacity) : allocator_(allocator), ownAllocator_(0), stack_(0), stackTop_(0), stackEnd_(0), initialCapacity_(stackCapacity) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; Stack(Stack&amp;&amp; rhs)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; : allocator_(rhs.allocator_),</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; ownAllocator_(rhs.ownAllocator_),</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; stack_(rhs.stack_),</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; stackTop_(rhs.stackTop_),</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; stackEnd_(rhs.stackEnd_),</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; initialCapacity_(rhs.initialCapacity_)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; rhs.allocator_ = 0;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; rhs.ownAllocator_ = 0;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; rhs.stack_ = 0;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; rhs.stackTop_ = 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; rhs.stackEnd_ = 0;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; rhs.initialCapacity_ = 0;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; ~Stack() {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; Destroy();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; Stack&amp; operator=(Stack&amp;&amp; rhs) {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span> (&amp;rhs != <span class="keyword">this</span>)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; Destroy();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; allocator_ = rhs.allocator_;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; ownAllocator_ = rhs.ownAllocator_;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; stack_ = rhs.stack_;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; stackTop_ = rhs.stackTop_;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; stackEnd_ = rhs.stackEnd_;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; initialCapacity_ = rhs.initialCapacity_;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; rhs.allocator_ = 0;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; rhs.ownAllocator_ = 0;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; rhs.stack_ = 0;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; rhs.stackTop_ = 0;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; rhs.stackEnd_ = 0;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; rhs.initialCapacity_ = 0;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordtype">void</span> Swap(Stack&amp; rhs) RAPIDJSON_NOEXCEPT {</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; internal::Swap(allocator_, rhs.allocator_);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; internal::Swap(ownAllocator_, rhs.ownAllocator_);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; internal::Swap(stack_, rhs.stack_);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; internal::Swap(stackTop_, rhs.stackTop_);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; internal::Swap(stackEnd_, rhs.stackEnd_);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; internal::Swap(initialCapacity_, rhs.initialCapacity_);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordtype">void</span> Clear() { stackTop_ = stack_; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordtype">void</span> ShrinkToFit() { </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (Empty()) {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="comment">// If the stack is empty, completely deallocate the memory.</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; Allocator::Free(stack_);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; stack_ = 0;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; stackTop_ = 0;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; stackEnd_ = 0;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; Resize(GetSize());</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">// Optimization note: try to minimize the size of this function for force inline.</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">// Expansion is run very infrequently, so it is moved to another (probably non-inline) function.</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; RAPIDJSON_FORCEINLINE <span class="keywordtype">void</span> Reserve(<span class="keywordtype">size_t</span> count = 1) {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="comment">// Expand the stack if needed</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(stackTop_ + <span class="keyword">sizeof</span>(T) * count &gt; stackEnd_))</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; Expand&lt;T&gt;(count);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; RAPIDJSON_FORCEINLINE T* Push(<span class="keywordtype">size_t</span> count = 1) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; Reserve&lt;T&gt;(count);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> PushUnsafe&lt;T&gt;(count);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; RAPIDJSON_FORCEINLINE T* PushUnsafe(<span class="keywordtype">size_t</span> count = 1) {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(stackTop_);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(stackTop_ + <span class="keyword">sizeof</span>(T) * count &lt;= stackEnd_);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; T* ret = <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stackTop_);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; stackTop_ += <span class="keyword">sizeof</span>(T) * count;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; T* Pop(<span class="keywordtype">size_t</span> count) {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(GetSize() &gt;= count * <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; stackTop_ -= count * <span class="keyword">sizeof</span>(T);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stackTop_);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; T* Top() { </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(GetSize() &gt;= <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stackTop_ - <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">const</span> T* Top()<span class="keyword"> const </span>{</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(GetSize() &gt;= <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stackTop_ - <span class="keyword">sizeof</span>(T));</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; T* End() { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stackTop_); }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keyword">const</span> T* End()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stackTop_); }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; T* Bottom() { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stack_); }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">const</span> T* Bottom()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast&lt;</span>T*<span class="keyword">&gt;</span>(stack_); }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordtype">bool</span> HasAllocator()<span class="keyword"> const </span>{</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span> allocator_ != 0;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; Allocator&amp; GetAllocator() {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(allocator_);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> *allocator_;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordtype">bool</span> Empty()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stackTop_ == stack_; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordtype">size_t</span> GetSize()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(stackTop_ - stack_); }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordtype">size_t</span> GetCapacity()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(stackEnd_ - stack_); }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordtype">void</span> Expand(<span class="keywordtype">size_t</span> count) {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="comment">// Only expand the capacity if the current stack exists. Otherwise just create a stack with initial capacity.</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordtype">size_t</span> newCapacity;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">if</span> (stack_ == 0) {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span> (!allocator_)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; ownAllocator_ = allocator_ = <a class="code" href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a>(Allocator)();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; newCapacity = initialCapacity_;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; newCapacity = GetCapacity();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; newCapacity += (newCapacity + 1) / 2;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordtype">size_t</span> newSize = GetSize() + <span class="keyword">sizeof</span>(T) * count;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> (newCapacity &lt; newSize)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; newCapacity = newSize;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; Resize(newCapacity);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">void</span> Resize(<span class="keywordtype">size_t</span> newCapacity) {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keyword">const</span> <span class="keywordtype">size_t</span> size = GetSize(); <span class="comment">// Backup the current size</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; stack_ = <span class="keyword">static_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(allocator_-&gt;Realloc(stack_, GetCapacity(), newCapacity));</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; stackTop_ = stack_ + size;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; stackEnd_ = stack_ + newCapacity;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; }</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordtype">void</span> Destroy() {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; Allocator::Free(stack_);</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a>(ownAllocator_); <span class="comment">// Only delete if it is owned by the stack</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; }</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="comment">// Prohibit copy constructor &amp; assignment operator.</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; Stack(<span class="keyword">const</span> Stack&amp;);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; Stack&amp; operator=(<span class="keyword">const</span> Stack&amp;);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; Allocator* allocator_;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; Allocator* ownAllocator_;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordtype">char</span> *stack_;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordtype">char</span> *stackTop_;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordtype">char</span> *stackEnd_;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordtype">size_t</span> initialCapacity_;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;};</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_STACK_H_</span></div><div class="ttc" id="rapidjson_8h_html_abdc7cd7902748ffe6626d71c59a73c3b"><div class="ttname"><a href="rapidjson_8h.html#abdc7cd7902748ffe6626d71c59a73c3b">RAPIDJSON_NEW</a></div><div class="ttdeci">#define RAPIDJSON_NEW(TypeName)</div><div class="ttdoc">! customization point for global new </div><div class="ttdef"><b>Definition:</b> rapidjson.h:599</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_ga6a2b1695c13e77ae425e3cbac980ccb5"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a></div><div class="ttdeci">#define RAPIDJSON_UNLIKELY(x)</div><div class="ttdoc">Compiler branching hint for expression with low probability to be true. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:481</div></div>
<div class="ttc" id="rapidjson_8h_html_a52c941c3fdd646527cdcd42aa846a28a"><div class="ttname"><a href="rapidjson_8h.html#a52c941c3fdd646527cdcd42aa846a28a">RAPIDJSON_DELETE</a></div><div class="ttdeci">#define RAPIDJSON_DELETE(x)</div><div class="ttdoc">! customization point for global delete </div><div class="ttdef"><b>Definition:</b> rapidjson.h:603</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
@@ -321,7 +91,7 @@ $(document).ready(function(){initNavTree('stack_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5167ae66a3a40cb9e5e46c75b7477e81.html">internal</a></li><li class="navelem"><b>stack.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_8d7584a8244d286291cd37b99676a43b.html">internal</a></li><li class="navelem"><b>stack.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/stream_8h_source.html b/zh-cn/stream_8h_source.html
index 52976353..aeed93cf 100644
--- a/zh-cn/stream_8h_source.html
+++ b/zh-cn/stream_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/stream.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('stream_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,186 +81,7 @@ $(document).ready(function(){initNavTree('stream_8h_source.html','');});
<div class="title">stream.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rapidjson_8h.html">rapidjson.h</a>&quot;</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_STREAM_H_</span></div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define RAPIDJSON_STREAM_H_</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;encodings.h&quot;</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"></span><span class="comment">// Stream</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">/*! \class rapidjson::Stream</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> \brief Concept for reading and writing characters.</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> For read-only stream, no need to implement PutBegin(), Put(), Flush() and PutEnd().</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> For write-only stream, only need to implement Put() and Flush().</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">\code</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">concept Stream {</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> typename Ch; //!&lt; Character type of the stream.</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> //! Read the current character from stream without moving the read cursor.</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"></span> Ch Peek() const;</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> //! Read the current character from stream and moving the read cursor to next character.</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"></span> Ch Take();</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> //! Get the current read cursor.</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> //! \return Number of characters read from start.</span></div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"></span> size_t Tell();</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> //! Begin writing operation at the current read pointer.</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> //! \return The begin writer pointer.</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"></span> Ch* PutBegin();</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> //! Write a character.</span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"></span> void Put(Ch c);</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> //! Flush the buffer.</span></div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"></span> void Flush();</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> //! End the writing operation.</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> //! \param begin The begin write pointer returned by PutBegin().</span></div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> //! \return Number of characters written.</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"></span> size_t PutEnd(Ch* begin);</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;\endcode</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;*/</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">//! Provides additional information for stream.</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> By using traits pattern, this type provides a default configuration for stream.</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> For custom stream, this type can be specialized for other configuration.</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> See TEST(Reader, CustomStringStream) in readertest.cpp for example.</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stream&gt;</div>
-<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_stream_traits.html"> 73</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_stream_traits.html">StreamTraits</a> {<span class="comment"></span></div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> //! Whether to make local copy of stream for optimization during parsing.</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> By default, for safety, streams do not use local copy optimization.</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> Stream that can be copied fast should specialize this, like StreamTraits&lt;StringStream&gt;.</span></div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">enum</span> { copyOptimization = 0 };</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;};</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment">//! Reserve n characters for writing to a stream.</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stream&gt;</div>
-<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740"> 84</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(<a class="code" href="classrapidjson_1_1_stream.html">Stream</a>&amp; stream, <span class="keywordtype">size_t</span> count) {</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; (void)stream;</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; (void)count;</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;}</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">//! Write character to a stream, presuming buffer is reserved.</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stream&gt;</div>
-<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20"> 91</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(<a class="code" href="classrapidjson_1_1_stream.html">Stream</a>&amp; stream, <span class="keyword">typename</span> Stream::Ch c) {</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; stream.Put(c);</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;}</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment">//! Put N copies of a character to a stream.</span></div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stream, <span class="keyword">typename</span> Ch&gt;</div>
-<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a1d49d2cab617858b53a1db23b1759f43"> 97</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">PutN</a>(<a class="code" href="classrapidjson_1_1_stream.html">Stream</a>&amp; stream, Ch c, <span class="keywordtype">size_t</span> n) {</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(stream, n);</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; n; i++)</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(stream, c);</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;}</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"></span><span class="comment">// StringStream</span></div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment">//! Read-only string stream.</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"></span><span class="comment">/*! \note implements Stream concept</span></div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding&gt;</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keyword">struct </span>GenericStringStream {</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; GenericStringStream(<span class="keyword">const</span> Ch *src) : src_(src), head_(src) {}</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *src_; }</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; Ch Take() { <span class="keywordflow">return</span> *src_++; }</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(src_ - head_); }</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">void</span> Put(Ch) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">void</span> Flush() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div>
-<div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d"> 124</a></span>&#160; <span class="keyword">const</span> Ch* <a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a>; <span class="comment">//!&lt; Current read position.</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_stream.html#a2556705b0a0fd6393862efe6db025b32"> 125</a></span>&#160;<span class="comment"></span> <span class="keyword">const</span> Ch* <a class="code" href="structrapidjson_1_1_generic_string_stream.html#a2556705b0a0fd6393862efe6db025b32">head_</a>; <span class="comment">//!&lt; Original head of the string.</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"></span>};</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding&gt;</div>
-<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4.html"> 129</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_stream_traits.html">StreamTraits</a>&lt;<a class="code" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream</a>&lt;<a class="code" href="classrapidjson_1_1_encoding.html">Encoding</a>&gt; &gt; {</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">enum</span> { copyOptimization = 1 };</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;};</div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment">//! String stream with UTF8 encoding.</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream&lt;UTF8&lt;&gt;</a> &gt; <a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a>;</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"></span><span class="comment">// InsituStringStream</span></div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment">//! A read-write string stream.</span></div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"></span><span class="comment">/*! This string stream is particularly designed for in-situ parsing.</span></div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> \note implements Stream concept</span></div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding&gt;</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream</a> {</div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream</a>(Ch *src) : src_(src), dst_(0), head_(src) {}</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// Read</span></div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; Ch Peek() { <span class="keywordflow">return</span> *src_; }</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; Ch Take() { <span class="keywordflow">return</span> *src_++; }</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordtype">size_t</span> Tell() { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(src_ - head_); }</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// Write</span></div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordtype">void</span> Put(Ch c) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(dst_ != 0); *dst_++ = c; }</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; Ch* PutBegin() { <span class="keywordflow">return</span> dst_ = src_; }</div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch* begin) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(dst_ - begin); }</div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordtype">void</span> Flush() {}</div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; Ch* Push(<span class="keywordtype">size_t</span> count) { Ch* begin = dst_; dst_ += count; <span class="keywordflow">return</span> begin; }</div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordtype">void</span> Pop(<span class="keywordtype">size_t</span> count) { dst_ -= count; }</div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; Ch* src_;</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; Ch* dst_;</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; Ch* head_;</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;};</div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding&gt;</div>
-<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4.html"> 170</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_stream_traits.html">StreamTraits</a>&lt;<a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream</a>&lt;<a class="code" href="classrapidjson_1_1_encoding.html">Encoding</a>&gt; &gt; {</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">enum</span> { copyOptimization = 1 };</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;};</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment">//! Insitu string stream with UTF8 encoding.</span></div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream&lt;UTF8&lt;&gt;</a> &gt; <a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">InsituStringStream</a>;</div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_STREAM_H_</span></div>
-<div class="ttc" id="structrapidjson_1_1_generic_string_stream_html"><div class="ttname"><a href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream</a></div><div class="ttdoc">Read-only string stream. </div><div class="ttdef"><b>Definition:</b> fwd.h:47</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rapidjson_8h.html">rapidjson.h</a>&quot;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_STREAM_H_</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define RAPIDJSON_STREAM_H_</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;encodings.h&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"></span><span class="comment">// Stream</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">/*! \class rapidjson::Stream</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> \brief Concept for reading and writing characters.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> For read-only stream, no need to implement PutBegin(), Put(), Flush() and PutEnd().</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> For write-only stream, only need to implement Put() and Flush().</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">\code</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">concept Stream {</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> typename Ch; //!&lt; Character type of the stream.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> //! Read the current character from stream without moving the read cursor.</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"></span> Ch Peek() const;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> //! Read the current character from stream and moving the read cursor to next character.</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"></span> Ch Take();</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> //! Get the current read cursor.</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> //! \return Number of characters read from start.</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"></span> size_t Tell();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> //! Begin writing operation at the current read pointer.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> //! \return The begin writer pointer.</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"></span> Ch* PutBegin();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> //! Write a character.</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"></span> void Put(Ch c);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> //! Flush the buffer.</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"></span> void Flush();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> //! End the writing operation.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> //! \param begin The begin write pointer returned by PutBegin().</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> //! \return Number of characters written.</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment"></span> size_t PutEnd(Ch* begin);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;}</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;\endcode</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;*/</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">//! Provides additional information for stream.</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment"> By using traits pattern, this type provides a default configuration for stream.</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> For custom stream, this type can be specialized for other configuration.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> See TEST(Reader, CustomStringStream) in readertest.cpp for example.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stream&gt;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_stream_traits.html"> 73</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_stream_traits.html">StreamTraits</a> {<span class="comment"></span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> //! Whether to make local copy of stream for optimization during parsing.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> By default, for safety, streams do not use local copy optimization.</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> Stream that can be copied fast should specialize this, like StreamTraits&lt;StringStream&gt;.</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">enum</span> { copyOptimization = 0 };</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;};</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment">//! Reserve n characters for writing to a stream.</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stream&gt;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740"> 84</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(<a class="code" href="classrapidjson_1_1_stream.html">Stream</a>&amp; stream, <span class="keywordtype">size_t</span> count) {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; (void)stream;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; (void)count;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;}</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">//! Write character to a stream, presuming buffer is reserved.</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stream&gt;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20"> 91</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(<a class="code" href="classrapidjson_1_1_stream.html">Stream</a>&amp; stream, <span class="keyword">typename</span> Stream::Ch c) {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; stream.Put(c);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;}</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment">//! Put N copies of a character to a stream.</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Stream, <span class="keyword">typename</span> Ch&gt;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a1d49d2cab617858b53a1db23b1759f43"> 97</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">PutN</a>(<a class="code" href="classrapidjson_1_1_stream.html">Stream</a>&amp; stream, Ch c, <span class="keywordtype">size_t</span> n) {</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(stream, n);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; n; i++)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(stream, c);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;}</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"></span><span class="comment">// StringStream</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment">//! Read-only string stream.</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment"></span><span class="comment">/*! \note implements Stream concept</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding&gt;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream</a> {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream</a>(<span class="keyword">const</span> Ch *src) : src_(src), head_(src) {}</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; Ch Peek()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *src_; }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; Ch Take() { <span class="keywordflow">return</span> *src_++; }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordtype">size_t</span> Tell()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(src_ - head_); }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; Ch* PutBegin() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordtype">void</span> Put(Ch) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordtype">void</span> Flush() { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); }</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch*) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(<span class="keyword">false</span>); <span class="keywordflow">return</span> 0; }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d"> 124</a></span>&#160; <span class="keyword">const</span> Ch* <a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a>; <span class="comment">//!&lt; Current read position.</span></div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_generic_string_stream.html#a2556705b0a0fd6393862efe6db025b32"> 125</a></span>&#160;<span class="comment"></span> <span class="keyword">const</span> Ch* <a class="code" href="structrapidjson_1_1_generic_string_stream.html#a2556705b0a0fd6393862efe6db025b32">head_</a>; <span class="comment">//!&lt; Original head of the string.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"></span>};</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding&gt;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4.html"> 129</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_stream_traits.html">StreamTraits</a>&lt;<a class="code" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream</a>&lt;<a class="code" href="classrapidjson_1_1_encoding.html">Encoding</a>&gt; &gt; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">enum</span> { copyOptimization = 1 };</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;};</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment">//! String stream with UTF8 encoding.</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream&lt;UTF8&lt;&gt;</a> &gt; <a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment"></span><span class="comment">// InsituStringStream</span></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment">//! A read-write string stream.</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"></span><span class="comment">/*! This string stream is particularly designed for in-situ parsing.</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> \note implements Stream concept</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding&gt;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream</a> {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream</a>(Ch *src) : src_(src), dst_(0), head_(src) {}</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// Read</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; Ch Peek() { <span class="keywordflow">return</span> *src_; }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; Ch Take() { <span class="keywordflow">return</span> *src_++; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordtype">size_t</span> Tell() { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(src_ - head_); }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="comment">// Write</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordtype">void</span> Put(Ch c) { <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(dst_ != 0); *dst_++ = c; }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; Ch* PutBegin() { <span class="keywordflow">return</span> dst_ = src_; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordtype">size_t</span> PutEnd(Ch* begin) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(dst_ - begin); }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordtype">void</span> Flush() {}</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; Ch* Push(<span class="keywordtype">size_t</span> count) { Ch* begin = dst_; dst_ += count; <span class="keywordflow">return</span> begin; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordtype">void</span> Pop(<span class="keywordtype">size_t</span> count) { dst_ -= count; }</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; Ch* src_;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; Ch* dst_;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; Ch* head_;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;};</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding&gt;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4.html"> 170</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_stream_traits.html">StreamTraits</a>&lt;<a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream</a>&lt;<a class="code" href="classrapidjson_1_1_encoding.html">Encoding</a>&gt; &gt; {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">enum</span> { copyOptimization = 1 };</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;};</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment">//! Insitu string stream with UTF8 encoding.</span></div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">GenericInsituStringStream&lt;UTF8&lt;&gt;</a> &gt; <a class="code" href="structrapidjson_1_1_generic_insitu_string_stream.html">InsituStringStream</a>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_STREAM_H_</span></div><div class="ttc" id="structrapidjson_1_1_generic_string_stream_html"><div class="ttname"><a href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream</a></div><div class="ttdoc">Read-only string stream. </div><div class="ttdef"><b>Definition:</b> fwd.h:47</div></div>
<div class="ttc" id="namespacerapidjson_html_a820f77efccfbb749bd15fe4822d2c740"><div class="ttname"><a href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">rapidjson::PutReserve</a></div><div class="ttdeci">void PutReserve(Stream &amp;stream, size_t count)</div><div class="ttdoc">Reserve n characters for writing to a stream. </div><div class="ttdef"><b>Definition:</b> stream.h:84</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_string_stream_html_a2556705b0a0fd6393862efe6db025b32"><div class="ttname"><a href="structrapidjson_1_1_generic_string_stream.html#a2556705b0a0fd6393862efe6db025b32">rapidjson::GenericStringStream::head_</a></div><div class="ttdeci">const Ch * head_</div><div class="ttdoc">Original head of the string. </div><div class="ttdef"><b>Definition:</b> stream.h:125</div></div>
<div class="ttc" id="structrapidjson_1_1_generic_string_stream_html_a9a38a9d5b1ce782cacd4ec1bdf87fc2d"><div class="ttname"><a href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">rapidjson::GenericStringStream::src_</a></div><div class="ttdeci">const Ch * src_</div><div class="ttdoc">Current read position. </div><div class="ttdef"><b>Definition:</b> stream.h:124</div></div>
@@ -277,7 +99,7 @@ $(document).ready(function(){initNavTree('stream_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>stream.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>stream.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/strfunc_8h_source.html b/zh-cn/strfunc_8h_source.html
index be17e8bc..96efb5eb 100644
--- a/zh-cn/strfunc_8h_source.html
+++ b/zh-cn/strfunc_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/internal/strfunc.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('strfunc_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,76 +81,7 @@ $(document).ready(function(){initNavTree('strfunc_8h_source.html','');});
<div class="title">strfunc.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_INTERNAL_STRFUNC_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_INTERNAL_STRFUNC_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../stream.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;cwchar&gt;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">//! Custom strlen() which works on different character types.</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"></span><span class="comment">/*! \tparam Ch Character type (e.g. char, wchar_t, short)</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> \param s Null-terminated input string.</span></div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> \return Number of characters in the string. </span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> \note This has the same semantics as strlen(), the return value is not number of Unicode codepoints.</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ch&gt;</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">inline</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> StrLen(<span class="keyword">const</span> Ch* s) {</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(s != 0);</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> Ch* p = s;</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">while</span> (*p) ++p;</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(p - s);</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;}</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">template</span> &lt;&gt;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">inline</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> StrLen(<span class="keyword">const</span> <span class="keywordtype">char</span>* s) {</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(std::strlen(s));</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;}</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">template</span> &lt;&gt;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">inline</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> StrLen(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* s) {</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(std::wcslen(s));</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">//! Returns number of code points in a encoded string.</span></div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Encoding&gt;</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keywordtype">bool</span> CountStringCodePoint(<span class="keyword">const</span> <span class="keyword">typename</span> Encoding::Ch* s, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>* outCount) {</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(s != 0);</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(outCount != 0);</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; GenericStringStream&lt;Encoding&gt; is(s);</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <span class="keyword">typename</span> Encoding::Ch* end = s + length;</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count = 0;</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">while</span> (is.src_ &lt; end) {</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span> (!Encoding::Decode(is, &amp;codepoint))</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; count++;</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; *outCount = count;</div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_INTERNAL_STRFUNC_H_</span></div>
-<div class="ttc" id="namespacerapidjson_html_a44eb33eaa523e36d466b1ced64b85c84"><div class="ttname"><a href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">rapidjson::SizeType</a></div><div class="ttdeci">unsigned SizeType</div><div class="ttdoc">Size type (for string lengths, array sizes, etc.) </div><div class="ttdef"><b>Definition:</b> rapidjson.h:389</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_INTERNAL_STRFUNC_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_INTERNAL_STRFUNC_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../stream.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;cwchar&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">//! Custom strlen() which works on different character types.</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"></span><span class="comment">/*! \tparam Ch Character type (e.g. char, wchar_t, short)</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> \param s Null-terminated input string.</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> \return Number of characters in the string. </span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> \note This has the same semantics as strlen(), the return value is not number of Unicode codepoints.</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Ch&gt;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">inline</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> StrLen(<span class="keyword">const</span> Ch* s) {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(s != 0);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">const</span> Ch* p = s;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordflow">while</span> (*p) ++p;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(p - s);</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;}</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">inline</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> StrLen(<span class="keyword">const</span> <span class="keywordtype">char</span>* s) {</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(std::strlen(s));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;}</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">template</span> &lt;&gt;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">inline</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> StrLen(<span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* s) {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(std::wcslen(s));</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;}</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">//! Returns number of code points in a encoded string.</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;<span class="keyword">typename</span> Encoding&gt;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keywordtype">bool</span> CountStringCodePoint(<span class="keyword">const</span> <span class="keyword">typename</span> Encoding::Ch* s, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>* outCount) {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(s != 0);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(outCount != 0);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; GenericStringStream&lt;Encoding&gt; is(s);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <span class="keyword">typename</span> Encoding::Ch* end = s + length;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> count = 0;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">while</span> (is.src_ &lt; end) {</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">if</span> (!Encoding::Decode(is, &amp;codepoint))</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; count++;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; *outCount = count;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_INTERNAL_STRFUNC_H_</span></div><div class="ttc" id="namespacerapidjson_html_a44eb33eaa523e36d466b1ced64b85c84"><div class="ttname"><a href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">rapidjson::SizeType</a></div><div class="ttdeci">unsigned SizeType</div><div class="ttdoc">Size type (for string lengths, array sizes, etc.) </div><div class="ttdef"><b>Definition:</b> rapidjson.h:389</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
@@ -157,7 +89,7 @@ $(document).ready(function(){initNavTree('strfunc_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5167ae66a3a40cb9e5e46c75b7477e81.html">internal</a></li><li class="navelem"><b>strfunc.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_8d7584a8244d286291cd37b99676a43b.html">internal</a></li><li class="navelem"><b>strfunc.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/stringbuffer_8h_source.html b/zh-cn/stringbuffer_8h_source.html
index 5730e091..1554a3b1 100644
--- a/zh-cn/stringbuffer_8h_source.html
+++ b/zh-cn/stringbuffer_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/stringbuffer.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('stringbuffer_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,140 +81,20 @@ $(document).ready(function(){initNavTree('stringbuffer_8h_source.html','');});
<div class="title">stringbuffer.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_STRINGBUFFER_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_STRINGBUFFER_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;internal/stack.h&quot;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// std::move</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;internal/stack.h&quot;</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;RAPIDJSON_DIAG_OFF(c++98-compat)</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">//! Represents an in-memory output stream.</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> \tparam Encoding Encoding of the stream.</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> \tparam Allocator type for allocating memory buffer.</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> \note implements Stream concept</span></div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator = CrtAllocator&gt;</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">class </span>GenericStringBuffer {</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; GenericStringBuffer(Allocator* allocator = 0, <span class="keywordtype">size_t</span> capacity = kDefaultCapacity) : stack_(allocator, capacity) {}</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; GenericStringBuffer(GenericStringBuffer&amp;&amp; rhs) : stack_(std::move(rhs.stack_)) {}</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; GenericStringBuffer&amp; operator=(GenericStringBuffer&amp;&amp; rhs) {</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span> (&amp;rhs != <span class="keyword">this</span>)</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; stack_ = std::move(rhs.stack_);</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">void</span> Put(Ch c) { *stack_.template Push&lt;Ch&gt;() = c; }</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(Ch c) { *stack_.template PushUnsafe&lt;Ch&gt;() = c; }</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">void</span> Flush() {}</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">void</span> Clear() { stack_.Clear(); }</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">void</span> ShrinkToFit() {</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// Push and pop a null terminator. This is safe.</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; *stack_.template Push&lt;Ch&gt;() = <span class="charliteral">&#39;\0&#39;</span>;</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; stack_.ShrinkToFit();</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; stack_.template Pop&lt;Ch&gt;(1);</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">void</span> Reserve(<span class="keywordtype">size_t</span> count) { stack_.template Reserve&lt;Ch&gt;(count); }</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; Ch* Push(<span class="keywordtype">size_t</span> count) { <span class="keywordflow">return</span> stack_.template Push&lt;Ch&gt;(count); }</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; Ch* PushUnsafe(<span class="keywordtype">size_t</span> count) { <span class="keywordflow">return</span> stack_.template PushUnsafe&lt;Ch&gt;(count); }</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">void</span> Pop(<span class="keywordtype">size_t</span> count) { stack_.template Pop&lt;Ch&gt;(count); }</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">const</span> Ch* GetString()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Push and pop a null terminator. This is safe.</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; *stack_.template Push&lt;Ch&gt;() = <span class="charliteral">&#39;\0&#39;</span>;</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; stack_.template Pop&lt;Ch&gt;(1);</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> stack_.template Bottom&lt;Ch&gt;();</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> //! Get the size of string in bytes in the string buffer.</span></div>
-<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_string_buffer.html#a629cedcefa12a8057fad525df8548a88"> 82</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_generic_string_buffer.html#a629cedcefa12a8057fad525df8548a88">GetSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stack_.GetSize(); }</div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> //! Get the length of string in Ch in the string buffer.</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_string_buffer.html#aefe471aaf1430189bf40ddb3fb7ebca3"> 85</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_generic_string_buffer.html#aefe471aaf1430189bf40ddb3fb7ebca3">GetLength</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stack_.GetSize() / <span class="keyword">sizeof</span>(Ch); }</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultCapacity = 256;</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">mutable</span> internal::Stack&lt;Allocator&gt; stack_;</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">// Prohibit copy constructor &amp; assignment operator.</span></div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>&amp;);</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>&amp;);</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;};</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">//! String buffer with UTF8 encoding</span></div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> GenericStringBuffer&lt;UTF8&lt;&gt; &gt; StringBuffer;</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> PutReserve(GenericStringBuffer&lt;Encoding, Allocator&gt;&amp; stream, <span class="keywordtype">size_t</span> count) {</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; stream.Reserve(count);</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(GenericStringBuffer&lt;Encoding, Allocator&gt;&amp; stream, <span class="keyword">typename</span> Encoding::Ch c) {</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; stream.PutUnsafe(c);</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;}</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment">//! Implement specialized version of PutN() with memset() for better performance.</span></div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;&gt;</div>
-<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a9d43be9c033dc49738b713fe6fbafecf"> 111</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">PutN</a>(<a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>&lt;<a class="code" href="structrapidjson_1_1_u_t_f8.html">UTF8&lt;&gt;</a> &gt;&amp; stream, <span class="keywordtype">char</span> c, <span class="keywordtype">size_t</span> n) {</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; std::memset(stream.stack_.Push&lt;<span class="keywordtype">char</span>&gt;(n), c, n * <span class="keyword">sizeof</span>(c));</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;}</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_STRINGBUFFER_H_</span></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_STRINGBUFFER_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_STRINGBUFFER_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;internal/stack.h&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span> <span class="comment">// std::move</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;internal/stack.h&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;RAPIDJSON_DIAG_OFF(c++98-compat)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">//! Represents an in-memory output stream.</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"></span><span class="comment">/*!</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> \tparam Encoding Encoding of the stream.</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> \tparam Allocator type for allocating memory buffer.</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> \note implements Stream concept</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator = CrtAllocator&gt;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">class </span>GenericStringBuffer {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> Encoding::Ch Ch;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; GenericStringBuffer(Allocator* allocator = 0, <span class="keywordtype">size_t</span> capacity = kDefaultCapacity) : stack_(allocator, capacity) {}</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; GenericStringBuffer(GenericStringBuffer&amp;&amp; rhs) : stack_(std::move(rhs.stack_)) {}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; GenericStringBuffer&amp; operator=(GenericStringBuffer&amp;&amp; rhs) {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span> (&amp;rhs != <span class="keyword">this</span>)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; stack_ = std::move(rhs.stack_);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">void</span> Put(Ch c) { *stack_.template Push&lt;Ch&gt;() = c; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(Ch c) { *stack_.template PushUnsafe&lt;Ch&gt;() = c; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordtype">void</span> Flush() {}</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">void</span> Clear() { stack_.Clear(); }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordtype">void</span> ShrinkToFit() {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// Push and pop a null terminator. This is safe.</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; *stack_.template Push&lt;Ch&gt;() = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; stack_.ShrinkToFit();</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; stack_.template Pop&lt;Ch&gt;(1);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordtype">void</span> Reserve(<span class="keywordtype">size_t</span> count) { stack_.template Reserve&lt;Ch&gt;(count); }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; Ch* Push(<span class="keywordtype">size_t</span> count) { <span class="keywordflow">return</span> stack_.template Push&lt;Ch&gt;(count); }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; Ch* PushUnsafe(<span class="keywordtype">size_t</span> count) { <span class="keywordflow">return</span> stack_.template PushUnsafe&lt;Ch&gt;(count); }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordtype">void</span> Pop(<span class="keywordtype">size_t</span> count) { stack_.template Pop&lt;Ch&gt;(count); }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">const</span> Ch* GetString()<span class="keyword"> const </span>{</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Push and pop a null terminator. This is safe.</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; *stack_.template Push&lt;Ch&gt;() = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; stack_.template Pop&lt;Ch&gt;(1);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> stack_.template Bottom&lt;Ch&gt;();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"> //! Get the size of string in bytes in the string buffer.</span></div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_string_buffer.html#a9d830ec37a4ba0fba3b523c90aaf8b42"> 82</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_generic_string_buffer.html#a9d830ec37a4ba0fba3b523c90aaf8b42">GetSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stack_.GetSize(); }</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> //! Get the length of string in Ch in the string buffer.</span></div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_generic_string_buffer.html#a0a114be213152d570a2d9fde7a28fe11"> 85</a></span>&#160;<span class="comment"></span> <span class="keywordtype">size_t</span> <a class="code" href="classrapidjson_1_1_generic_string_buffer.html#a0a114be213152d570a2d9fde7a28fe11">GetLength</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> stack_.GetSize() / <span class="keyword">sizeof</span>(Ch); }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultCapacity = 256;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">mutable</span> internal::Stack&lt;Allocator&gt; stack_;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">// Prohibit copy constructor &amp; assignment operator.</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>&amp;);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>&amp;);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;};</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">//! String buffer with UTF8 encoding</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer&lt;UTF8&lt;&gt;</a> &gt; <a class="code" href="classrapidjson_1_1_generic_string_buffer.html">StringBuffer</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(<a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer&lt;Encoding, Allocator&gt;</a>&amp; stream, <span class="keywordtype">size_t</span> count) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; stream.Reserve(count);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;}</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> Encoding, <span class="keyword">typename</span> Allocator&gt;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(<a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer&lt;Encoding, Allocator&gt;</a>&amp; stream, <span class="keyword">typename</span> Encoding::Ch c) {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; stream.PutUnsafe(c);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;}</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment">//! Implement specialized version of PutN() with memset() for better performance.</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"></span><span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#a9d43be9c033dc49738b713fe6fbafecf"> 111</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">PutN</a>(<a class="code" href="classrapidjson_1_1_generic_string_buffer.html">GenericStringBuffer</a>&lt;<a class="code" href="structrapidjson_1_1_u_t_f8.html">UTF8&lt;&gt;</a> &gt;&amp; stream, <span class="keywordtype">char</span> c, <span class="keywordtype">size_t</span> n) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; std::memset(stream.stack_.Push&lt;<span class="keywordtype">char</span>&gt;(n), c, n * <span class="keyword">sizeof</span>(c));</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;}</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_STRINGBUFFER_H_</span></div><div class="ttc" id="namespacerapidjson_html_a820f77efccfbb749bd15fe4822d2c740"><div class="ttname"><a href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">rapidjson::PutReserve</a></div><div class="ttdeci">void PutReserve(Stream &amp;stream, size_t count)</div><div class="ttdoc">Reserve n characters for writing to a stream. </div><div class="ttdef"><b>Definition:</b> stream.h:84</div></div>
<div class="ttc" id="classrapidjson_1_1_generic_string_buffer_html"><div class="ttname"><a href="classrapidjson_1_1_generic_string_buffer.html">rapidjson::GenericStringBuffer</a></div><div class="ttdoc">Represents an in-memory output stream. </div><div class="ttdef"><b>Definition:</b> fwd.h:59</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_string_buffer_html_aefe471aaf1430189bf40ddb3fb7ebca3"><div class="ttname"><a href="classrapidjson_1_1_generic_string_buffer.html#aefe471aaf1430189bf40ddb3fb7ebca3">rapidjson::GenericStringBuffer::GetLength</a></div><div class="ttdeci">size_t GetLength() const </div><div class="ttdoc">Get the length of string in Ch in the string buffer. </div><div class="ttdef"><b>Definition:</b> stringbuffer.h:85</div></div>
<div class="ttc" id="namespacerapidjson_html_a1ac13bac5976fc06587e00fc0bcfb32a"><div class="ttname"><a href="namespacerapidjson.html#a1ac13bac5976fc06587e00fc0bcfb32a">rapidjson::PutN</a></div><div class="ttdeci">void PutN(FileWriteStream &amp;stream, char c, size_t n)</div><div class="ttdoc">Implement specialized version of PutN() with memset() for better performance. </div><div class="ttdef"><b>Definition:</b> filewritestream.h:94</div></div>
-<div class="ttc" id="classrapidjson_1_1_generic_string_buffer_html_a629cedcefa12a8057fad525df8548a88"><div class="ttname"><a href="classrapidjson_1_1_generic_string_buffer.html#a629cedcefa12a8057fad525df8548a88">rapidjson::GenericStringBuffer::GetSize</a></div><div class="ttdeci">size_t GetSize() const </div><div class="ttdoc">Get the size of string in bytes in the string buffer. </div><div class="ttdef"><b>Definition:</b> stringbuffer.h:82</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_string_buffer_html_a0a114be213152d570a2d9fde7a28fe11"><div class="ttname"><a href="classrapidjson_1_1_generic_string_buffer.html#a0a114be213152d570a2d9fde7a28fe11">rapidjson::GenericStringBuffer::GetLength</a></div><div class="ttdeci">size_t GetLength() const</div><div class="ttdoc">Get the length of string in Ch in the string buffer. </div><div class="ttdef"><b>Definition:</b> stringbuffer.h:85</div></div>
<div class="ttc" id="structrapidjson_1_1_u_t_f8_html"><div class="ttname"><a href="structrapidjson_1_1_u_t_f8.html">rapidjson::UTF8</a></div><div class="ttdoc">UTF-8 encoding. </div><div class="ttdef"><b>Definition:</b> encodings.h:96</div></div>
<div class="ttc" id="namespacerapidjson_html_a0a774dcffe8ae07686f459ae017d2f20"><div class="ttname"><a href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">rapidjson::PutUnsafe</a></div><div class="ttdeci">void PutUnsafe(Stream &amp;stream, typename Stream::Ch c)</div><div class="ttdoc">Write character to a stream, presuming buffer is reserved. </div><div class="ttdef"><b>Definition:</b> stream.h:91</div></div>
+<div class="ttc" id="classrapidjson_1_1_generic_string_buffer_html_a9d830ec37a4ba0fba3b523c90aaf8b42"><div class="ttname"><a href="classrapidjson_1_1_generic_string_buffer.html#a9d830ec37a4ba0fba3b523c90aaf8b42">rapidjson::GenericStringBuffer::GetSize</a></div><div class="ttdeci">size_t GetSize() const</div><div class="ttdoc">Get the size of string in bytes in the string buffer. </div><div class="ttdef"><b>Definition:</b> stringbuffer.h:82</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>stringbuffer.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>stringbuffer.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/strtod_8h_source.html b/zh-cn/strtod_8h_source.html
index 1606e66d..2b5ced0b 100644
--- a/zh-cn/strtod_8h_source.html
+++ b/zh-cn/strtod_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/internal/strtod.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('strtod_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,276 +81,7 @@ $(document).ready(function(){initNavTree('strtod_8h_source.html','');});
<div class="title">strtod.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_STRTOD_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_STRTOD_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;ieee754.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;biginteger.h&quot;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;diyfp.h&quot;</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;pow10.h&quot;</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> FastPath(<span class="keywordtype">double</span> significand, <span class="keywordtype">int</span> exp) {</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">if</span> (exp &lt; -308)</div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> 0.0;</div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (exp &gt;= 0)</div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> significand * internal::Pow10(exp);</div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">return</span> significand / internal::Pow10(-exp);</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> StrtodNormalPrecision(<span class="keywordtype">double</span> d, <span class="keywordtype">int</span> p) {</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">if</span> (p &lt; -308) {</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// Prevent expSum &lt; -308, making Pow10(p) = 0</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; d = FastPath(d, -308);</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; d = FastPath(d, p + 308);</div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; d = FastPath(d, p);</div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> d;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">inline</span> T Min3(T a, T b, T c) {</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; T m = a;</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span> (m &gt; b) m = b;</div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span> (m &gt; c) m = c;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> m;</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> CheckWithinHalfULP(<span class="keywordtype">double</span> b, <span class="keyword">const</span> BigInteger&amp; d, <span class="keywordtype">int</span> dExp) {</div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> Double db(b);</div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> uint64_t bInt = db.IntegerSignificand();</div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> bExp = db.IntegerExponent();</div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> hExp = bExp - 1;</div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">int</span> dS_Exp2 = 0, dS_Exp5 = 0, bS_Exp2 = 0, bS_Exp5 = 0, hS_Exp2 = 0, hS_Exp5 = 0;</div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// Adjust for decimal exponent</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span> (dExp &gt;= 0) {</div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; dS_Exp2 += dExp;</div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; dS_Exp5 += dExp;</div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div>
-<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; bS_Exp2 -= dExp;</div>
-<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; bS_Exp5 -= dExp;</div>
-<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; hS_Exp2 -= dExp;</div>
-<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; hS_Exp5 -= dExp;</div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Adjust for binary exponent</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (bExp &gt;= 0)</div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; bS_Exp2 += bExp;</div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; dS_Exp2 -= bExp;</div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; hS_Exp2 -= bExp;</div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">// Adjust for half ulp exponent</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (hExp &gt;= 0)</div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; hS_Exp2 += hExp;</div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; dS_Exp2 -= hExp;</div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; bS_Exp2 -= hExp;</div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">// Remove common power of two factor from all three scaled values</span></div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">int</span> common_Exp2 = Min3(dS_Exp2, bS_Exp2, hS_Exp2);</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; dS_Exp2 -= common_Exp2;</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; bS_Exp2 -= common_Exp2;</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; hS_Exp2 -= common_Exp2;</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; BigInteger dS = d;</div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; dS.MultiplyPow5(static_cast&lt;unsigned&gt;(dS_Exp5)) &lt;&lt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(dS_Exp2);</div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; BigInteger bS(bInt);</div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; bS.MultiplyPow5(static_cast&lt;unsigned&gt;(bS_Exp5)) &lt;&lt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(bS_Exp2);</div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; BigInteger hS(1);</div>
-<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; hS.MultiplyPow5(static_cast&lt;unsigned&gt;(hS_Exp5)) &lt;&lt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(hS_Exp2);</div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; BigInteger delta(0);</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; dS.Difference(bS, &amp;delta);</div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> delta.Compare(hS);</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;}</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> StrtodFast(<span class="keywordtype">double</span> d, <span class="keywordtype">int</span> p, <span class="keywordtype">double</span>* result) {</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">// Use fast path for string-to-double conversion if possible</span></div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">// see http://www.exploringbinary.com/fast-path-decimal-to-floating-point-conversion/</span></div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (p &gt; 22 &amp;&amp; p &lt; 22 + 16) {</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">// Fast Path Cases In Disguise</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; d *= internal::Pow10(p - 22);</div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; p = 22;</div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span> (p &gt;= -22 &amp;&amp; p &lt;= 22 &amp;&amp; d &lt;= 9007199254740991.0) { <span class="comment">// 2^53 - 1</span></div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; *result = FastPath(d, p);</div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;}</div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment">// Compute an approximation and see if it is within 1/2 ULP</span></div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> StrtodDiyFp(<span class="keyword">const</span> <span class="keywordtype">char</span>* decimals, <span class="keywordtype">size_t</span> length, <span class="keywordtype">size_t</span> decimalPosition, <span class="keywordtype">int</span> exp, <span class="keywordtype">double</span>* result) {</div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; uint64_t significand = 0;</div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordtype">size_t</span> i = 0; <span class="comment">// 2^64 - 1 = 18446744073709551615, 1844674407370955161 = 0x1999999999999999 </span></div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span> (; i &lt; length; i++) {</div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (significand &gt; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x19999999, 0x99999999) ||</div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; (significand == <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x19999999, 0x99999999) &amp;&amp; decimals[i] &gt; <span class="charliteral">&#39;5&#39;</span>))</div>
-<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; significand = significand * 10u + <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(decimals[i] - <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; </div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">if</span> (i &lt; length &amp;&amp; decimals[i] &gt;= <span class="charliteral">&#39;5&#39;</span>) <span class="comment">// Rounding</span></div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; significand++;</div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordtype">size_t</span> remaining = length - i;</div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> kUlpShift = 3;</div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> kUlp = 1 &lt;&lt; kUlpShift;</div>
-<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; int64_t error = (remaining == 0) ? 0 : kUlp / 2;</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; DiyFp v(significand, 0);</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; v = v.Normalize();</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; error &lt;&lt;= -v.e;</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> dExp = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(decimalPosition) - static_cast&lt;int&gt;(i) + exp;</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordtype">int</span> actualExp;</div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; DiyFp cachedPower = GetCachedPower10(dExp, &amp;actualExp);</div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (actualExp != dExp) {</div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> DiyFp kPow10[] = {</div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; DiyFp(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xa0000000, 00000000), -60), <span class="comment">// 10^1</span></div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; DiyFp(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc8000000, 00000000), -57), <span class="comment">// 10^2</span></div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; DiyFp(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xfa000000, 00000000), -54), <span class="comment">// 10^3</span></div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; DiyFp(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9c400000, 00000000), -50), <span class="comment">// 10^4</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; DiyFp(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc3500000, 00000000), -47), <span class="comment">// 10^5</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; DiyFp(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xf4240000, 00000000), -44), <span class="comment">// 10^6</span></div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; DiyFp(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x98968000, 00000000), -40) <span class="comment">// 10^7</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; };</div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordtype">int</span> adjustment = dExp - actualExp - 1;</div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(adjustment &gt;= 0 &amp;&amp; adjustment &lt; 7);</div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; v = v * kPow10[adjustment];</div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">if</span> (length + static_cast&lt;unsigned&gt;(adjustment)&gt; 19u) <span class="comment">// has more digits than decimal digits in 64-bit</span></div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; error += kUlp / 2;</div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; v = v * cachedPower;</div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
-<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; error += kUlp + (error == 0 ? 0 : 1);</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> oldExp = v.e;</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; v = v.Normalize();</div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; error &lt;&lt;= oldExp - v.e;</div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> effectiveSignificandSize = Double::EffectiveSignificandSize(64 + v.e);</div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordtype">int</span> precisionSize = 64 - effectiveSignificandSize;</div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span> (precisionSize + kUlpShift &gt;= 64) {</div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordtype">int</span> scaleExp = (precisionSize + kUlpShift) - 63;</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; v.f &gt;&gt;= scaleExp;</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; v.e += scaleExp; </div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; error = (error &gt;&gt; scaleExp) + 1 + kUlp;</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; precisionSize -= scaleExp;</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; DiyFp rounded(v.f &gt;&gt; precisionSize, v.e + precisionSize);</div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">const</span> uint64_t precisionBits = (v.f &amp; ((uint64_t(1) &lt;&lt; precisionSize) - 1)) * kUlp;</div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keyword">const</span> uint64_t halfWay = (uint64_t(1) &lt;&lt; (precisionSize - 1)) * kUlp;</div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">if</span> (precisionBits &gt;= halfWay + static_cast&lt;unsigned&gt;(error)) {</div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; rounded.f++;</div>
-<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (rounded.f &amp; (DiyFp::kDpHiddenBit &lt;&lt; 1)) { <span class="comment">// rounding overflows mantissa (issue #340)</span></div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; rounded.f &gt;&gt;= 1;</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; rounded.e++;</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; *result = rounded.ToDouble();</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> halfWay - <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(error) &gt;= precisionBits || precisionBits &gt;= halfWay + static_cast&lt;unsigned&gt;(error);</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;}</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> StrtodBigInteger(<span class="keywordtype">double</span> approx, <span class="keyword">const</span> <span class="keywordtype">char</span>* decimals, <span class="keywordtype">size_t</span> length, <span class="keywordtype">size_t</span> decimalPosition, <span class="keywordtype">int</span> exp) {</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keyword">const</span> BigInteger dInt(decimals, length);</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> dExp = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(decimalPosition) - static_cast&lt;int&gt;(length) + exp;</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; Double a(approx);</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordtype">int</span> cmp = CheckWithinHalfULP(a.Value(), dInt, dExp);</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (cmp &lt; 0)</div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> a.Value(); <span class="comment">// within half ULP</span></div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cmp == 0) {</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// Round towards even</span></div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span> (a.Significand() &amp; 1)</div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> a.NextPositiveDouble();</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> a.Value();</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">else</span> <span class="comment">// adjustment</span></div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">return</span> a.NextPositiveDouble();</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;}</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> StrtodFullPrecision(<span class="keywordtype">double</span> d, <span class="keywordtype">int</span> p, <span class="keyword">const</span> <span class="keywordtype">char</span>* decimals, <span class="keywordtype">size_t</span> length, <span class="keywordtype">size_t</span> decimalPosition, <span class="keywordtype">int</span> exp) {</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(d &gt;= 0.0);</div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(length &gt;= 1);</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordtype">double</span> result;</div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">if</span> (StrtodFast(d, p, &amp;result))</div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">// Trim leading zeros</span></div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">while</span> (*decimals == <span class="charliteral">&#39;0&#39;</span> &amp;&amp; length &gt; 1) {</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; length--;</div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; decimals++;</div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; decimalPosition--;</div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// Trim trailing zeros</span></div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">while</span> (decimals[length - 1] == <span class="charliteral">&#39;0&#39;</span> &amp;&amp; length &gt; 1) {</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; length--;</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; decimalPosition--;</div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; exp++;</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="comment">// Trim right-most digits</span></div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> kMaxDecimalDigit = 780;</div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;int&gt;(length) &gt; kMaxDecimalDigit) {</div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordtype">int</span> delta = (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(length) - kMaxDecimalDigit);</div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; exp += delta;</div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; decimalPosition -= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(delta);</div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; length = kMaxDecimalDigit;</div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="comment">// If too small, underflow to zero</span></div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span> (<span class="keywordtype">int</span>(length) + exp &lt; -324)</div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">return</span> 0.0;</div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">if</span> (StrtodDiyFp(decimals, length, decimalPosition, exp, &amp;result))</div>
-<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> result;</div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="comment">// Use approximation from StrtodDiyFp and make adjustment with BigInteger comparison</span></div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">return</span> StrtodBigInteger(result, decimals, length, decimalPosition, exp);</div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;}</div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_STRTOD_</span></div>
-<div class="ttc" id="rapidjson_8h_html_aaee1245f375a71be1ac9b8a07ba5fb8f"><div class="ttname"><a href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a></div><div class="ttdeci">#define RAPIDJSON_UINT64_C2(high32, low32)</div><div class="ttdoc">Construct a 64-bit literal by a pair of 32-bit integer. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:294</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_STRTOD_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_STRTOD_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;ieee754.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;biginteger.h&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;diyfp.h&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;pow10.h&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> FastPath(<span class="keywordtype">double</span> significand, <span class="keywordtype">int</span> exp) {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">if</span> (exp &lt; -308)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keywordflow">return</span> 0.0;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (exp &gt;= 0)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <span class="keywordflow">return</span> significand * internal::Pow10(exp);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">return</span> significand / internal::Pow10(-exp);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;}</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> StrtodNormalPrecision(<span class="keywordtype">double</span> d, <span class="keywordtype">int</span> p) {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keywordflow">if</span> (p &lt; -308) {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">// Prevent expSum &lt; -308, making Pow10(p) = 0</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; d = FastPath(d, -308);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; d = FastPath(d, p + 308);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; d = FastPath(d, p);</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordflow">return</span> d;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;}</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">inline</span> T Min3(T a, T b, T c) {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; T m = a;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span> (m &gt; b) m = b;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">if</span> (m &gt; c) m = c;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">return</span> m;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">int</span> CheckWithinHalfULP(<span class="keywordtype">double</span> b, <span class="keyword">const</span> BigInteger&amp; d, <span class="keywordtype">int</span> dExp) {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">const</span> Double db(b);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">const</span> uint64_t bInt = db.IntegerSignificand();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> bExp = db.IntegerExponent();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> hExp = bExp - 1;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordtype">int</span> dS_Exp2 = 0, dS_Exp5 = 0, bS_Exp2 = 0, bS_Exp5 = 0, hS_Exp2 = 0, hS_Exp5 = 0;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">// Adjust for decimal exponent</span></div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">if</span> (dExp &gt;= 0) {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; dS_Exp2 += dExp;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; dS_Exp5 += dExp;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; bS_Exp2 -= dExp;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; bS_Exp5 -= dExp;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; hS_Exp2 -= dExp;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; hS_Exp5 -= dExp;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Adjust for binary exponent</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (bExp &gt;= 0)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; bS_Exp2 += bExp;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; dS_Exp2 -= bExp;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; hS_Exp2 -= bExp;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="comment">// Adjust for half ulp exponent</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (hExp &gt;= 0)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; hS_Exp2 += hExp;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; dS_Exp2 -= hExp;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; bS_Exp2 -= hExp;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">// Remove common power of two factor from all three scaled values</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">int</span> common_Exp2 = Min3(dS_Exp2, bS_Exp2, hS_Exp2);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; dS_Exp2 -= common_Exp2;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; bS_Exp2 -= common_Exp2;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; hS_Exp2 -= common_Exp2;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; BigInteger dS = d;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; dS.MultiplyPow5(static_cast&lt;unsigned&gt;(dS_Exp5)) &lt;&lt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(dS_Exp2);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; BigInteger bS(bInt);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; bS.MultiplyPow5(static_cast&lt;unsigned&gt;(bS_Exp5)) &lt;&lt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(bS_Exp2);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; BigInteger hS(1);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; hS.MultiplyPow5(static_cast&lt;unsigned&gt;(hS_Exp5)) &lt;&lt;= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(hS_Exp2);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; BigInteger delta(0);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; dS.Difference(bS, &amp;delta);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> delta.Compare(hS);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;}</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> StrtodFast(<span class="keywordtype">double</span> d, <span class="keywordtype">int</span> p, <span class="keywordtype">double</span>* result) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="comment">// Use fast path for string-to-double conversion if possible</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="comment">// see http://www.exploringbinary.com/fast-path-decimal-to-floating-point-conversion/</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">if</span> (p &gt; 22 &amp;&amp; p &lt; 22 + 16) {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">// Fast Path Cases In Disguise</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; d *= internal::Pow10(p - 22);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; p = 22;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">if</span> (p &gt;= -22 &amp;&amp; p &lt;= 22 &amp;&amp; d &lt;= 9007199254740991.0) { <span class="comment">// 2^53 - 1</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; *result = FastPath(d, p);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;}</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment">// Compute an approximation and see if it is within 1/2 ULP</span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> StrtodDiyFp(<span class="keyword">const</span> <span class="keywordtype">char</span>* decimals, <span class="keywordtype">size_t</span> length, <span class="keywordtype">size_t</span> decimalPosition, <span class="keywordtype">int</span> exp, <span class="keywordtype">double</span>* result) {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; uint64_t significand = 0;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordtype">size_t</span> i = 0; <span class="comment">// 2^64 - 1 = 18446744073709551615, 1844674407370955161 = 0x1999999999999999 </span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">for</span> (; i &lt; length; i++) {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (significand &gt; <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x19999999, 0x99999999) ||</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; (significand == <a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x19999999, 0x99999999) &amp;&amp; decimals[i] &gt; <span class="charliteral">&#39;5&#39;</span>))</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; significand = significand * 10u + <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(decimals[i] - <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">if</span> (i &lt; length &amp;&amp; decimals[i] &gt;= <span class="charliteral">&#39;5&#39;</span>) <span class="comment">// Rounding</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; significand++;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordtype">size_t</span> remaining = length - i;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> kUlpShift = 3;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> kUlp = 1 &lt;&lt; kUlpShift;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; int64_t error = (remaining == 0) ? 0 : kUlp / 2;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; DiyFp v(significand, 0);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; v = v.Normalize();</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; error &lt;&lt;= -v.e;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> dExp = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(decimalPosition) - static_cast&lt;int&gt;(i) + exp;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordtype">int</span> actualExp;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; DiyFp cachedPower = GetCachedPower10(dExp, &amp;actualExp);</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (actualExp != dExp) {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> DiyFp kPow10[] = {</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; DiyFp(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xa0000000, 00000000), -60), <span class="comment">// 10^1</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; DiyFp(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc8000000, 00000000), -57), <span class="comment">// 10^2</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; DiyFp(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xfa000000, 00000000), -54), <span class="comment">// 10^3</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; DiyFp(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x9c400000, 00000000), -50), <span class="comment">// 10^4</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; DiyFp(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xc3500000, 00000000), -47), <span class="comment">// 10^5</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; DiyFp(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0xf4240000, 00000000), -44), <span class="comment">// 10^6</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; DiyFp(<a class="code" href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a>(0x98968000, 00000000), -40) <span class="comment">// 10^7</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; };</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordtype">int</span> adjustment = dExp - actualExp - 1;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(adjustment &gt;= 0 &amp;&amp; adjustment &lt; 7);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; v = v * kPow10[adjustment];</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">if</span> (length + static_cast&lt;unsigned&gt;(adjustment)&gt; 19u) <span class="comment">// has more digits than decimal digits in 64-bit</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; error += kUlp / 2;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; v = v * cachedPower;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; error += kUlp + (error == 0 ? 0 : 1);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> oldExp = v.e;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; v = v.Normalize();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; error &lt;&lt;= oldExp - v.e;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> effectiveSignificandSize = Double::EffectiveSignificandSize(64 + v.e);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordtype">int</span> precisionSize = 64 - effectiveSignificandSize;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span> (precisionSize + kUlpShift &gt;= 64) {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordtype">int</span> scaleExp = (precisionSize + kUlpShift) - 63;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; v.f &gt;&gt;= scaleExp;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; v.e += scaleExp; </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; error = (error &gt;&gt; scaleExp) + 1 + kUlp;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; precisionSize -= scaleExp;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; DiyFp rounded(v.f &gt;&gt; precisionSize, v.e + precisionSize);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">const</span> uint64_t precisionBits = (v.f &amp; ((uint64_t(1) &lt;&lt; precisionSize) - 1)) * kUlp;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keyword">const</span> uint64_t halfWay = (uint64_t(1) &lt;&lt; (precisionSize - 1)) * kUlp;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">if</span> (precisionBits &gt;= halfWay + static_cast&lt;unsigned&gt;(error)) {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; rounded.f++;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (rounded.f &amp; (DiyFp::kDpHiddenBit &lt;&lt; 1)) { <span class="comment">// rounding overflows mantissa (issue #340)</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; rounded.f &gt;&gt;= 1;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; rounded.e++;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; *result = rounded.ToDouble();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> halfWay - <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(error) &gt;= precisionBits || precisionBits &gt;= halfWay + static_cast&lt;unsigned&gt;(error);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;}</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> StrtodBigInteger(<span class="keywordtype">double</span> approx, <span class="keyword">const</span> <span class="keywordtype">char</span>* decimals, <span class="keywordtype">size_t</span> length, <span class="keywordtype">size_t</span> decimalPosition, <span class="keywordtype">int</span> exp) {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keyword">const</span> BigInteger dInt(decimals, length);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> dExp = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(decimalPosition) - static_cast&lt;int&gt;(length) + exp;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; Double a(approx);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordtype">int</span> cmp = CheckWithinHalfULP(a.Value(), dInt, dExp);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (cmp &lt; 0)</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> a.Value(); <span class="comment">// within half ULP</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cmp == 0) {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// Round towards even</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span> (a.Significand() &amp; 1)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> a.NextPositiveDouble();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> a.Value();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">else</span> <span class="comment">// adjustment</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">return</span> a.NextPositiveDouble();</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;}</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">double</span> StrtodFullPrecision(<span class="keywordtype">double</span> d, <span class="keywordtype">int</span> p, <span class="keyword">const</span> <span class="keywordtype">char</span>* decimals, <span class="keywordtype">size_t</span> length, <span class="keywordtype">size_t</span> decimalPosition, <span class="keywordtype">int</span> exp) {</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(d &gt;= 0.0);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(length &gt;= 1);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordtype">double</span> result;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">if</span> (StrtodFast(d, p, &amp;result))</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="comment">// Trim leading zeros</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">while</span> (*decimals == <span class="charliteral">&#39;0&#39;</span> &amp;&amp; length &gt; 1) {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; length--;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; decimals++;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; decimalPosition--;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="comment">// Trim trailing zeros</span></div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">while</span> (decimals[length - 1] == <span class="charliteral">&#39;0&#39;</span> &amp;&amp; length &gt; 1) {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; length--;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; decimalPosition--;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; exp++;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="comment">// Trim right-most digits</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> kMaxDecimalDigit = 780;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">if</span> (static_cast&lt;int&gt;(length) &gt; kMaxDecimalDigit) {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordtype">int</span> delta = (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(length) - kMaxDecimalDigit);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; exp += delta;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; decimalPosition -= <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span><span class="keyword">&gt;</span>(delta);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; length = kMaxDecimalDigit;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="comment">// If too small, underflow to zero</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span> (<span class="keywordtype">int</span>(length) + exp &lt; -324)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">return</span> 0.0;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">if</span> (StrtodDiyFp(decimals, length, decimalPosition, exp, &amp;result))</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="comment">// Use approximation from StrtodDiyFp and make adjustment with BigInteger comparison</span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">return</span> StrtodBigInteger(result, decimals, length, decimalPosition, exp);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;}</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_STRTOD_</span></div><div class="ttc" id="rapidjson_8h_html_aaee1245f375a71be1ac9b8a07ba5fb8f"><div class="ttname"><a href="rapidjson_8h.html#aaee1245f375a71be1ac9b8a07ba5fb8f">RAPIDJSON_UINT64_C2</a></div><div class="ttdeci">#define RAPIDJSON_UINT64_C2(high32, low32)</div><div class="ttdoc">Construct a 64-bit literal by a pair of 32-bit integer. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:294</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
@@ -357,7 +89,7 @@ $(document).ready(function(){initNavTree('strtod_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5167ae66a3a40cb9e5e46c75b7477e81.html">internal</a></li><li class="navelem"><b>strtod.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_8d7584a8244d286291cd37b99676a43b.html">internal</a></li><li class="navelem"><b>strtod.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/structrapidjson_1_1_a_s_c_i_i-members.html b/zh-cn/structrapidjson_1_1_a_s_c_i_i-members.html
index f6bb79f6..477ba41a 100644
--- a/zh-cn/structrapidjson_1_1_a_s_c_i_i-members.html
+++ b/zh-cn/structrapidjson_1_1_a_s_c_i_i-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_a_s_c_i_i.html',''
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_a_s_c_i_i.html b/zh-cn/structrapidjson_1_1_a_s_c_i_i.html
index 57d33bb2..e6fb64f1 100644
--- a/zh-cn/structrapidjson_1_1_a_s_c_i_i.html
+++ b/zh-cn/structrapidjson_1_1_a_s_c_i_i.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::ASCII&lt; CharType &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_a_s_c_i_i.html',''
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,44 +93,44 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_a_s_c_i_i.html',''
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a598bb5f32c9f0c851529a9ded73db5eb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a598bb5f32c9f0c851529a9ded73db5eb"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 0
+<tr class="memitem:a598bb5f32c9f0c851529a9ded73db5eb"><td class="memItemLeft" align="right" valign="top"><a id="a598bb5f32c9f0c851529a9ded73db5eb"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 0
}</td></tr>
<tr class="separator:a598bb5f32c9f0c851529a9ded73db5eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2c1e49f42921027d58f1125a627cc5e5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2c1e49f42921027d58f1125a627cc5e5"></a>
+<tr class="memitem:a2c1e49f42921027d58f1125a627cc5e5"><td class="memItemLeft" align="right" valign="top"><a id="a2c1e49f42921027d58f1125a627cc5e5"></a>
typedef CharType&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a2c1e49f42921027d58f1125a627cc5e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
-<tr class="memitem:adac1c32ed7098e5814dc4b2d1b6f04b5"><td class="memTemplParams" colspan="2"><a class="anchor" id="adac1c32ed7098e5814dc4b2d1b6f04b5"></a>
+<tr class="memitem:adac1c32ed7098e5814dc4b2d1b6f04b5"><td class="memTemplParams" colspan="2"><a id="adac1c32ed7098e5814dc4b2d1b6f04b5"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:adac1c32ed7098e5814dc4b2d1b6f04b5"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Encode</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:adac1c32ed7098e5814dc4b2d1b6f04b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0eee86da534d0652359a74caa084a0b7"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0eee86da534d0652359a74caa084a0b7"></a>
+<tr class="memitem:a0eee86da534d0652359a74caa084a0b7"><td class="memTemplParams" colspan="2"><a id="a0eee86da534d0652359a74caa084a0b7"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:a0eee86da534d0652359a74caa084a0b7"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>EncodeUnsafe</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:a0eee86da534d0652359a74caa084a0b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aaec2b991fe580f147df60fe6eb15b3f0"><td class="memTemplParams" colspan="2"><a class="anchor" id="aaec2b991fe580f147df60fe6eb15b3f0"></a>
+<tr class="memitem:aaec2b991fe580f147df60fe6eb15b3f0"><td class="memTemplParams" colspan="2"><a id="aaec2b991fe580f147df60fe6eb15b3f0"></a>
template&lt;typename InputStream &gt; </td></tr>
<tr class="memitem:aaec2b991fe580f147df60fe6eb15b3f0"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Decode</b> (InputStream &amp;is, unsigned *codepoint)</td></tr>
<tr class="separator:aaec2b991fe580f147df60fe6eb15b3f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1d92c5e7540766a9fc03bebf788dab88"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1d92c5e7540766a9fc03bebf788dab88"></a>
+<tr class="memitem:a1d92c5e7540766a9fc03bebf788dab88"><td class="memTemplParams" colspan="2"><a id="a1d92c5e7540766a9fc03bebf788dab88"></a>
template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="memitem:a1d92c5e7540766a9fc03bebf788dab88"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Validate</b> (InputStream &amp;is, OutputStream &amp;os)</td></tr>
<tr class="separator:a1d92c5e7540766a9fc03bebf788dab88"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0d3616276f046139c3628574f9b8ea0b"><td class="memTemplParams" colspan="2"><a class="anchor" id="a0d3616276f046139c3628574f9b8ea0b"></a>
+<tr class="memitem:a0d3616276f046139c3628574f9b8ea0b"><td class="memTemplParams" colspan="2"><a id="a0d3616276f046139c3628574f9b8ea0b"></a>
template&lt;typename InputByteStream &gt; </td></tr>
<tr class="memitem:a0d3616276f046139c3628574f9b8ea0b"><td class="memTemplItemLeft" align="right" valign="top">static CharType&#160;</td><td class="memTemplItemRight" valign="bottom"><b>TakeBOM</b> (InputByteStream &amp;is)</td></tr>
<tr class="separator:a0d3616276f046139c3628574f9b8ea0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad4ab53cc9d0c076d5548e7ed5be76f5b"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad4ab53cc9d0c076d5548e7ed5be76f5b"></a>
+<tr class="memitem:ad4ab53cc9d0c076d5548e7ed5be76f5b"><td class="memTemplParams" colspan="2"><a id="ad4ab53cc9d0c076d5548e7ed5be76f5b"></a>
template&lt;typename InputByteStream &gt; </td></tr>
<tr class="memitem:ad4ab53cc9d0c076d5548e7ed5be76f5b"><td class="memTemplItemLeft" align="right" valign="top">static Ch&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Take</b> (InputByteStream &amp;is)</td></tr>
<tr class="separator:ad4ab53cc9d0c076d5548e7ed5be76f5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5da83adf5a57fa73144a128a80d10782"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5da83adf5a57fa73144a128a80d10782"></a>
+<tr class="memitem:a5da83adf5a57fa73144a128a80d10782"><td class="memTemplParams" colspan="2"><a id="a5da83adf5a57fa73144a128a80d10782"></a>
template&lt;typename OutputByteStream &gt; </td></tr>
<tr class="memitem:a5da83adf5a57fa73144a128a80d10782"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>PutBOM</b> (OutputByteStream &amp;os)</td></tr>
<tr class="separator:a5da83adf5a57fa73144a128a80d10782"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a32e644c99e6658ae8c8f1578d8860eaf"><td class="memTemplParams" colspan="2"><a class="anchor" id="a32e644c99e6658ae8c8f1578d8860eaf"></a>
+<tr class="memitem:a32e644c99e6658ae8c8f1578d8860eaf"><td class="memTemplParams" colspan="2"><a id="a32e644c99e6658ae8c8f1578d8860eaf"></a>
template&lt;typename OutputByteStream &gt; </td></tr>
<tr class="memitem:a32e644c99e6658ae8c8f1578d8860eaf"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Put</b> (OutputByteStream &amp;os, Ch c)</td></tr>
<tr class="separator:a32e644c99e6658ae8c8f1578d8860eaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/zh-cn/structrapidjson_1_1_auto_u_t_f-members.html b/zh-cn/structrapidjson_1_1_auto_u_t_f-members.html
index a9529735..771c7ab2 100644
--- a/zh-cn/structrapidjson_1_1_auto_u_t_f-members.html
+++ b/zh-cn/structrapidjson_1_1_auto_u_t_f-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_auto_u_t_f.html','
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_auto_u_t_f.html b/zh-cn/structrapidjson_1_1_auto_u_t_f.html
index 3acb22e3..ddb677c6 100644
--- a/zh-cn/structrapidjson_1_1_auto_u_t_f.html
+++ b/zh-cn/structrapidjson_1_1_auto_u_t_f.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::AutoUTF&lt; CharType &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_auto_u_t_f.html','
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,28 +93,28 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_auto_u_t_f.html','
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:aa9095b9e85767361f9a0ae5527dba101"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9095b9e85767361f9a0ae5527dba101"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
+<tr class="memitem:aa9095b9e85767361f9a0ae5527dba101"><td class="memItemLeft" align="right" valign="top"><a id="aa9095b9e85767361f9a0ae5527dba101"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
}</td></tr>
<tr class="separator:aa9095b9e85767361f9a0ae5527dba101"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8ba58f529fad9b33dc419b12ee13844d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ba58f529fad9b33dc419b12ee13844d"></a>
+<tr class="memitem:a8ba58f529fad9b33dc419b12ee13844d"><td class="memItemLeft" align="right" valign="top"><a id="a8ba58f529fad9b33dc419b12ee13844d"></a>
typedef CharType&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a8ba58f529fad9b33dc419b12ee13844d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
-<tr class="memitem:a4c9a9fd8666f1269997e40b587175c26"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4c9a9fd8666f1269997e40b587175c26"></a>
+<tr class="memitem:a4c9a9fd8666f1269997e40b587175c26"><td class="memTemplParams" colspan="2"><a id="a4c9a9fd8666f1269997e40b587175c26"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:a4c9a9fd8666f1269997e40b587175c26"><td class="memTemplItemLeft" align="right" valign="top">static RAPIDJSON_FORCEINLINE void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Encode</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:a4c9a9fd8666f1269997e40b587175c26"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac55057f44fd139ccf5044b7503c441c3"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac55057f44fd139ccf5044b7503c441c3"></a>
+<tr class="memitem:ac55057f44fd139ccf5044b7503c441c3"><td class="memTemplParams" colspan="2"><a id="ac55057f44fd139ccf5044b7503c441c3"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:ac55057f44fd139ccf5044b7503c441c3"><td class="memTemplItemLeft" align="right" valign="top">static RAPIDJSON_FORCEINLINE void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>EncodeUnsafe</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:ac55057f44fd139ccf5044b7503c441c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad722cc64bca2bacddd1029d8980c4ac2"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad722cc64bca2bacddd1029d8980c4ac2"></a>
+<tr class="memitem:ad722cc64bca2bacddd1029d8980c4ac2"><td class="memTemplParams" colspan="2"><a id="ad722cc64bca2bacddd1029d8980c4ac2"></a>
template&lt;typename InputStream &gt; </td></tr>
<tr class="memitem:ad722cc64bca2bacddd1029d8980c4ac2"><td class="memTemplItemLeft" align="right" valign="top">static RAPIDJSON_FORCEINLINE bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Decode</b> (InputStream &amp;is, unsigned *codepoint)</td></tr>
<tr class="separator:ad722cc64bca2bacddd1029d8980c4ac2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5454260f314ab07a9f747d268a79e70a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a5454260f314ab07a9f747d268a79e70a"></a>
+<tr class="memitem:a5454260f314ab07a9f747d268a79e70a"><td class="memTemplParams" colspan="2"><a id="a5454260f314ab07a9f747d268a79e70a"></a>
template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="memitem:a5454260f314ab07a9f747d268a79e70a"><td class="memTemplItemLeft" align="right" valign="top">static RAPIDJSON_FORCEINLINE bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Validate</b> (InputStream &amp;is, OutputStream &amp;os)</td></tr>
<tr class="separator:a5454260f314ab07a9f747d268a79e70a"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/zh-cn/structrapidjson_1_1_base_reader_handler-members.html b/zh-cn/structrapidjson_1_1_base_reader_handler-members.html
index ea76b252..9c03f3fb 100644
--- a/zh-cn/structrapidjson_1_1_base_reader_handler-members.html
+++ b/zh-cn/structrapidjson_1_1_base_reader_handler-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_base_reader_handle
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_base_reader_handler.html b/zh-cn/structrapidjson_1_1_base_reader_handler.html
index 2ce722bc..dfafa7c7 100644
--- a/zh-cn/structrapidjson_1_1_base_reader_handler.html
+++ b/zh-cn/structrapidjson_1_1_base_reader_handler.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::BaseReaderHandler&lt; Encoding, Derived &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_base_reader_handle
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,67 +93,64 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_base_reader_handle
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a2932a8ecbb1997dda305f4dbef32ab0d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2932a8ecbb1997dda305f4dbef32ab0d"></a>
+<tr class="memitem:a2932a8ecbb1997dda305f4dbef32ab0d"><td class="memItemLeft" align="right" valign="top"><a id="a2932a8ecbb1997dda305f4dbef32ab0d"></a>
typedef Encoding::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a2932a8ecbb1997dda305f4dbef32ab0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae61944eee4cb6a3f7f34f3d4edce7eeb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae61944eee4cb6a3f7f34f3d4edce7eeb"></a>
-typedef internal::SelectIf<br class="typebreak" />
-&lt; internal::IsSame&lt; Derived, <br class="typebreak" />
-void &gt;, <a class="el" href="structrapidjson_1_1_base_reader_handler.html">BaseReaderHandler</a>, <br class="typebreak" />
-Derived &gt;::<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Override</b></td></tr>
+<tr class="memitem:ae61944eee4cb6a3f7f34f3d4edce7eeb"><td class="memItemLeft" align="right" valign="top"><a id="ae61944eee4cb6a3f7f34f3d4edce7eeb"></a>
+typedef internal::SelectIf&lt; internal::IsSame&lt; Derived, void &gt;, <a class="el" href="structrapidjson_1_1_base_reader_handler.html">BaseReaderHandler</a>, Derived &gt;::<a class="el" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Override</b></td></tr>
<tr class="separator:ae61944eee4cb6a3f7f34f3d4edce7eeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:a050d1b4130a924d138f762d3c914a748"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a050d1b4130a924d138f762d3c914a748"></a>
+<tr class="memitem:a050d1b4130a924d138f762d3c914a748"><td class="memItemLeft" align="right" valign="top"><a id="a050d1b4130a924d138f762d3c914a748"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Default</b> ()</td></tr>
<tr class="separator:a050d1b4130a924d138f762d3c914a748"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a823c816871a8dd881019ee8526b517cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a823c816871a8dd881019ee8526b517cb"></a>
+<tr class="memitem:a823c816871a8dd881019ee8526b517cb"><td class="memItemLeft" align="right" valign="top"><a id="a823c816871a8dd881019ee8526b517cb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Null</b> ()</td></tr>
<tr class="separator:a823c816871a8dd881019ee8526b517cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aead125c32fbf2a1311a2ba9c95b8604a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aead125c32fbf2a1311a2ba9c95b8604a"></a>
+<tr class="memitem:aead125c32fbf2a1311a2ba9c95b8604a"><td class="memItemLeft" align="right" valign="top"><a id="aead125c32fbf2a1311a2ba9c95b8604a"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Bool</b> (bool)</td></tr>
<tr class="separator:aead125c32fbf2a1311a2ba9c95b8604a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a7de3a16b56209aa2aa56a42591c426cb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7de3a16b56209aa2aa56a42591c426cb"></a>
+<tr class="memitem:a7de3a16b56209aa2aa56a42591c426cb"><td class="memItemLeft" align="right" valign="top"><a id="a7de3a16b56209aa2aa56a42591c426cb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Int</b> (int)</td></tr>
<tr class="separator:a7de3a16b56209aa2aa56a42591c426cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9627844582969a7d79a2250bdb4f9ec0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9627844582969a7d79a2250bdb4f9ec0"></a>
+<tr class="memitem:a9627844582969a7d79a2250bdb4f9ec0"><td class="memItemLeft" align="right" valign="top"><a id="a9627844582969a7d79a2250bdb4f9ec0"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Uint</b> (unsigned)</td></tr>
<tr class="separator:a9627844582969a7d79a2250bdb4f9ec0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afb78023dc0f5a31f9c5d5de4a55d9077"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afb78023dc0f5a31f9c5d5de4a55d9077"></a>
+<tr class="memitem:afb78023dc0f5a31f9c5d5de4a55d9077"><td class="memItemLeft" align="right" valign="top"><a id="afb78023dc0f5a31f9c5d5de4a55d9077"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Int64</b> (int64_t)</td></tr>
<tr class="separator:afb78023dc0f5a31f9c5d5de4a55d9077"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a76b043fefd5fac0faadf3846995af6f5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76b043fefd5fac0faadf3846995af6f5"></a>
+<tr class="memitem:a76b043fefd5fac0faadf3846995af6f5"><td class="memItemLeft" align="right" valign="top"><a id="a76b043fefd5fac0faadf3846995af6f5"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Uint64</b> (uint64_t)</td></tr>
<tr class="separator:a76b043fefd5fac0faadf3846995af6f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a03e7d273b4d317b61a4ae56e0da9097a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a03e7d273b4d317b61a4ae56e0da9097a"></a>
+<tr class="memitem:a03e7d273b4d317b61a4ae56e0da9097a"><td class="memItemLeft" align="right" valign="top"><a id="a03e7d273b4d317b61a4ae56e0da9097a"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Double</b> (double)</td></tr>
<tr class="separator:a03e7d273b4d317b61a4ae56e0da9097a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0de969fd05528960c2a7de51b2265bf1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0de969fd05528960c2a7de51b2265bf1"></a>
+<tr class="memitem:a0de969fd05528960c2a7de51b2265bf1"><td class="memItemLeft" align="right" valign="top"><a id="a0de969fd05528960c2a7de51b2265bf1"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_base_reader_handler.html#a0de969fd05528960c2a7de51b2265bf1">RawNumber</a> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, bool copy)</td></tr>
<tr class="memdesc:a0de969fd05528960c2a7de51b2265bf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length) <br /></td></tr>
<tr class="separator:a0de969fd05528960c2a7de51b2265bf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad48b724f01c31c1fdbd623bd31df6a3c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad48b724f01c31c1fdbd623bd31df6a3c"></a>
+<tr class="memitem:ad48b724f01c31c1fdbd623bd31df6a3c"><td class="memItemLeft" align="right" valign="top"><a id="ad48b724f01c31c1fdbd623bd31df6a3c"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>String</b> (const Ch *, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>, bool)</td></tr>
<tr class="separator:ad48b724f01c31c1fdbd623bd31df6a3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2f3d3bec89a751cdcf7a4236dbc6b26d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f3d3bec89a751cdcf7a4236dbc6b26d"></a>
+<tr class="memitem:a2f3d3bec89a751cdcf7a4236dbc6b26d"><td class="memItemLeft" align="right" valign="top"><a id="a2f3d3bec89a751cdcf7a4236dbc6b26d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>StartObject</b> ()</td></tr>
<tr class="separator:a2f3d3bec89a751cdcf7a4236dbc6b26d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a92649c2dc3e94e085ee056c17444d418"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a92649c2dc3e94e085ee056c17444d418"></a>
+<tr class="memitem:a92649c2dc3e94e085ee056c17444d418"><td class="memItemLeft" align="right" valign="top"><a id="a92649c2dc3e94e085ee056c17444d418"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>Key</b> (const Ch *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len, bool copy)</td></tr>
<tr class="separator:a92649c2dc3e94e085ee056c17444d418"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6216b7af34bbae857ff06363f5b13f5d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6216b7af34bbae857ff06363f5b13f5d"></a>
+<tr class="memitem:a6216b7af34bbae857ff06363f5b13f5d"><td class="memItemLeft" align="right" valign="top"><a id="a6216b7af34bbae857ff06363f5b13f5d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndObject</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>)</td></tr>
<tr class="separator:a6216b7af34bbae857ff06363f5b13f5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0c6fba36350848cb691879758b2d8d59"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c6fba36350848cb691879758b2d8d59"></a>
+<tr class="memitem:a0c6fba36350848cb691879758b2d8d59"><td class="memItemLeft" align="right" valign="top"><a id="a0c6fba36350848cb691879758b2d8d59"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>StartArray</b> ()</td></tr>
<tr class="separator:a0c6fba36350848cb691879758b2d8d59"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8fc75176ec793217d40d5a8de049cdb3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8fc75176ec793217d40d5a8de049cdb3"></a>
+<tr class="memitem:a8fc75176ec793217d40d5a8de049cdb3"><td class="memItemLeft" align="right" valign="top"><a id="a8fc75176ec793217d40d5a8de049cdb3"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>EndArray</b> (<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>)</td></tr>
<tr class="separator:a8fc75176ec793217d40d5a8de049cdb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<div class="textblock"><h3>template&lt;typename Encoding, typename Derived&gt;<br />
+<div class="textblock"><h3>template&lt;typename Encoding = UTF8&lt;&gt;, typename Derived = void&gt;<br />
struct rapidjson::BaseReaderHandler&lt; Encoding, Derived &gt;</h3>
<p>Default implementation of <a class="el" href="classrapidjson_1_1_handler.html" title="Concept for receiving events from GenericReader upon parsing. The functions return true if no error o...">Handler</a>. </p>
diff --git a/zh-cn/structrapidjson_1_1_generic_insitu_string_stream-members.html b/zh-cn/structrapidjson_1_1_generic_insitu_string_stream-members.html
index 4907dd40..268a01f6 100644
--- a/zh-cn/structrapidjson_1_1_generic_insitu_string_stream-members.html
+++ b/zh-cn/structrapidjson_1_1_generic_insitu_string_stream-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_insitu_str
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_generic_insitu_string_stream.html b/zh-cn/structrapidjson_1_1_generic_insitu_string_stream.html
index 818e9c10..884bf2d1 100644
--- a/zh-cn/structrapidjson_1_1_generic_insitu_string_stream.html
+++ b/zh-cn/structrapidjson_1_1_generic_insitu_string_stream.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericInsituStringStream&lt; Encoding &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_insitu_str
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -93,52 +94,52 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_insitu_str
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a3a7ed47ee193d1e5f850aa841b743631"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3a7ed47ee193d1e5f850aa841b743631"></a>
+<tr class="memitem:a3a7ed47ee193d1e5f850aa841b743631"><td class="memItemLeft" align="right" valign="top"><a id="a3a7ed47ee193d1e5f850aa841b743631"></a>
typedef Encoding::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a3a7ed47ee193d1e5f850aa841b743631"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:a5a17e183fec782bf9bc11d247ffbee73"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5a17e183fec782bf9bc11d247ffbee73"></a>
+<tr class="memitem:a5a17e183fec782bf9bc11d247ffbee73"><td class="memItemLeft" align="right" valign="top"><a id="a5a17e183fec782bf9bc11d247ffbee73"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>GenericInsituStringStream</b> (Ch *src)</td></tr>
<tr class="separator:a5a17e183fec782bf9bc11d247ffbee73"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0f88ca6c2d9ccd0c201ddb37dae39298"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f88ca6c2d9ccd0c201ddb37dae39298"></a>
+<tr class="memitem:a0f88ca6c2d9ccd0c201ddb37dae39298"><td class="memItemLeft" align="right" valign="top"><a id="a0f88ca6c2d9ccd0c201ddb37dae39298"></a>
Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> ()</td></tr>
<tr class="separator:a0f88ca6c2d9ccd0c201ddb37dae39298"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a99d4a96da7d602895136c90fed68695f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99d4a96da7d602895136c90fed68695f"></a>
+<tr class="memitem:a99d4a96da7d602895136c90fed68695f"><td class="memItemLeft" align="right" valign="top"><a id="a99d4a96da7d602895136c90fed68695f"></a>
Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Take</b> ()</td></tr>
<tr class="separator:a99d4a96da7d602895136c90fed68695f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2a94ae3504087a55c85c73772eaf4405"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2a94ae3504087a55c85c73772eaf4405"></a>
+<tr class="memitem:a2a94ae3504087a55c85c73772eaf4405"><td class="memItemLeft" align="right" valign="top"><a id="a2a94ae3504087a55c85c73772eaf4405"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> ()</td></tr>
<tr class="separator:a2a94ae3504087a55c85c73772eaf4405"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab6e262e1319e2645870082a2da03ce50"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab6e262e1319e2645870082a2da03ce50"></a>
+<tr class="memitem:ab6e262e1319e2645870082a2da03ce50"><td class="memItemLeft" align="right" valign="top"><a id="ab6e262e1319e2645870082a2da03ce50"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Put</b> (Ch c)</td></tr>
<tr class="separator:ab6e262e1319e2645870082a2da03ce50"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a136bffd9cb0f8dc4aa3b768f14c50546"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a136bffd9cb0f8dc4aa3b768f14c50546"></a>
+<tr class="memitem:a136bffd9cb0f8dc4aa3b768f14c50546"><td class="memItemLeft" align="right" valign="top"><a id="a136bffd9cb0f8dc4aa3b768f14c50546"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>PutBegin</b> ()</td></tr>
<tr class="separator:a136bffd9cb0f8dc4aa3b768f14c50546"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a75f19e02d6aa78478aab0d5a5c03c1c8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a75f19e02d6aa78478aab0d5a5c03c1c8"></a>
+<tr class="memitem:a75f19e02d6aa78478aab0d5a5c03c1c8"><td class="memItemLeft" align="right" valign="top"><a id="a75f19e02d6aa78478aab0d5a5c03c1c8"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>PutEnd</b> (Ch *begin)</td></tr>
<tr class="separator:a75f19e02d6aa78478aab0d5a5c03c1c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a95abb3fe7cc3b08ecb70d804eb234dc2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95abb3fe7cc3b08ecb70d804eb234dc2"></a>
+<tr class="memitem:a95abb3fe7cc3b08ecb70d804eb234dc2"><td class="memItemLeft" align="right" valign="top"><a id="a95abb3fe7cc3b08ecb70d804eb234dc2"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Flush</b> ()</td></tr>
<tr class="separator:a95abb3fe7cc3b08ecb70d804eb234dc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a33114ed86002c6ed6f1ca0bbbe3d5141"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a33114ed86002c6ed6f1ca0bbbe3d5141"></a>
+<tr class="memitem:a33114ed86002c6ed6f1ca0bbbe3d5141"><td class="memItemLeft" align="right" valign="top"><a id="a33114ed86002c6ed6f1ca0bbbe3d5141"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>Push</b> (size_t count)</td></tr>
<tr class="separator:a33114ed86002c6ed6f1ca0bbbe3d5141"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:affff67ccd9e6cd2816fd7e67cb5b147d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="affff67ccd9e6cd2816fd7e67cb5b147d"></a>
+<tr class="memitem:affff67ccd9e6cd2816fd7e67cb5b147d"><td class="memItemLeft" align="right" valign="top"><a id="affff67ccd9e6cd2816fd7e67cb5b147d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Pop</b> (size_t count)</td></tr>
<tr class="separator:affff67ccd9e6cd2816fd7e67cb5b147d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
-<tr class="memitem:ae68a80f99fd484704af045a0ccd9c00f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae68a80f99fd484704af045a0ccd9c00f"></a>
+<tr class="memitem:ae68a80f99fd484704af045a0ccd9c00f"><td class="memItemLeft" align="right" valign="top"><a id="ae68a80f99fd484704af045a0ccd9c00f"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>src_</b></td></tr>
<tr class="separator:ae68a80f99fd484704af045a0ccd9c00f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac6b5cf07cdb691f99abd52a672790d8a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac6b5cf07cdb691f99abd52a672790d8a"></a>
+<tr class="memitem:ac6b5cf07cdb691f99abd52a672790d8a"><td class="memItemLeft" align="right" valign="top"><a id="ac6b5cf07cdb691f99abd52a672790d8a"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>dst_</b></td></tr>
<tr class="separator:ac6b5cf07cdb691f99abd52a672790d8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6d611d9f5372d457373b90a711dd2717"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d611d9f5372d457373b90a711dd2717"></a>
+<tr class="memitem:a6d611d9f5372d457373b90a711dd2717"><td class="memItemLeft" align="right" valign="top"><a id="a6d611d9f5372d457373b90a711dd2717"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>head_</b></td></tr>
<tr class="separator:a6d611d9f5372d457373b90a711dd2717"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
diff --git a/zh-cn/structrapidjson_1_1_generic_member-members.html b/zh-cn/structrapidjson_1_1_generic_member-members.html
index 664a9ed7..5504a0fb 100644
--- a/zh-cn/structrapidjson_1_1_generic_member-members.html
+++ b/zh-cn/structrapidjson_1_1_generic_member-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_member.htm
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_generic_member.html b/zh-cn/structrapidjson_1_1_generic_member.html
index 9ce25d99..a4c4e1de 100644
--- a/zh-cn/structrapidjson_1_1_generic_member.html
+++ b/zh-cn/structrapidjson_1_1_generic_member.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericMember&lt; Encoding, Allocator &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_member.htm
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -91,11 +92,11 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_member.htm
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
-<tr class="memitem:ae820eaa74b415a9073f3f3855f6c6607"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae820eaa74b415a9073f3f3855f6c6607"></a>
+<tr class="memitem:ae820eaa74b415a9073f3f3855f6c6607"><td class="memItemLeft" align="right" valign="top"><a id="ae820eaa74b415a9073f3f3855f6c6607"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_member.html#ae820eaa74b415a9073f3f3855f6c6607">name</a></td></tr>
<tr class="memdesc:ae820eaa74b415a9073f3f3855f6c6607"><td class="mdescLeft">&#160;</td><td class="mdescRight">name of member (must be a string) <br /></td></tr>
<tr class="separator:ae820eaa74b415a9073f3f3855f6c6607"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8ffff2076e62d988a070a136da6ffca6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ffff2076e62d988a070a136da6ffca6"></a>
+<tr class="memitem:a8ffff2076e62d988a070a136da6ffca6"><td class="memItemLeft" align="right" valign="top"><a id="a8ffff2076e62d988a070a136da6ffca6"></a>
<a class="el" href="classrapidjson_1_1_generic_value.html">GenericValue</a>&lt; <a class="el" href="classrapidjson_1_1_encoding.html">Encoding</a>, <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_member.html#a8ffff2076e62d988a070a136da6ffca6">value</a></td></tr>
<tr class="memdesc:a8ffff2076e62d988a070a136da6ffca6"><td class="mdescLeft">&#160;</td><td class="mdescRight">value of member. <br /></td></tr>
<tr class="separator:a8ffff2076e62d988a070a136da6ffca6"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/zh-cn/structrapidjson_1_1_generic_memory_buffer-members.html b/zh-cn/structrapidjson_1_1_generic_memory_buffer-members.html
index 202f6dff..77078826 100644
--- a/zh-cn/structrapidjson_1_1_generic_memory_buffer-members.html
+++ b/zh-cn/structrapidjson_1_1_generic_memory_buffer-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_memory_buf
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -87,8 +88,8 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_memory_buf
<tr bgcolor="#f0f0f0"><td class="entry"><b>Clear</b>() (定义于 <a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Flush</b>() (定义于 <a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>GenericMemoryBuffer</b>(Allocator *allocator=0, size_t capacity=kDefaultCapacity) (定义于 <a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetBuffer</b>() const (定义于 <a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>GetSize</b>() const (定义于 <a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GetBuffer</b>() const (定义于 <a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>GetSize</b>() const (定义于 <a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>kDefaultCapacity</b> (定义于 <a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Pop</b>(size_t count) (定义于 <a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Push</b>(size_t count) (定义于 <a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_memory_buffer.html">rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
diff --git a/zh-cn/structrapidjson_1_1_generic_memory_buffer.html b/zh-cn/structrapidjson_1_1_generic_memory_buffer.html
index ce4ef778..d1a17d77 100644
--- a/zh-cn/structrapidjson_1_1_generic_memory_buffer.html
+++ b/zh-cn/structrapidjson_1_1_generic_memory_buffer.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericMemoryBuffer&lt; Allocator &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_memory_buf
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -94,54 +95,54 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_memory_buf
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a7c2ccd0d38df6d3cb3abd5aed9e100f8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7c2ccd0d38df6d3cb3abd5aed9e100f8"></a>
+<tr class="memitem:a7c2ccd0d38df6d3cb3abd5aed9e100f8"><td class="memItemLeft" align="right" valign="top"><a id="a7c2ccd0d38df6d3cb3abd5aed9e100f8"></a>
typedef char&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a7c2ccd0d38df6d3cb3abd5aed9e100f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:a56c70223d8897e245df31e22a1fea60f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56c70223d8897e245df31e22a1fea60f"></a>
+<tr class="memitem:a56c70223d8897e245df31e22a1fea60f"><td class="memItemLeft" align="right" valign="top"><a id="a56c70223d8897e245df31e22a1fea60f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>GenericMemoryBuffer</b> (<a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> *allocator=0, size_t capacity=kDefaultCapacity)</td></tr>
<tr class="separator:a56c70223d8897e245df31e22a1fea60f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a882b45865eb98aa84241ef8b87bae96d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a882b45865eb98aa84241ef8b87bae96d"></a>
+<tr class="memitem:a882b45865eb98aa84241ef8b87bae96d"><td class="memItemLeft" align="right" valign="top"><a id="a882b45865eb98aa84241ef8b87bae96d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Put</b> (Ch c)</td></tr>
<tr class="separator:a882b45865eb98aa84241ef8b87bae96d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a66a3e80663d94506cab0117777486a06"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66a3e80663d94506cab0117777486a06"></a>
+<tr class="memitem:a66a3e80663d94506cab0117777486a06"><td class="memItemLeft" align="right" valign="top"><a id="a66a3e80663d94506cab0117777486a06"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Flush</b> ()</td></tr>
<tr class="separator:a66a3e80663d94506cab0117777486a06"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1b2639889f687f0f6f1b90181918f273"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b2639889f687f0f6f1b90181918f273"></a>
+<tr class="memitem:a1b2639889f687f0f6f1b90181918f273"><td class="memItemLeft" align="right" valign="top"><a id="a1b2639889f687f0f6f1b90181918f273"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Clear</b> ()</td></tr>
<tr class="separator:a1b2639889f687f0f6f1b90181918f273"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af10d96902f7aea2eae23269c11398fbb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af10d96902f7aea2eae23269c11398fbb"></a>
+<tr class="memitem:af10d96902f7aea2eae23269c11398fbb"><td class="memItemLeft" align="right" valign="top"><a id="af10d96902f7aea2eae23269c11398fbb"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>ShrinkToFit</b> ()</td></tr>
<tr class="separator:af10d96902f7aea2eae23269c11398fbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a070ea27ab1e80df671ced9edb7d03150"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a070ea27ab1e80df671ced9edb7d03150"></a>
+<tr class="memitem:a070ea27ab1e80df671ced9edb7d03150"><td class="memItemLeft" align="right" valign="top"><a id="a070ea27ab1e80df671ced9edb7d03150"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>Push</b> (size_t count)</td></tr>
<tr class="separator:a070ea27ab1e80df671ced9edb7d03150"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abcbad3bf8a20a90b6b586e63b07aed40"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abcbad3bf8a20a90b6b586e63b07aed40"></a>
+<tr class="memitem:abcbad3bf8a20a90b6b586e63b07aed40"><td class="memItemLeft" align="right" valign="top"><a id="abcbad3bf8a20a90b6b586e63b07aed40"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Pop</b> (size_t count)</td></tr>
<tr class="separator:abcbad3bf8a20a90b6b586e63b07aed40"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa859b19dc183e781a4257fdae6f57136"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa859b19dc183e781a4257fdae6f57136"></a>
-const Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>GetBuffer</b> () const </td></tr>
-<tr class="separator:aa859b19dc183e781a4257fdae6f57136"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a917320efd5a6a8cf9cc4b6bd0eaf6b99"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a917320efd5a6a8cf9cc4b6bd0eaf6b99"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><b>GetSize</b> () const </td></tr>
-<tr class="separator:a917320efd5a6a8cf9cc4b6bd0eaf6b99"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2c05ddb3b37a57fc941d7b377e95b67a"><td class="memItemLeft" align="right" valign="top"><a id="a2c05ddb3b37a57fc941d7b377e95b67a"></a>
+const Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>GetBuffer</b> () const</td></tr>
+<tr class="separator:a2c05ddb3b37a57fc941d7b377e95b67a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a67f68c4192d6f1a7a90315f5c9bf2930"><td class="memItemLeft" align="right" valign="top"><a id="a67f68c4192d6f1a7a90315f5c9bf2930"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>GetSize</b> () const</td></tr>
+<tr class="separator:a67f68c4192d6f1a7a90315f5c9bf2930"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
-<tr class="memitem:a80a159ebb64cee80b5e7fc37f971d5a5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a80a159ebb64cee80b5e7fc37f971d5a5"></a>
+<tr class="memitem:a80a159ebb64cee80b5e7fc37f971d5a5"><td class="memItemLeft" align="right" valign="top"><a id="a80a159ebb64cee80b5e7fc37f971d5a5"></a>
internal::Stack&lt; <a class="el" href="classrapidjson_1_1_allocator.html">Allocator</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>stack_</b></td></tr>
<tr class="separator:a80a159ebb64cee80b5e7fc37f971d5a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
静态 Public 属性</h2></td></tr>
-<tr class="memitem:abaa207fb3f94da48b0c91755828f98b3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abaa207fb3f94da48b0c91755828f98b3"></a>
+<tr class="memitem:abaa207fb3f94da48b0c91755828f98b3"><td class="memItemLeft" align="right" valign="top"><a id="abaa207fb3f94da48b0c91755828f98b3"></a>
static const size_t&#160;</td><td class="memItemRight" valign="bottom"><b>kDefaultCapacity</b> = 256</td></tr>
<tr class="separator:abaa207fb3f94da48b0c91755828f98b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<div class="textblock"><h3>template&lt;typename Allocator&gt;<br />
+<div class="textblock"><h3>template&lt;typename Allocator = CrtAllocator&gt;<br />
struct rapidjson::GenericMemoryBuffer&lt; Allocator &gt;</h3>
<p>Represents an in-memory output byte stream. </p>
diff --git a/zh-cn/structrapidjson_1_1_generic_memory_buffer.js b/zh-cn/structrapidjson_1_1_generic_memory_buffer.js
index 34d504e6..ff0a28c4 100644
--- a/zh-cn/structrapidjson_1_1_generic_memory_buffer.js
+++ b/zh-cn/structrapidjson_1_1_generic_memory_buffer.js
@@ -4,8 +4,8 @@ var structrapidjson_1_1_generic_memory_buffer =
[ "GenericMemoryBuffer", "structrapidjson_1_1_generic_memory_buffer.html#a56c70223d8897e245df31e22a1fea60f", null ],
[ "Clear", "structrapidjson_1_1_generic_memory_buffer.html#a1b2639889f687f0f6f1b90181918f273", null ],
[ "Flush", "structrapidjson_1_1_generic_memory_buffer.html#a66a3e80663d94506cab0117777486a06", null ],
- [ "GetBuffer", "structrapidjson_1_1_generic_memory_buffer.html#aa859b19dc183e781a4257fdae6f57136", null ],
- [ "GetSize", "structrapidjson_1_1_generic_memory_buffer.html#a917320efd5a6a8cf9cc4b6bd0eaf6b99", null ],
+ [ "GetBuffer", "structrapidjson_1_1_generic_memory_buffer.html#a2c05ddb3b37a57fc941d7b377e95b67a", null ],
+ [ "GetSize", "structrapidjson_1_1_generic_memory_buffer.html#a67f68c4192d6f1a7a90315f5c9bf2930", null ],
[ "Pop", "structrapidjson_1_1_generic_memory_buffer.html#abcbad3bf8a20a90b6b586e63b07aed40", null ],
[ "Push", "structrapidjson_1_1_generic_memory_buffer.html#a070ea27ab1e80df671ced9edb7d03150", null ],
[ "Put", "structrapidjson_1_1_generic_memory_buffer.html#a882b45865eb98aa84241ef8b87bae96d", null ],
diff --git a/zh-cn/structrapidjson_1_1_generic_pointer_1_1_token-members.html b/zh-cn/structrapidjson_1_1_generic_pointer_1_1_token-members.html
index 5276cf91..e045495f 100644
--- a/zh-cn/structrapidjson_1_1_generic_pointer_1_1_token-members.html
+++ b/zh-cn/structrapidjson_1_1_generic_pointer_1_1_token-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_pointer_1_
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_generic_pointer_1_1_token.html b/zh-cn/structrapidjson_1_1_generic_pointer_1_1_token.html
index 3e3f24e9..a9fe7334 100644
--- a/zh-cn/structrapidjson_1_1_generic_pointer_1_1_token.html
+++ b/zh-cn/structrapidjson_1_1_generic_pointer_1_1_token.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericPointer&lt; ValueType, Allocator &gt;::Token结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_pointer_1_
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -91,21 +92,21 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_pointer_1_
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
-<tr class="memitem:aceb59c9796418c20da27b03bf1948fe8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aceb59c9796418c20da27b03bf1948fe8"></a>
+<tr class="memitem:aceb59c9796418c20da27b03bf1948fe8"><td class="memItemLeft" align="right" valign="top"><a id="aceb59c9796418c20da27b03bf1948fe8"></a>
const <a class="el" href="classrapidjson_1_1_generic_pointer.html#a850f78846c5548565f8395be5f3427b7">Ch</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_pointer_1_1_token.html#aceb59c9796418c20da27b03bf1948fe8">name</a></td></tr>
<tr class="memdesc:aceb59c9796418c20da27b03bf1948fe8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Name of the token. It has null character at the end but it can contain null character. <br /></td></tr>
<tr class="separator:aceb59c9796418c20da27b03bf1948fe8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad866d674dbddf9690ad571b65e968600"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad866d674dbddf9690ad571b65e968600"></a>
+<tr class="memitem:ad866d674dbddf9690ad571b65e968600"><td class="memItemLeft" align="right" valign="top"><a id="ad866d674dbddf9690ad571b65e968600"></a>
<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_pointer_1_1_token.html#ad866d674dbddf9690ad571b65e968600">length</a></td></tr>
<tr class="memdesc:ad866d674dbddf9690ad571b65e968600"><td class="mdescLeft">&#160;</td><td class="mdescRight">Length of the name. <br /></td></tr>
<tr class="separator:ad866d674dbddf9690ad571b65e968600"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a50331c9e3dedc34d2c79745b2e58fb2d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50331c9e3dedc34d2c79745b2e58fb2d"></a>
+<tr class="memitem:a50331c9e3dedc34d2c79745b2e58fb2d"><td class="memItemLeft" align="right" valign="top"><a id="a50331c9e3dedc34d2c79745b2e58fb2d"></a>
<a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_pointer_1_1_token.html#a50331c9e3dedc34d2c79745b2e58fb2d">index</a></td></tr>
<tr class="memdesc:a50331c9e3dedc34d2c79745b2e58fb2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">A valid array index, if it is not equal to kPointerInvalidIndex. <br /></td></tr>
<tr class="separator:a50331c9e3dedc34d2c79745b2e58fb2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<div class="textblock"><h3>template&lt;typename ValueType, typename Allocator&gt;<br />
+<div class="textblock"><h3>template&lt;typename ValueType, typename Allocator = CrtAllocator&gt;<br />
struct rapidjson::GenericPointer&lt; ValueType, Allocator &gt;::Token</h3>
<p>A token is the basic units of internal representation. </p>
diff --git a/zh-cn/structrapidjson_1_1_generic_string_ref-members.html b/zh-cn/structrapidjson_1_1_generic_string_ref-members.html
index 32e8e6e6..4a8b7fe0 100644
--- a/zh-cn/structrapidjson_1_1_generic_string_ref-members.html
+++ b/zh-cn/structrapidjson_1_1_generic_string_ref-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_string_ref
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -89,7 +90,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_string_ref
<tr><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#ad9eb120a58cee500ff3bd5706779c4e4">GenericStringRef</a>(const CharType *str, SizeType len)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">rapidjson::GenericStringRef&lt; CharType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GenericStringRef</b>(const GenericStringRef &amp;rhs) (定义于 <a class="el" href="structrapidjson_1_1_generic_string_ref.html">rapidjson::GenericStringRef&lt; CharType &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">rapidjson::GenericStringRef&lt; CharType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">length</a></td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">rapidjson::GenericStringRef&lt; CharType &gt;</a></td><td class="entry"></td></tr>
- <tr class="even"><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#af535787e3593802222f7b3f3096beff0">operator const Ch *</a>() const </td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">rapidjson::GenericStringRef&lt; CharType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr class="even"><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#a86d30bb594a41619a7a5ba6c8dcce2bd">operator const Ch *</a>() const</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">rapidjson::GenericStringRef&lt; CharType &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#a001276ee57cbcbd3c14449045c71e994">s</a></td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">rapidjson::GenericStringRef&lt; CharType &gt;</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(const CharType *str)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">rapidjson::GenericStringRef&lt; CharType &gt;</a></td><td class="entry"><span class="mlabel">related</span></td></tr>
<tr><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#a578c51ab574a50a9c760b9da7c7562f2">StringRef</a>(const CharType *str, size_t length)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">rapidjson::GenericStringRef&lt; CharType &gt;</a></td><td class="entry"><span class="mlabel">related</span></td></tr>
diff --git a/zh-cn/structrapidjson_1_1_generic_string_ref.html b/zh-cn/structrapidjson_1_1_generic_string_ref.html
index 9f15bcf3..7a941b9e 100644
--- a/zh-cn/structrapidjson_1_1_generic_string_ref.html
+++ b/zh-cn/structrapidjson_1_1_generic_string_ref.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericStringRef&lt; CharType &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_string_ref
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -94,7 +95,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_string_ref
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:aa2a8eccae3d7eb14c30bc21afb7d6fba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa2a8eccae3d7eb14c30bc21afb7d6fba"></a>
+<tr class="memitem:aa2a8eccae3d7eb14c30bc21afb7d6fba"><td class="memItemLeft" align="right" valign="top"><a id="aa2a8eccae3d7eb14c30bc21afb7d6fba"></a>
typedef CharType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#aa2a8eccae3d7eb14c30bc21afb7d6fba">Ch</a></td></tr>
<tr class="memdesc:aa2a8eccae3d7eb14c30bc21afb7d6fba"><td class="mdescLeft">&#160;</td><td class="mdescRight">character type of the string <br /></td></tr>
<tr class="separator:aa2a8eccae3d7eb14c30bc21afb7d6fba"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -103,29 +104,29 @@ typedef CharType&#160;</td><td class="memItemRight" valign="bottom"><a class="el
Public 成员函数</h2></td></tr>
<tr class="memitem:acd4d5ebac2b610ce647356aa52998002"><td class="memTemplParams" colspan="2">template&lt;SizeType N&gt; </td></tr>
<tr class="memitem:acd4d5ebac2b610ce647356aa52998002"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#acd4d5ebac2b610ce647356aa52998002">GenericStringRef</a> (const CharType(&amp;str)[N]) RAPIDJSON_NOEXCEPT</td></tr>
-<tr class="memdesc:acd4d5ebac2b610ce647356aa52998002"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create string reference from <code>const</code> character array. <a href="#acd4d5ebac2b610ce647356aa52998002">更多...</a><br /></td></tr>
+<tr class="memdesc:acd4d5ebac2b610ce647356aa52998002"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create string reference from <code>const</code> character array <a href="#acd4d5ebac2b610ce647356aa52998002">更多...</a><br /></td></tr>
<tr class="separator:acd4d5ebac2b610ce647356aa52998002"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29cf407c6aa2313f13dff78d6ce02687"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#a29cf407c6aa2313f13dff78d6ce02687">GenericStringRef</a> (const CharType *str)</td></tr>
-<tr class="memdesc:a29cf407c6aa2313f13dff78d6ce02687"><td class="mdescLeft">&#160;</td><td class="mdescRight">Explicitly create string reference from <code>const</code> character pointer. <a href="#a29cf407c6aa2313f13dff78d6ce02687">更多...</a><br /></td></tr>
+<tr class="memdesc:a29cf407c6aa2313f13dff78d6ce02687"><td class="mdescLeft">&#160;</td><td class="mdescRight">Explicitly create string reference from <code>const</code> character pointer <a href="#a29cf407c6aa2313f13dff78d6ce02687">更多...</a><br /></td></tr>
<tr class="separator:a29cf407c6aa2313f13dff78d6ce02687"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9eb120a58cee500ff3bd5706779c4e4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#ad9eb120a58cee500ff3bd5706779c4e4">GenericStringRef</a> (const CharType *str, <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len)</td></tr>
-<tr class="memdesc:ad9eb120a58cee500ff3bd5706779c4e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create constant string reference from pointer and length. <a href="#ad9eb120a58cee500ff3bd5706779c4e4">更多...</a><br /></td></tr>
+<tr class="memdesc:ad9eb120a58cee500ff3bd5706779c4e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create constant string reference from pointer and length <a href="#ad9eb120a58cee500ff3bd5706779c4e4">更多...</a><br /></td></tr>
<tr class="separator:ad9eb120a58cee500ff3bd5706779c4e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a45345164abed97ea24603d2020b33448"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a45345164abed97ea24603d2020b33448"></a>
+<tr class="memitem:a45345164abed97ea24603d2020b33448"><td class="memItemLeft" align="right" valign="top"><a id="a45345164abed97ea24603d2020b33448"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>GenericStringRef</b> (const <a class="el" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a> &amp;rhs)</td></tr>
<tr class="separator:a45345164abed97ea24603d2020b33448"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af535787e3593802222f7b3f3096beff0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af535787e3593802222f7b3f3096beff0"></a>
-&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#af535787e3593802222f7b3f3096beff0">operator const Ch *</a> () const </td></tr>
-<tr class="memdesc:af535787e3593802222f7b3f3096beff0"><td class="mdescLeft">&#160;</td><td class="mdescRight">implicit conversion to plain CharType pointer <br /></td></tr>
-<tr class="separator:af535787e3593802222f7b3f3096beff0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a86d30bb594a41619a7a5ba6c8dcce2bd"><td class="memItemLeft" align="right" valign="top"><a id="a86d30bb594a41619a7a5ba6c8dcce2bd"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#a86d30bb594a41619a7a5ba6c8dcce2bd">operator const Ch *</a> () const</td></tr>
+<tr class="memdesc:a86d30bb594a41619a7a5ba6c8dcce2bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">implicit conversion to plain CharType pointer <br /></td></tr>
+<tr class="separator:a86d30bb594a41619a7a5ba6c8dcce2bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
-<tr class="memitem:a001276ee57cbcbd3c14449045c71e994"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a001276ee57cbcbd3c14449045c71e994"></a>
+<tr class="memitem:a001276ee57cbcbd3c14449045c71e994"><td class="memItemLeft" align="right" valign="top"><a id="a001276ee57cbcbd3c14449045c71e994"></a>
const <a class="el" href="structrapidjson_1_1_generic_string_ref.html#aa2a8eccae3d7eb14c30bc21afb7d6fba">Ch</a> *const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#a001276ee57cbcbd3c14449045c71e994">s</a></td></tr>
<tr class="memdesc:a001276ee57cbcbd3c14449045c71e994"><td class="mdescLeft">&#160;</td><td class="mdescRight">plain CharType pointer <br /></td></tr>
<tr class="separator:a001276ee57cbcbd3c14449045c71e994"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae223535ec20edf0c1db44a40b7735111"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae223535ec20edf0c1db44a40b7735111"></a>
+<tr class="memitem:ae223535ec20edf0c1db44a40b7735111"><td class="memItemLeft" align="right" valign="top"><a id="ae223535ec20edf0c1db44a40b7735111"></a>
const <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">length</a></td></tr>
<tr class="memdesc:ae223535ec20edf0c1db44a40b7735111"><td class="mdescLeft">&#160;</td><td class="mdescRight">length of the string (excluding the trailing NULL terminator) <br /></td></tr>
<tr class="separator:ae223535ec20edf0c1db44a40b7735111"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -136,15 +137,15 @@ const <a class="el" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85
</td></tr>
<tr class="memitem:aa6b9fd9f6aa49405a574c362ba9af6b5"><td class="memTemplParams" colspan="2">template&lt;typename CharType &gt; </td></tr>
<tr class="memitem:aa6b9fd9f6aa49405a574c362ba9af6b5"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>&lt; CharType &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a> (const CharType *str)</td></tr>
-<tr class="memdesc:aa6b9fd9f6aa49405a574c362ba9af6b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a character pointer as constant string. <a href="#aa6b9fd9f6aa49405a574c362ba9af6b5">更多...</a><br /></td></tr>
+<tr class="memdesc:aa6b9fd9f6aa49405a574c362ba9af6b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a character pointer as constant string <a href="#aa6b9fd9f6aa49405a574c362ba9af6b5">更多...</a><br /></td></tr>
<tr class="separator:aa6b9fd9f6aa49405a574c362ba9af6b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a578c51ab574a50a9c760b9da7c7562f2"><td class="memTemplParams" colspan="2">template&lt;typename CharType &gt; </td></tr>
<tr class="memitem:a578c51ab574a50a9c760b9da7c7562f2"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>&lt; CharType &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#a578c51ab574a50a9c760b9da7c7562f2">StringRef</a> (const CharType *str, size_t <a class="el" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">length</a>)</td></tr>
-<tr class="memdesc:a578c51ab574a50a9c760b9da7c7562f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a character pointer as constant string. <a href="#a578c51ab574a50a9c760b9da7c7562f2">更多...</a><br /></td></tr>
+<tr class="memdesc:a578c51ab574a50a9c760b9da7c7562f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a character pointer as constant string <a href="#a578c51ab574a50a9c760b9da7c7562f2">更多...</a><br /></td></tr>
<tr class="separator:a578c51ab574a50a9c760b9da7c7562f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af94951529a5d51e8c4e6e770bb707c1f"><td class="memTemplParams" colspan="2">template&lt;typename CharType &gt; </td></tr>
<tr class="memitem:af94951529a5d51e8c4e6e770bb707c1f"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="structrapidjson_1_1_generic_string_ref.html">GenericStringRef</a>&lt; CharType &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_string_ref.html#af94951529a5d51e8c4e6e770bb707c1f">StringRef</a> (const std::basic_string&lt; CharType &gt; &amp;str)</td></tr>
-<tr class="memdesc:af94951529a5d51e8c4e6e770bb707c1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a string object as constant string. <a href="#af94951529a5d51e8c4e6e770bb707c1f">更多...</a><br /></td></tr>
+<tr class="memdesc:af94951529a5d51e8c4e6e770bb707c1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mark a string object as constant string <a href="#af94951529a5d51e8c4e6e770bb707c1f">更多...</a><br /></td></tr>
<tr class="separator:af94951529a5d51e8c4e6e770bb707c1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
@@ -160,17 +161,11 @@ struct rapidjson::GenericStringRef&lt; CharType &gt;</h3>
</dl>
<p>This helper class is used to automatically infer constant string references for string literals, especially from <code>const</code> <b></b>(!) character arrays.</p>
<p>The main use is for creating JSON string values without copying the source string via an <a class="el" href="md_doc_dom_8zh-cn.html#Allocator">分配器</a>. This requires that the referenced string pointers have a sufficient lifetime, which exceeds the lifetime of the associated <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a>.</p>
-<p><b>Example</b> </p><div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> v(<span class="stringliteral">&quot;foo&quot;</span>); <span class="comment">// ok, no need to copy &amp; calculate length</span></div>
-<div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span> foo[] = <span class="stringliteral">&quot;foo&quot;</span>;</div>
-<div class="line">v.SetString(foo); <span class="comment">// ok</span></div>
-<div class="line"></div>
-<div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* bar = foo;</div>
-<div class="line"><span class="comment">// Value x(bar); // not ok, can&#39;t rely on bar&#39;s lifetime</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> x(<a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(bar)); <span class="comment">// lifetime explicitly guaranteed by user</span></div>
-<div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> y(<a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(bar, 3)); <span class="comment">// ok, explicitly pass length</span></div>
-</div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5" title="Mark a character pointer as constant string. ">StringRef</a>, <a class="el" href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f" title="Set this value as a string without copying source string. ">GenericValue::SetString</a> </dd></dl>
+<p><b>Example</b> </p><div class="fragment"><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> v(<span class="stringliteral">&quot;foo&quot;</span>); <span class="comment">// ok, no need to copy &amp; calculate length</span></div><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span> foo[] = <span class="stringliteral">&quot;foo&quot;</span>;</div><div class="line">v.SetString(foo); <span class="comment">// ok</span></div><div class="line"></div><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* bar = foo;</div><div class="line"><span class="comment">// Value x(bar); // not ok, can&#39;t rely on bar&#39;s lifetime</span></div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> x(<a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(bar)); <span class="comment">// lifetime explicitly guaranteed by user</span></div><div class="line"><a class="code" href="namespacerapidjson.html#aa65fc9fb381b2cbc54f98673eadd6505">Value</a> y(<a class="code" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef</a>(bar, 3)); <span class="comment">// ok, explicitly pass length</span></div></div><!-- fragment --><dl class="section see"><dt>参见</dt><dd><a class="el" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5" title="Mark a character pointer as constant string ">StringRef</a>, <a class="el" href="classrapidjson_1_1_generic_value.html#afb91480cc6242ca96ffc603e649c319f" title="Set this value as a string without copying source string. ">GenericValue::SetString</a> </dd></dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
-<a class="anchor" id="acd4d5ebac2b610ce647356aa52998002"></a>
+<a id="acd4d5ebac2b610ce647356aa52998002"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acd4d5ebac2b610ce647356aa52998002">&#9670;&nbsp;</a></span>GenericStringRef() <span class="overload">[1/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -196,7 +191,7 @@ template&lt;SizeType N&gt; </div>
</table>
</div><div class="memdoc">
-<p>Create string reference from <code>const</code> character array. </p>
+<p>Create string reference from <code>const</code> character array </p>
<p>This constructor implicitly creates a constant string reference from a <code>const</code> character array. It has better performance than <a class="el" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5">StringRef(const CharType*)</a> by inferring the string <a class="el" href="structrapidjson_1_1_generic_string_ref.html#ae223535ec20edf0c1db44a40b7735111">length</a> from the array length, and also supports strings containing null characters.</p>
<dl class="tparams"><dt>模板参数</dt><dd>
<table class="tparams">
@@ -217,7 +212,9 @@ There is a hidden, private overload to disallow references to non-const characte
</div>
</div>
-<a class="anchor" id="a29cf407c6aa2313f13dff78d6ce02687"></a>
+<a id="a29cf407c6aa2313f13dff78d6ce02687"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a29cf407c6aa2313f13dff78d6ce02687">&#9670;&nbsp;</a></span>GenericStringRef() <span class="overload">[2/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -241,9 +238,9 @@ template&lt;typename CharType&gt; </div>
</table>
</div><div class="memdoc">
-<p>Explicitly create string reference from <code>const</code> character pointer. </p>
+<p>Explicitly create string reference from <code>const</code> character pointer </p>
<p>This constructor can be used to <b>explicitly</b> create a reference to a constant string pointer.</p>
-<dl class="section see"><dt>参见</dt><dd><a class="el" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5" title="Mark a character pointer as constant string. ">StringRef(const CharType*)</a></dd></dl>
+<dl class="section see"><dt>参见</dt><dd><a class="el" href="structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5" title="Mark a character pointer as constant string ">StringRef(const CharType*)</a></dd></dl>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>Constant character pointer, lifetime assumed to be longer than the use of the string in e.g. a <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a></td></tr>
@@ -255,7 +252,9 @@ template&lt;typename CharType&gt; </div>
</div>
</div>
-<a class="anchor" id="ad9eb120a58cee500ff3bd5706779c4e4"></a>
+<a id="ad9eb120a58cee500ff3bd5706779c4e4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad9eb120a58cee500ff3bd5706779c4e4">&#9670;&nbsp;</a></span>GenericStringRef() <span class="overload">[3/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -289,7 +288,7 @@ template&lt;typename CharType&gt; </div>
</table>
</div><div class="memdoc">
-<p>Create constant string reference from pointer and length. </p>
+<p>Create constant string reference from pointer and length </p>
<dl class="params"><dt>参数</dt><dd>
<table class="params">
<tr><td class="paramname">str</td><td>constant string, lifetime assumed to be longer than the use of the string in e.g. a <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> </td></tr>
@@ -303,7 +302,9 @@ template&lt;typename CharType&gt; </div>
</div>
</div>
<h2 class="groupheader">友元及相关函数文档</h2>
-<a class="anchor" id="aa6b9fd9f6aa49405a574c362ba9af6b5"></a>
+<a id="aa6b9fd9f6aa49405a574c362ba9af6b5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa6b9fd9f6aa49405a574c362ba9af6b5">&#9670;&nbsp;</a></span>StringRef() <span class="overload">[1/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -327,7 +328,7 @@ template&lt;typename CharType &gt; </div>
</table>
</div><div class="memdoc">
-<p>Mark a character pointer as constant string. </p>
+<p>Mark a character pointer as constant string </p>
<p>Mark a plain character pointer as a "string literal". This function can be used to avoid copying a character string to be referenced as a value in a JSON <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> object, if the string's lifetime is known to be valid long enough. </p><dl class="tparams"><dt>模板参数</dt><dd>
<table class="tparams">
<tr><td class="paramname">CharType</td><td>Character type of the string </td></tr>
@@ -345,7 +346,9 @@ template&lt;typename CharType &gt; </div>
</div>
</div>
-<a class="anchor" id="a578c51ab574a50a9c760b9da7c7562f2"></a>
+<a id="a578c51ab574a50a9c760b9da7c7562f2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a578c51ab574a50a9c760b9da7c7562f2">&#9670;&nbsp;</a></span>StringRef() <span class="overload">[2/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -379,7 +382,7 @@ template&lt;typename CharType &gt; </div>
</table>
</div><div class="memdoc">
-<p>Mark a character pointer as constant string. </p>
+<p>Mark a character pointer as constant string </p>
<p>Mark a plain character pointer as a "string literal". This function can be used to avoid copying a character string to be referenced as a value in a JSON <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> object, if the string's lifetime is known to be valid long enough.</p>
<p>This version has better performance with supplied length, and also supports string containing null characters.</p>
<dl class="tparams"><dt>模板参数</dt><dd>
@@ -399,7 +402,9 @@ template&lt;typename CharType &gt; </div>
</div>
</div>
-<a class="anchor" id="af94951529a5d51e8c4e6e770bb707c1f"></a>
+<a id="af94951529a5d51e8c4e6e770bb707c1f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af94951529a5d51e8c4e6e770bb707c1f">&#9670;&nbsp;</a></span>StringRef() <span class="overload">[3/3]</span></h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
@@ -423,7 +428,7 @@ template&lt;typename CharType &gt; </div>
</table>
</div><div class="memdoc">
-<p>Mark a string object as constant string. </p>
+<p>Mark a string object as constant string </p>
<p>Mark a string object (e.g. <code>std::string</code>) as a "string literal". This function can be used to avoid copying a string to be referenced as a value in a JSON <a class="el" href="classrapidjson_1_1_generic_value.html" title="Represents a JSON value. Use Value for UTF8 encoding and default allocator. ">GenericValue</a> object, if the string's lifetime is known to be valid long enough.</p>
<dl class="tparams"><dt>模板参数</dt><dd>
<table class="tparams">
diff --git a/zh-cn/structrapidjson_1_1_generic_string_ref.js b/zh-cn/structrapidjson_1_1_generic_string_ref.js
index 47363c46..d343cc75 100644
--- a/zh-cn/structrapidjson_1_1_generic_string_ref.js
+++ b/zh-cn/structrapidjson_1_1_generic_string_ref.js
@@ -5,7 +5,7 @@ var structrapidjson_1_1_generic_string_ref =
[ "GenericStringRef", "structrapidjson_1_1_generic_string_ref.html#a29cf407c6aa2313f13dff78d6ce02687", null ],
[ "GenericStringRef", "structrapidjson_1_1_generic_string_ref.html#ad9eb120a58cee500ff3bd5706779c4e4", null ],
[ "GenericStringRef", "structrapidjson_1_1_generic_string_ref.html#a45345164abed97ea24603d2020b33448", null ],
- [ "operator const Ch *", "structrapidjson_1_1_generic_string_ref.html#af535787e3593802222f7b3f3096beff0", null ],
+ [ "operator const Ch *", "structrapidjson_1_1_generic_string_ref.html#a86d30bb594a41619a7a5ba6c8dcce2bd", null ],
[ "StringRef", "structrapidjson_1_1_generic_string_ref.html#aa6b9fd9f6aa49405a574c362ba9af6b5", null ],
[ "StringRef", "structrapidjson_1_1_generic_string_ref.html#a578c51ab574a50a9c760b9da7c7562f2", null ],
[ "StringRef", "structrapidjson_1_1_generic_string_ref.html#af94951529a5d51e8c4e6e770bb707c1f", null ],
diff --git a/zh-cn/structrapidjson_1_1_generic_string_stream-members.html b/zh-cn/structrapidjson_1_1_generic_string_stream-members.html
index 5a6e7df4..8641a5e9 100644
--- a/zh-cn/structrapidjson_1_1_generic_string_stream-members.html
+++ b/zh-cn/structrapidjson_1_1_generic_string_stream-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_string_str
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -87,13 +88,13 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_string_str
<tr bgcolor="#f0f0f0"><td class="entry"><b>Flush</b>() (定义于 <a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>GenericStringStream</b>(const Ch *src) (定义于 <a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_stream.html#a2556705b0a0fd6393862efe6db025b32">head_</a></td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a></td><td class="entry"></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Put</b>(Ch) (定义于 <a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PutBegin</b>() (定义于 <a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>PutEnd</b>(Ch *) (定义于 <a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a></td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Take</b>() (定义于 <a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream&lt; Encoding &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/structrapidjson_1_1_generic_string_stream.html b/zh-cn/structrapidjson_1_1_generic_string_stream.html
index 925293c6..8b1520bd 100644
--- a/zh-cn/structrapidjson_1_1_generic_string_stream.html
+++ b/zh-cn/structrapidjson_1_1_generic_string_stream.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericStringStream&lt; Encoding &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_string_str
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -93,44 +94,44 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_string_str
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a70ad06c96ddf8349be59f3d4f6bbadc8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70ad06c96ddf8349be59f3d4f6bbadc8"></a>
+<tr class="memitem:a70ad06c96ddf8349be59f3d4f6bbadc8"><td class="memItemLeft" align="right" valign="top"><a id="a70ad06c96ddf8349be59f3d4f6bbadc8"></a>
typedef Encoding::Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a70ad06c96ddf8349be59f3d4f6bbadc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:ab160d646f4560d7b95f3fd816c3aac9a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab160d646f4560d7b95f3fd816c3aac9a"></a>
+<tr class="memitem:ab160d646f4560d7b95f3fd816c3aac9a"><td class="memItemLeft" align="right" valign="top"><a id="ab160d646f4560d7b95f3fd816c3aac9a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>GenericStringStream</b> (const Ch *src)</td></tr>
<tr class="separator:ab160d646f4560d7b95f3fd816c3aac9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3e8943d1072d2390f4b09d223c8bf4e0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3e8943d1072d2390f4b09d223c8bf4e0"></a>
-Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const </td></tr>
-<tr class="separator:a3e8943d1072d2390f4b09d223c8bf4e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a56bb2351836bace23555f4dc5abf57b1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56bb2351836bace23555f4dc5abf57b1"></a>
+<tr class="memitem:aa941b18ff3849494ca3692a8688500da"><td class="memItemLeft" align="right" valign="top"><a id="aa941b18ff3849494ca3692a8688500da"></a>
+Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const</td></tr>
+<tr class="separator:aa941b18ff3849494ca3692a8688500da"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a56bb2351836bace23555f4dc5abf57b1"><td class="memItemLeft" align="right" valign="top"><a id="a56bb2351836bace23555f4dc5abf57b1"></a>
Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Take</b> ()</td></tr>
<tr class="separator:a56bb2351836bace23555f4dc5abf57b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a01cec5597b6e399ea37df9b4bda8ffce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01cec5597b6e399ea37df9b4bda8ffce"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const </td></tr>
-<tr class="separator:a01cec5597b6e399ea37df9b4bda8ffce"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aca059ce7c89211420513940db8a52668"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca059ce7c89211420513940db8a52668"></a>
+<tr class="memitem:a7b0cfaa0a08c80fa30140ba5679001c0"><td class="memItemLeft" align="right" valign="top"><a id="a7b0cfaa0a08c80fa30140ba5679001c0"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const</td></tr>
+<tr class="separator:a7b0cfaa0a08c80fa30140ba5679001c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aca059ce7c89211420513940db8a52668"><td class="memItemLeft" align="right" valign="top"><a id="aca059ce7c89211420513940db8a52668"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>PutBegin</b> ()</td></tr>
<tr class="separator:aca059ce7c89211420513940db8a52668"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9a515c0ba83ad9029d1560952584cd2e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a515c0ba83ad9029d1560952584cd2e"></a>
+<tr class="memitem:a9a515c0ba83ad9029d1560952584cd2e"><td class="memItemLeft" align="right" valign="top"><a id="a9a515c0ba83ad9029d1560952584cd2e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Put</b> (Ch)</td></tr>
<tr class="separator:a9a515c0ba83ad9029d1560952584cd2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5c7a3e097eb461b9cec5976576ecb9e4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c7a3e097eb461b9cec5976576ecb9e4"></a>
+<tr class="memitem:a5c7a3e097eb461b9cec5976576ecb9e4"><td class="memItemLeft" align="right" valign="top"><a id="a5c7a3e097eb461b9cec5976576ecb9e4"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Flush</b> ()</td></tr>
<tr class="separator:a5c7a3e097eb461b9cec5976576ecb9e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a105adc6eec3483f90f6f2cf57aa81c12"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a105adc6eec3483f90f6f2cf57aa81c12"></a>
+<tr class="memitem:a105adc6eec3483f90f6f2cf57aa81c12"><td class="memItemLeft" align="right" valign="top"><a id="a105adc6eec3483f90f6f2cf57aa81c12"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>PutEnd</b> (Ch *)</td></tr>
<tr class="separator:a105adc6eec3483f90f6f2cf57aa81c12"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
-<tr class="memitem:a9a38a9d5b1ce782cacd4ec1bdf87fc2d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a38a9d5b1ce782cacd4ec1bdf87fc2d"></a>
+<tr class="memitem:a9a38a9d5b1ce782cacd4ec1bdf87fc2d"><td class="memItemLeft" align="right" valign="top"><a id="a9a38a9d5b1ce782cacd4ec1bdf87fc2d"></a>
const Ch *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a></td></tr>
<tr class="memdesc:a9a38a9d5b1ce782cacd4ec1bdf87fc2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Current read position. <br /></td></tr>
<tr class="separator:a9a38a9d5b1ce782cacd4ec1bdf87fc2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2556705b0a0fd6393862efe6db025b32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2556705b0a0fd6393862efe6db025b32"></a>
+<tr class="memitem:a2556705b0a0fd6393862efe6db025b32"><td class="memItemLeft" align="right" valign="top"><a id="a2556705b0a0fd6393862efe6db025b32"></a>
const Ch *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_generic_string_stream.html#a2556705b0a0fd6393862efe6db025b32">head_</a></td></tr>
<tr class="memdesc:a2556705b0a0fd6393862efe6db025b32"><td class="mdescLeft">&#160;</td><td class="mdescRight">Original head of the string. <br /></td></tr>
<tr class="separator:a2556705b0a0fd6393862efe6db025b32"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/zh-cn/structrapidjson_1_1_generic_string_stream.js b/zh-cn/structrapidjson_1_1_generic_string_stream.js
index cfc02d59..3a9737e8 100644
--- a/zh-cn/structrapidjson_1_1_generic_string_stream.js
+++ b/zh-cn/structrapidjson_1_1_generic_string_stream.js
@@ -3,12 +3,12 @@ var structrapidjson_1_1_generic_string_stream =
[ "Ch", "structrapidjson_1_1_generic_string_stream.html#a70ad06c96ddf8349be59f3d4f6bbadc8", null ],
[ "GenericStringStream", "structrapidjson_1_1_generic_string_stream.html#ab160d646f4560d7b95f3fd816c3aac9a", null ],
[ "Flush", "structrapidjson_1_1_generic_string_stream.html#a5c7a3e097eb461b9cec5976576ecb9e4", null ],
- [ "Peek", "structrapidjson_1_1_generic_string_stream.html#a3e8943d1072d2390f4b09d223c8bf4e0", null ],
+ [ "Peek", "structrapidjson_1_1_generic_string_stream.html#aa941b18ff3849494ca3692a8688500da", null ],
[ "Put", "structrapidjson_1_1_generic_string_stream.html#a9a515c0ba83ad9029d1560952584cd2e", null ],
[ "PutBegin", "structrapidjson_1_1_generic_string_stream.html#aca059ce7c89211420513940db8a52668", null ],
[ "PutEnd", "structrapidjson_1_1_generic_string_stream.html#a105adc6eec3483f90f6f2cf57aa81c12", null ],
[ "Take", "structrapidjson_1_1_generic_string_stream.html#a56bb2351836bace23555f4dc5abf57b1", null ],
- [ "Tell", "structrapidjson_1_1_generic_string_stream.html#a01cec5597b6e399ea37df9b4bda8ffce", null ],
+ [ "Tell", "structrapidjson_1_1_generic_string_stream.html#a7b0cfaa0a08c80fa30140ba5679001c0", null ],
[ "head_", "structrapidjson_1_1_generic_string_stream.html#a2556705b0a0fd6393862efe6db025b32", null ],
[ "src_", "structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d", null ]
]; \ No newline at end of file
diff --git a/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_i-members.html b/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_i-members.html
index 4c50b216..2a556f16 100644
--- a/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_i-members.html
+++ b/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_i-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_value_1_1_
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_i.html b/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_i.html
index 10ffcaf7..ad403fd7 100644
--- a/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_i.html
+++ b/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_i.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericValue&lt; Encoding, Allocator &gt;::Number::I结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_value_1_1_
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -86,10 +87,10 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_value_1_1_
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
-<tr class="memitem:ae0b11ea3695bf3abb23d5cef1f1517d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae0b11ea3695bf3abb23d5cef1f1517d2"></a>
+<tr class="memitem:ae0b11ea3695bf3abb23d5cef1f1517d2"><td class="memItemLeft" align="right" valign="top"><a id="ae0b11ea3695bf3abb23d5cef1f1517d2"></a>
char&#160;</td><td class="memItemRight" valign="bottom"><b>padding</b> [4]</td></tr>
<tr class="separator:ae0b11ea3695bf3abb23d5cef1f1517d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aee43f62c5529fb886642fb410ff93a05"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aee43f62c5529fb886642fb410ff93a05"></a>
+<tr class="memitem:aee43f62c5529fb886642fb410ff93a05"><td class="memItemLeft" align="right" valign="top"><a id="aee43f62c5529fb886642fb410ff93a05"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>i</b></td></tr>
<tr class="separator:aee43f62c5529fb886642fb410ff93a05"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
diff --git a/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_u-members.html b/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_u-members.html
index bfdae4c1..305952aa 100644
--- a/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_u-members.html
+++ b/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_u-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_value_1_1_
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_u.html b/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_u.html
index 09e9fbc3..87692f72 100644
--- a/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_u.html
+++ b/zh-cn/structrapidjson_1_1_generic_value_1_1_number_1_1_u.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::GenericValue&lt; Encoding, Allocator &gt;::Number::U结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_value_1_1_
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -86,10 +87,10 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_generic_value_1_1_
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
-<tr class="memitem:a5e882e180f56ea6cc4fd1e1d508e5a63"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e882e180f56ea6cc4fd1e1d508e5a63"></a>
+<tr class="memitem:a5e882e180f56ea6cc4fd1e1d508e5a63"><td class="memItemLeft" align="right" valign="top"><a id="a5e882e180f56ea6cc4fd1e1d508e5a63"></a>
char&#160;</td><td class="memItemRight" valign="bottom"><b>padding2</b> [4]</td></tr>
<tr class="separator:a5e882e180f56ea6cc4fd1e1d508e5a63"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa624c2fe538411dd515dcfb0d72472b1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa624c2fe538411dd515dcfb0d72472b1"></a>
+<tr class="memitem:aa624c2fe538411dd515dcfb0d72472b1"><td class="memItemLeft" align="right" valign="top"><a id="aa624c2fe538411dd515dcfb0d72472b1"></a>
unsigned&#160;</td><td class="memItemRight" valign="bottom"><b>u</b></td></tr>
<tr class="separator:aa624c2fe538411dd515dcfb0d72472b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
diff --git a/zh-cn/structrapidjson_1_1_memory_stream-members.html b/zh-cn/structrapidjson_1_1_memory_stream-members.html
index 97d9621b..4af2752a 100644
--- a/zh-cn/structrapidjson_1_1_memory_stream-members.html
+++ b/zh-cn/structrapidjson_1_1_memory_stream-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_memory_stream.html
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -88,15 +89,15 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_memory_stream.html
<tr class="even"><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html#a47f45298891e8156121b4017954fabe8">end_</a></td><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Flush</b>() (定义于 <a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MemoryStream</b>(const Ch *src, size_t size) (定义于 <a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Peek4</b>() const (定义于 <a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Peek</b>() const (定义于 <a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Peek4</b>() const (定义于 <a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>Put</b>(Ch) (定义于 <a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PutBegin</b>() (定义于 <a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>PutEnd</b>(Ch *) (定义于 <a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html#a8c8437d59c32168a74226312d9e96ace">size_</a></td><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html#ac0b4da6016e5ba6241604fd4258fb722">src_</a></td><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Take</b>() (定义于 <a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
- <tr bgcolor="#f0f0f0"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+ <tr bgcolor="#f0f0f0"><td class="entry"><b>Tell</b>() const (定义于 <a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a>)</td><td class="entry"><a class="el" href="structrapidjson_1_1_memory_stream.html">rapidjson::MemoryStream</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
</table></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
diff --git a/zh-cn/structrapidjson_1_1_memory_stream.html b/zh-cn/structrapidjson_1_1_memory_stream.html
index a2f3de89..45044dc1 100644
--- a/zh-cn/structrapidjson_1_1_memory_stream.html
+++ b/zh-cn/structrapidjson_1_1_memory_stream.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::MemoryStream结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_memory_stream.html
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -93,55 +94,55 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_memory_stream.html
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:abf9f7cf51a5830ae45e24f5d55fdceaf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf9f7cf51a5830ae45e24f5d55fdceaf"></a>
+<tr class="memitem:abf9f7cf51a5830ae45e24f5d55fdceaf"><td class="memItemLeft" align="right" valign="top"><a id="abf9f7cf51a5830ae45e24f5d55fdceaf"></a>
typedef char&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:abf9f7cf51a5830ae45e24f5d55fdceaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:a78a2158aae245de652bad7d53de1772c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a78a2158aae245de652bad7d53de1772c"></a>
+<tr class="memitem:a78a2158aae245de652bad7d53de1772c"><td class="memItemLeft" align="right" valign="top"><a id="a78a2158aae245de652bad7d53de1772c"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>MemoryStream</b> (const Ch *src, size_t size)</td></tr>
<tr class="separator:a78a2158aae245de652bad7d53de1772c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a31ff2fc33c3611f0b97105ce7fa29be8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a31ff2fc33c3611f0b97105ce7fa29be8"></a>
-Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const </td></tr>
-<tr class="separator:a31ff2fc33c3611f0b97105ce7fa29be8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa0f6a8e627bc071d96bd1dbb50188f68"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa0f6a8e627bc071d96bd1dbb50188f68"></a>
+<tr class="memitem:abfe6486d171f52af46147031e0c65bb6"><td class="memItemLeft" align="right" valign="top"><a id="abfe6486d171f52af46147031e0c65bb6"></a>
+Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Peek</b> () const</td></tr>
+<tr class="separator:abfe6486d171f52af46147031e0c65bb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa0f6a8e627bc071d96bd1dbb50188f68"><td class="memItemLeft" align="right" valign="top"><a id="aa0f6a8e627bc071d96bd1dbb50188f68"></a>
Ch&#160;</td><td class="memItemRight" valign="bottom"><b>Take</b> ()</td></tr>
<tr class="separator:aa0f6a8e627bc071d96bd1dbb50188f68"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5bee48e0635814286a1bc7e0166763c1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5bee48e0635814286a1bc7e0166763c1"></a>
-size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const </td></tr>
-<tr class="separator:a5bee48e0635814286a1bc7e0166763c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9cda045c9d01e18c4d4b06b2afe2edf2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9cda045c9d01e18c4d4b06b2afe2edf2"></a>
+<tr class="memitem:ab759106a74ad078260c2c1029bfb7030"><td class="memItemLeft" align="right" valign="top"><a id="ab759106a74ad078260c2c1029bfb7030"></a>
+size_t&#160;</td><td class="memItemRight" valign="bottom"><b>Tell</b> () const</td></tr>
+<tr class="separator:ab759106a74ad078260c2c1029bfb7030"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9cda045c9d01e18c4d4b06b2afe2edf2"><td class="memItemLeft" align="right" valign="top"><a id="a9cda045c9d01e18c4d4b06b2afe2edf2"></a>
Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>PutBegin</b> ()</td></tr>
<tr class="separator:a9cda045c9d01e18c4d4b06b2afe2edf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3721da916bbddb54c97f631c3d8eb811"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3721da916bbddb54c97f631c3d8eb811"></a>
+<tr class="memitem:a3721da916bbddb54c97f631c3d8eb811"><td class="memItemLeft" align="right" valign="top"><a id="a3721da916bbddb54c97f631c3d8eb811"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Put</b> (Ch)</td></tr>
<tr class="separator:a3721da916bbddb54c97f631c3d8eb811"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1c16eac80906e4ff0c1ad1bc6fe43635"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c16eac80906e4ff0c1ad1bc6fe43635"></a>
+<tr class="memitem:a1c16eac80906e4ff0c1ad1bc6fe43635"><td class="memItemLeft" align="right" valign="top"><a id="a1c16eac80906e4ff0c1ad1bc6fe43635"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>Flush</b> ()</td></tr>
<tr class="separator:a1c16eac80906e4ff0c1ad1bc6fe43635"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2135b36b12e5fcd2ee575b9a9cdb579c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2135b36b12e5fcd2ee575b9a9cdb579c"></a>
+<tr class="memitem:a2135b36b12e5fcd2ee575b9a9cdb579c"><td class="memItemLeft" align="right" valign="top"><a id="a2135b36b12e5fcd2ee575b9a9cdb579c"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>PutEnd</b> (Ch *)</td></tr>
<tr class="separator:a2135b36b12e5fcd2ee575b9a9cdb579c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a3471216ab10f9e8a4dab072028948985"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3471216ab10f9e8a4dab072028948985"></a>
-const Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>Peek4</b> () const </td></tr>
-<tr class="separator:a3471216ab10f9e8a4dab072028948985"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad17be8ddf7b91d91b70fe1cdf5478d14"><td class="memItemLeft" align="right" valign="top"><a id="ad17be8ddf7b91d91b70fe1cdf5478d14"></a>
+const Ch *&#160;</td><td class="memItemRight" valign="bottom"><b>Peek4</b> () const</td></tr>
+<tr class="separator:ad17be8ddf7b91d91b70fe1cdf5478d14"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
-<tr class="memitem:ac0b4da6016e5ba6241604fd4258fb722"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac0b4da6016e5ba6241604fd4258fb722"></a>
+<tr class="memitem:ac0b4da6016e5ba6241604fd4258fb722"><td class="memItemLeft" align="right" valign="top"><a id="ac0b4da6016e5ba6241604fd4258fb722"></a>
const Ch *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_memory_stream.html#ac0b4da6016e5ba6241604fd4258fb722">src_</a></td></tr>
<tr class="memdesc:ac0b4da6016e5ba6241604fd4258fb722"><td class="mdescLeft">&#160;</td><td class="mdescRight">Current read position. <br /></td></tr>
<tr class="separator:ac0b4da6016e5ba6241604fd4258fb722"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1cc586e50fbfc0bd5994977b42243b93"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1cc586e50fbfc0bd5994977b42243b93"></a>
+<tr class="memitem:a1cc586e50fbfc0bd5994977b42243b93"><td class="memItemLeft" align="right" valign="top"><a id="a1cc586e50fbfc0bd5994977b42243b93"></a>
const Ch *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_memory_stream.html#a1cc586e50fbfc0bd5994977b42243b93">begin_</a></td></tr>
<tr class="memdesc:a1cc586e50fbfc0bd5994977b42243b93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Original head of the string. <br /></td></tr>
<tr class="separator:a1cc586e50fbfc0bd5994977b42243b93"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a47f45298891e8156121b4017954fabe8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a47f45298891e8156121b4017954fabe8"></a>
+<tr class="memitem:a47f45298891e8156121b4017954fabe8"><td class="memItemLeft" align="right" valign="top"><a id="a47f45298891e8156121b4017954fabe8"></a>
const Ch *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_memory_stream.html#a47f45298891e8156121b4017954fabe8">end_</a></td></tr>
<tr class="memdesc:a47f45298891e8156121b4017954fabe8"><td class="mdescLeft">&#160;</td><td class="mdescRight">End of stream. <br /></td></tr>
<tr class="separator:a47f45298891e8156121b4017954fabe8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8c8437d59c32168a74226312d9e96ace"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8c8437d59c32168a74226312d9e96ace"></a>
+<tr class="memitem:a8c8437d59c32168a74226312d9e96ace"><td class="memItemLeft" align="right" valign="top"><a id="a8c8437d59c32168a74226312d9e96ace"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_memory_stream.html#a8c8437d59c32168a74226312d9e96ace">size_</a></td></tr>
<tr class="memdesc:a8c8437d59c32168a74226312d9e96ace"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of the stream. <br /></td></tr>
<tr class="separator:a8c8437d59c32168a74226312d9e96ace"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/zh-cn/structrapidjson_1_1_memory_stream.js b/zh-cn/structrapidjson_1_1_memory_stream.js
index 871b4233..dce23d41 100644
--- a/zh-cn/structrapidjson_1_1_memory_stream.js
+++ b/zh-cn/structrapidjson_1_1_memory_stream.js
@@ -3,13 +3,13 @@ var structrapidjson_1_1_memory_stream =
[ "Ch", "structrapidjson_1_1_memory_stream.html#abf9f7cf51a5830ae45e24f5d55fdceaf", null ],
[ "MemoryStream", "structrapidjson_1_1_memory_stream.html#a78a2158aae245de652bad7d53de1772c", null ],
[ "Flush", "structrapidjson_1_1_memory_stream.html#a1c16eac80906e4ff0c1ad1bc6fe43635", null ],
- [ "Peek", "structrapidjson_1_1_memory_stream.html#a31ff2fc33c3611f0b97105ce7fa29be8", null ],
- [ "Peek4", "structrapidjson_1_1_memory_stream.html#a3471216ab10f9e8a4dab072028948985", null ],
+ [ "Peek", "structrapidjson_1_1_memory_stream.html#abfe6486d171f52af46147031e0c65bb6", null ],
+ [ "Peek4", "structrapidjson_1_1_memory_stream.html#ad17be8ddf7b91d91b70fe1cdf5478d14", null ],
[ "Put", "structrapidjson_1_1_memory_stream.html#a3721da916bbddb54c97f631c3d8eb811", null ],
[ "PutBegin", "structrapidjson_1_1_memory_stream.html#a9cda045c9d01e18c4d4b06b2afe2edf2", null ],
[ "PutEnd", "structrapidjson_1_1_memory_stream.html#a2135b36b12e5fcd2ee575b9a9cdb579c", null ],
[ "Take", "structrapidjson_1_1_memory_stream.html#aa0f6a8e627bc071d96bd1dbb50188f68", null ],
- [ "Tell", "structrapidjson_1_1_memory_stream.html#a5bee48e0635814286a1bc7e0166763c1", null ],
+ [ "Tell", "structrapidjson_1_1_memory_stream.html#ab759106a74ad078260c2c1029bfb7030", null ],
[ "begin_", "structrapidjson_1_1_memory_stream.html#a1cc586e50fbfc0bd5994977b42243b93", null ],
[ "end_", "structrapidjson_1_1_memory_stream.html#a47f45298891e8156121b4017954fabe8", null ],
[ "size_", "structrapidjson_1_1_memory_stream.html#a8c8437d59c32168a74226312d9e96ace", null ],
diff --git a/zh-cn/structrapidjson_1_1_stream_traits-members.html b/zh-cn/structrapidjson_1_1_stream_traits-members.html
index 28790fbe..42568696 100644
--- a/zh-cn/structrapidjson_1_1_stream_traits-members.html
+++ b/zh-cn/structrapidjson_1_1_stream_traits-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_stream_traits.html
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_stream_traits.html b/zh-cn/structrapidjson_1_1_stream_traits.html
index c5a194d4..2d1cfebe 100644
--- a/zh-cn/structrapidjson_1_1_stream_traits.html
+++ b/zh-cn/structrapidjson_1_1_stream_traits.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::StreamTraits&lt; Stream &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_stream_traits.html
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,8 +93,8 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_stream_traits.html
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:aea5a3f90ea4fd2a1b9c9c9954294474d"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>copyOptimization</b> = 0
- }</td></tr>
-<tr class="memdesc:aea5a3f90ea4fd2a1b9c9c9954294474d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether to make local copy of stream for optimization during parsing. <a href="structrapidjson_1_1_stream_traits.html#aea5a3f90ea4fd2a1b9c9c9954294474d">更多...</a><br /></td></tr>
+ }<tr class="memdesc:aea5a3f90ea4fd2a1b9c9c9954294474d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Whether to make local copy of stream for optimization during parsing. <a href="structrapidjson_1_1_stream_traits.html#aea5a3f90ea4fd2a1b9c9c9954294474d">更多...</a><br /></td></tr>
+</td></tr>
<tr class="separator:aea5a3f90ea4fd2a1b9c9c9954294474d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
@@ -103,7 +104,9 @@ struct rapidjson::StreamTraits&lt; Stream &gt;</h3>
<p>Provides additional information for stream. </p>
<p>By using traits pattern, this type provides a default configuration for stream. For custom stream, this type can be specialized for other configuration. See TEST(Reader, CustomStringStream) in readertest.cpp for example. </p>
</div><h2 class="groupheader">成员枚举类型说明</h2>
-<a class="anchor" id="aea5a3f90ea4fd2a1b9c9c9954294474d"></a>
+<a id="aea5a3f90ea4fd2a1b9c9c9954294474d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aea5a3f90ea4fd2a1b9c9c9954294474d">&#9670;&nbsp;</a></span>anonymous enum</h2>
+
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
diff --git a/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4-members.html b/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4-members.html
index 5fc6f736..989de283 100644
--- a/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4-members.html
+++ b/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_stream_traits_3_01
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4.html b/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4.html
index 9687624c..a305c074 100644
--- a/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4.html
+++ b/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::StreamTraits&lt; GenericInsituStringStream&lt; Encoding &gt; &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_stream_traits_3_01
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -86,7 +87,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_stream_traits_3_01
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:aa9b3b32a0ba57a7263455521508c9a84"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9b3b32a0ba57a7263455521508c9a84"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>copyOptimization</b> = 1
+<tr class="memitem:aa9b3b32a0ba57a7263455521508c9a84"><td class="memItemLeft" align="right" valign="top"><a id="aa9b3b32a0ba57a7263455521508c9a84"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>copyOptimization</b> = 1
}</td></tr>
<tr class="separator:aa9b3b32a0ba57a7263455521508c9a84"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@@ -99,7 +100,7 @@ Public 类型</h2></td></tr>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="namespacerapidjson.html">rapidjson</a></li><li class="navelem"><a class="el" href="structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4.html">StreamTraits< GenericInsituStringStream< Encoding > ></a></li>
+ <li class="navelem"><a class="el" href="namespacerapidjson.html">rapidjson</a></li><li class="navelem"><a class="el" href="structrapidjson_1_1_stream_traits_3_01_generic_insitu_string_stream_3_01_encoding_01_4_01_4.html">StreamTraits&lt; GenericInsituStringStream&lt; Encoding &gt; &gt;</a></li>
</ul>
</div>
</body>
diff --git a/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4-members.html b/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4-members.html
index 76c3a991..caef0abd 100644
--- a/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4-members.html
+++ b/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_stream_traits_3_01
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4.html b/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4.html
index a9546e83..0876f659 100644
--- a/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4.html
+++ b/zh-cn/structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::StreamTraits&lt; GenericStringStream&lt; Encoding &gt; &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_stream_traits_3_01
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -86,7 +87,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_stream_traits_3_01
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a421f511cdadd65681fe51ba0dde1b649"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a421f511cdadd65681fe51ba0dde1b649"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>copyOptimization</b> = 1
+<tr class="memitem:a421f511cdadd65681fe51ba0dde1b649"><td class="memItemLeft" align="right" valign="top"><a id="a421f511cdadd65681fe51ba0dde1b649"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>copyOptimization</b> = 1
}</td></tr>
<tr class="separator:a421f511cdadd65681fe51ba0dde1b649"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
@@ -99,7 +100,7 @@ Public 类型</h2></td></tr>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="namespacerapidjson.html">rapidjson</a></li><li class="navelem"><a class="el" href="structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4.html">StreamTraits< GenericStringStream< Encoding > ></a></li>
+ <li class="navelem"><a class="el" href="namespacerapidjson.html">rapidjson</a></li><li class="navelem"><a class="el" href="structrapidjson_1_1_stream_traits_3_01_generic_string_stream_3_01_encoding_01_4_01_4.html">StreamTraits&lt; GenericStringStream&lt; Encoding &gt; &gt;</a></li>
</ul>
</div>
</body>
diff --git a/zh-cn/structrapidjson_1_1_transcoder-members.html b/zh-cn/structrapidjson_1_1_transcoder-members.html
index 8e9cf8db..84471c6d 100644
--- a/zh-cn/structrapidjson_1_1_transcoder-members.html
+++ b/zh-cn/structrapidjson_1_1_transcoder-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_transcoder.html','
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_transcoder.html b/zh-cn/structrapidjson_1_1_transcoder.html
index 398fee27..bb41656c 100644
--- a/zh-cn/structrapidjson_1_1_transcoder.html
+++ b/zh-cn/structrapidjson_1_1_transcoder.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::Transcoder&lt; SourceEncoding, TargetEncoding &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_transcoder.html','
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -91,16 +92,16 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_transcoder.html','
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
-<tr class="memitem:a3a1de7069d3cf7f1d4f4e2f96ceb7664"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3a1de7069d3cf7f1d4f4e2f96ceb7664"></a>
+<tr class="memitem:a3a1de7069d3cf7f1d4f4e2f96ceb7664"><td class="memTemplParams" colspan="2"><a id="a3a1de7069d3cf7f1d4f4e2f96ceb7664"></a>
template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="memitem:a3a1de7069d3cf7f1d4f4e2f96ceb7664"><td class="memTemplItemLeft" align="right" valign="top">static RAPIDJSON_FORCEINLINE bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_transcoder.html#a3a1de7069d3cf7f1d4f4e2f96ceb7664">Transcode</a> (InputStream &amp;is, OutputStream &amp;os)</td></tr>
<tr class="memdesc:a3a1de7069d3cf7f1d4f4e2f96ceb7664"><td class="mdescLeft">&#160;</td><td class="mdescRight">Take one Unicode codepoint from source encoding, convert it to target encoding and put it to the output stream. <br /></td></tr>
<tr class="separator:a3a1de7069d3cf7f1d4f4e2f96ceb7664"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a43f7d4e8a24db9d09958b9be41257033"><td class="memTemplParams" colspan="2"><a class="anchor" id="a43f7d4e8a24db9d09958b9be41257033"></a>
+<tr class="memitem:a43f7d4e8a24db9d09958b9be41257033"><td class="memTemplParams" colspan="2"><a id="a43f7d4e8a24db9d09958b9be41257033"></a>
template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="memitem:a43f7d4e8a24db9d09958b9be41257033"><td class="memTemplItemLeft" align="right" valign="top">static RAPIDJSON_FORCEINLINE bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>TranscodeUnsafe</b> (InputStream &amp;is, OutputStream &amp;os)</td></tr>
<tr class="separator:a43f7d4e8a24db9d09958b9be41257033"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae9178e512e99394a38785e73927140da"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae9178e512e99394a38785e73927140da"></a>
+<tr class="memitem:ae9178e512e99394a38785e73927140da"><td class="memTemplParams" colspan="2"><a id="ae9178e512e99394a38785e73927140da"></a>
template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="memitem:ae9178e512e99394a38785e73927140da"><td class="memTemplItemLeft" align="right" valign="top">static RAPIDJSON_FORCEINLINE bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_transcoder.html#ae9178e512e99394a38785e73927140da">Validate</a> (InputStream &amp;is, OutputStream &amp;os)</td></tr>
<tr class="memdesc:ae9178e512e99394a38785e73927140da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Validate one Unicode codepoint from an encoded stream. <br /></td></tr>
diff --git a/zh-cn/structrapidjson_1_1_transcoder_3_01_encoding_00_01_encoding_01_4-members.html b/zh-cn/structrapidjson_1_1_transcoder_3_01_encoding_00_01_encoding_01_4-members.html
index ae5f56bc..2f461172 100644
--- a/zh-cn/structrapidjson_1_1_transcoder_3_01_encoding_00_01_encoding_01_4-members.html
+++ b/zh-cn/structrapidjson_1_1_transcoder_3_01_encoding_00_01_encoding_01_4-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_transcoder_3_01_en
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_transcoder_3_01_encoding_00_01_encoding_01_4.html b/zh-cn/structrapidjson_1_1_transcoder_3_01_encoding_00_01_encoding_01_4.html
index 738b57d4..3927f733 100644
--- a/zh-cn/structrapidjson_1_1_transcoder_3_01_encoding_00_01_encoding_01_4.html
+++ b/zh-cn/structrapidjson_1_1_transcoder_3_01_encoding_00_01_encoding_01_4.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::Transcoder&lt; Encoding, Encoding &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_transcoder_3_01_en
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -91,15 +92,15 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_transcoder_3_01_en
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
-<tr class="memitem:a4c5e8e01daad553a941f5ea79c4a7339"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4c5e8e01daad553a941f5ea79c4a7339"></a>
+<tr class="memitem:a4c5e8e01daad553a941f5ea79c4a7339"><td class="memTemplParams" colspan="2"><a id="a4c5e8e01daad553a941f5ea79c4a7339"></a>
template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="memitem:a4c5e8e01daad553a941f5ea79c4a7339"><td class="memTemplItemLeft" align="right" valign="top">static RAPIDJSON_FORCEINLINE bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Transcode</b> (InputStream &amp;is, OutputStream &amp;os)</td></tr>
<tr class="separator:a4c5e8e01daad553a941f5ea79c4a7339"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9c948b02461065bf29e804f3450d693c"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9c948b02461065bf29e804f3450d693c"></a>
+<tr class="memitem:a9c948b02461065bf29e804f3450d693c"><td class="memTemplParams" colspan="2"><a id="a9c948b02461065bf29e804f3450d693c"></a>
template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="memitem:a9c948b02461065bf29e804f3450d693c"><td class="memTemplItemLeft" align="right" valign="top">static RAPIDJSON_FORCEINLINE bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>TranscodeUnsafe</b> (InputStream &amp;is, OutputStream &amp;os)</td></tr>
<tr class="separator:a9c948b02461065bf29e804f3450d693c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab95578d89524b757c72c246e7e663417"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab95578d89524b757c72c246e7e663417"></a>
+<tr class="memitem:ab95578d89524b757c72c246e7e663417"><td class="memTemplParams" colspan="2"><a id="ab95578d89524b757c72c246e7e663417"></a>
template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="memitem:ab95578d89524b757c72c246e7e663417"><td class="memTemplItemLeft" align="right" valign="top">static RAPIDJSON_FORCEINLINE bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Validate</b> (InputStream &amp;is, OutputStream &amp;os)</td></tr>
<tr class="separator:ab95578d89524b757c72c246e7e663417"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -118,7 +119,7 @@ struct rapidjson::Transcoder&lt; Encoding, Encoding &gt;</h3>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="namespacerapidjson.html">rapidjson</a></li><li class="navelem"><a class="el" href="structrapidjson_1_1_transcoder_3_01_encoding_00_01_encoding_01_4.html">Transcoder< Encoding, Encoding ></a></li>
+ <li class="navelem"><a class="el" href="namespacerapidjson.html">rapidjson</a></li><li class="navelem"><a class="el" href="structrapidjson_1_1_transcoder_3_01_encoding_00_01_encoding_01_4.html">Transcoder&lt; Encoding, Encoding &gt;</a></li>
</ul>
</div>
</body>
diff --git a/zh-cn/structrapidjson_1_1_u_t_f16-members.html b/zh-cn/structrapidjson_1_1_u_t_f16-members.html
index 6eee1d63..54883fed 100644
--- a/zh-cn/structrapidjson_1_1_u_t_f16-members.html
+++ b/zh-cn/structrapidjson_1_1_u_t_f16-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f16.html','');
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_u_t_f16.html b/zh-cn/structrapidjson_1_1_u_t_f16.html
index 2d316a9e..d2baa2e6 100644
--- a/zh-cn/structrapidjson_1_1_u_t_f16.html
+++ b/zh-cn/structrapidjson_1_1_u_t_f16.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::UTF16&lt; CharType &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f16.html','');
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -94,8 +95,8 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f16.html','');
类 rapidjson::UTF16&lt; CharType &gt; 继承关系图:</div>
<div class="dyncontent">
<div class="center">
- <img src="structrapidjson_1_1_u_t_f16.png" usemap="#rapidjson::UTF16&lt; CharType &gt;_map" alt=""/>
- <map id="rapidjson::UTF16&lt; CharType &gt;_map" name="rapidjson::UTF16&lt; CharType &gt;_map">
+ <img src="structrapidjson_1_1_u_t_f16.png" usemap="#rapidjson::UTF16_3C_20CharType_20_3E_map" alt=""/>
+ <map id="rapidjson::UTF16_3C_20CharType_20_3E_map" name="rapidjson::UTF16_3C_20CharType_20_3E_map">
<area href="structrapidjson_1_1_u_t_f16_b_e.html" title="UTF-16 big endian encoding. " alt="rapidjson::UTF16BE&lt; CharType &gt;" shape="rect" coords="0,56,203,80"/>
<area href="structrapidjson_1_1_u_t_f16_l_e.html" title="UTF-16 little endian encoding. " alt="rapidjson::UTF16LE&lt; CharType &gt;" shape="rect" coords="213,56,416,80"/>
</map>
@@ -103,34 +104,34 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f16.html','');
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a439e1dc4701cc7ae34d257ce76f5dc37"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a439e1dc4701cc7ae34d257ce76f5dc37"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
+<tr class="memitem:a439e1dc4701cc7ae34d257ce76f5dc37"><td class="memItemLeft" align="right" valign="top"><a id="a439e1dc4701cc7ae34d257ce76f5dc37"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
}</td></tr>
<tr class="separator:a439e1dc4701cc7ae34d257ce76f5dc37"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acb67f53501b796b55996352a6080da54"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb67f53501b796b55996352a6080da54"></a>
+<tr class="memitem:acb67f53501b796b55996352a6080da54"><td class="memItemLeft" align="right" valign="top"><a id="acb67f53501b796b55996352a6080da54"></a>
typedef CharType&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:acb67f53501b796b55996352a6080da54"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:a97a1141d35742ceeedc0da87538b8790"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97a1141d35742ceeedc0da87538b8790"></a>
+<tr class="memitem:a97a1141d35742ceeedc0da87538b8790"><td class="memItemLeft" align="right" valign="top"><a id="a97a1141d35742ceeedc0da87538b8790"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>RAPIDJSON_STATIC_ASSERT</b> (sizeof(Ch) &gt;=2)</td></tr>
<tr class="separator:a97a1141d35742ceeedc0da87538b8790"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
-<tr class="memitem:a7f15344b8f35e341a723fa25d22e59d2"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7f15344b8f35e341a723fa25d22e59d2"></a>
+<tr class="memitem:a7f15344b8f35e341a723fa25d22e59d2"><td class="memTemplParams" colspan="2"><a id="a7f15344b8f35e341a723fa25d22e59d2"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:a7f15344b8f35e341a723fa25d22e59d2"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Encode</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:a7f15344b8f35e341a723fa25d22e59d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aac8a8cdff51c647b3c3a9d7df5c2ce62"><td class="memTemplParams" colspan="2"><a class="anchor" id="aac8a8cdff51c647b3c3a9d7df5c2ce62"></a>
+<tr class="memitem:aac8a8cdff51c647b3c3a9d7df5c2ce62"><td class="memTemplParams" colspan="2"><a id="aac8a8cdff51c647b3c3a9d7df5c2ce62"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:aac8a8cdff51c647b3c3a9d7df5c2ce62"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>EncodeUnsafe</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:aac8a8cdff51c647b3c3a9d7df5c2ce62"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2665394536a32c9ea76d0cc7184e52fe"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2665394536a32c9ea76d0cc7184e52fe"></a>
+<tr class="memitem:a2665394536a32c9ea76d0cc7184e52fe"><td class="memTemplParams" colspan="2"><a id="a2665394536a32c9ea76d0cc7184e52fe"></a>
template&lt;typename InputStream &gt; </td></tr>
<tr class="memitem:a2665394536a32c9ea76d0cc7184e52fe"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Decode</b> (InputStream &amp;is, unsigned *codepoint)</td></tr>
<tr class="separator:a2665394536a32c9ea76d0cc7184e52fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9bfa2e9096b1596e0b3a2cc2be6c9477"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9bfa2e9096b1596e0b3a2cc2be6c9477"></a>
+<tr class="memitem:a9bfa2e9096b1596e0b3a2cc2be6c9477"><td class="memTemplParams" colspan="2"><a id="a9bfa2e9096b1596e0b3a2cc2be6c9477"></a>
template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="memitem:a9bfa2e9096b1596e0b3a2cc2be6c9477"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Validate</b> (InputStream &amp;is, OutputStream &amp;os)</td></tr>
<tr class="separator:a9bfa2e9096b1596e0b3a2cc2be6c9477"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/zh-cn/structrapidjson_1_1_u_t_f16_b_e-members.html b/zh-cn/structrapidjson_1_1_u_t_f16_b_e-members.html
index 24bc79e6..02882f35 100644
--- a/zh-cn/structrapidjson_1_1_u_t_f16_b_e-members.html
+++ b/zh-cn/structrapidjson_1_1_u_t_f16_b_e-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f16_b_e.html',
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_u_t_f16_b_e.html b/zh-cn/structrapidjson_1_1_u_t_f16_b_e.html
index 63179648..b263fc55 100644
--- a/zh-cn/structrapidjson_1_1_u_t_f16_b_e.html
+++ b/zh-cn/structrapidjson_1_1_u_t_f16_b_e.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::UTF16BE&lt; CharType &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f16_b_e.html',
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,44 +93,44 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f16_b_e.html',
类 rapidjson::UTF16BE&lt; CharType &gt; 继承关系图:</div>
<div class="dyncontent">
<div class="center">
- <img src="structrapidjson_1_1_u_t_f16_b_e.png" usemap="#rapidjson::UTF16BE&lt; CharType &gt;_map" alt=""/>
- <map id="rapidjson::UTF16BE&lt; CharType &gt;_map" name="rapidjson::UTF16BE&lt; CharType &gt;_map">
+ <img src="structrapidjson_1_1_u_t_f16_b_e.png" usemap="#rapidjson::UTF16BE_3C_20CharType_20_3E_map" alt=""/>
+ <map id="rapidjson::UTF16BE_3C_20CharType_20_3E_map" name="rapidjson::UTF16BE_3C_20CharType_20_3E_map">
<area href="structrapidjson_1_1_u_t_f16.html" title="UTF-16 encoding. " alt="rapidjson::UTF16&lt; CharType &gt;" shape="rect" coords="0,0,203,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
-<tr class="memitem:ae1123c32004f55f68d86067bc83e6334"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae1123c32004f55f68d86067bc83e6334"></a>
+<tr class="memitem:ae1123c32004f55f68d86067bc83e6334"><td class="memTemplParams" colspan="2"><a id="ae1123c32004f55f68d86067bc83e6334"></a>
template&lt;typename InputByteStream &gt; </td></tr>
<tr class="memitem:ae1123c32004f55f68d86067bc83e6334"><td class="memTemplItemLeft" align="right" valign="top">static CharType&#160;</td><td class="memTemplItemRight" valign="bottom"><b>TakeBOM</b> (InputByteStream &amp;is)</td></tr>
<tr class="separator:ae1123c32004f55f68d86067bc83e6334"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aac247d0536fd7bb1a5a9b17f091f0d9a"><td class="memTemplParams" colspan="2"><a class="anchor" id="aac247d0536fd7bb1a5a9b17f091f0d9a"></a>
+<tr class="memitem:aac247d0536fd7bb1a5a9b17f091f0d9a"><td class="memTemplParams" colspan="2"><a id="aac247d0536fd7bb1a5a9b17f091f0d9a"></a>
template&lt;typename InputByteStream &gt; </td></tr>
<tr class="memitem:aac247d0536fd7bb1a5a9b17f091f0d9a"><td class="memTemplItemLeft" align="right" valign="top">static CharType&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Take</b> (InputByteStream &amp;is)</td></tr>
<tr class="separator:aac247d0536fd7bb1a5a9b17f091f0d9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a095c3a1e62917798b8ba0319abe0a987"><td class="memTemplParams" colspan="2"><a class="anchor" id="a095c3a1e62917798b8ba0319abe0a987"></a>
+<tr class="memitem:a095c3a1e62917798b8ba0319abe0a987"><td class="memTemplParams" colspan="2"><a id="a095c3a1e62917798b8ba0319abe0a987"></a>
template&lt;typename OutputByteStream &gt; </td></tr>
<tr class="memitem:a095c3a1e62917798b8ba0319abe0a987"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>PutBOM</b> (OutputByteStream &amp;os)</td></tr>
<tr class="separator:a095c3a1e62917798b8ba0319abe0a987"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a48f83982227d52c563f5c336deb73a44"><td class="memTemplParams" colspan="2"><a class="anchor" id="a48f83982227d52c563f5c336deb73a44"></a>
+<tr class="memitem:a48f83982227d52c563f5c336deb73a44"><td class="memTemplParams" colspan="2"><a id="a48f83982227d52c563f5c336deb73a44"></a>
template&lt;typename OutputByteStream &gt; </td></tr>
<tr class="memitem:a48f83982227d52c563f5c336deb73a44"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Put</b> (OutputByteStream &amp;os, CharType c)</td></tr>
<tr class="separator:a48f83982227d52c563f5c336deb73a44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_methods_structrapidjson_1_1_u_t_f16"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_structrapidjson_1_1_u_t_f16')"><img src="closed.png" alt="-"/>&#160;静态 Public 成员函数 继承自 <a class="el" href="structrapidjson_1_1_u_t_f16.html">rapidjson::UTF16&lt; CharType &gt;</a></td></tr>
-<tr class="memitem:a7f15344b8f35e341a723fa25d22e59d2 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7f15344b8f35e341a723fa25d22e59d2"></a>
+<tr class="memitem:a7f15344b8f35e341a723fa25d22e59d2 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a id="a7f15344b8f35e341a723fa25d22e59d2"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:a7f15344b8f35e341a723fa25d22e59d2 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Encode</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:a7f15344b8f35e341a723fa25d22e59d2 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aac8a8cdff51c647b3c3a9d7df5c2ce62 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a class="anchor" id="aac8a8cdff51c647b3c3a9d7df5c2ce62"></a>
+<tr class="memitem:aac8a8cdff51c647b3c3a9d7df5c2ce62 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a id="aac8a8cdff51c647b3c3a9d7df5c2ce62"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:aac8a8cdff51c647b3c3a9d7df5c2ce62 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>EncodeUnsafe</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:aac8a8cdff51c647b3c3a9d7df5c2ce62 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2665394536a32c9ea76d0cc7184e52fe inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2665394536a32c9ea76d0cc7184e52fe"></a>
+<tr class="memitem:a2665394536a32c9ea76d0cc7184e52fe inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a id="a2665394536a32c9ea76d0cc7184e52fe"></a>
template&lt;typename InputStream &gt; </td></tr>
<tr class="memitem:a2665394536a32c9ea76d0cc7184e52fe inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Decode</b> (InputStream &amp;is, unsigned *codepoint)</td></tr>
<tr class="separator:a2665394536a32c9ea76d0cc7184e52fe inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9bfa2e9096b1596e0b3a2cc2be6c9477 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9bfa2e9096b1596e0b3a2cc2be6c9477"></a>
+<tr class="memitem:a9bfa2e9096b1596e0b3a2cc2be6c9477 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a id="a9bfa2e9096b1596e0b3a2cc2be6c9477"></a>
template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="memitem:a9bfa2e9096b1596e0b3a2cc2be6c9477 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Validate</b> (InputStream &amp;is, OutputStream &amp;os)</td></tr>
<tr class="separator:a9bfa2e9096b1596e0b3a2cc2be6c9477 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -137,14 +138,14 @@ template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
额外继承的成员函数</h2></td></tr>
<tr class="inherit_header pub_types_structrapidjson_1_1_u_t_f16"><td colspan="2" onclick="javascript:toggleInherit('pub_types_structrapidjson_1_1_u_t_f16')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="structrapidjson_1_1_u_t_f16.html">rapidjson::UTF16&lt; CharType &gt;</a></td></tr>
-<tr class="memitem:a439e1dc4701cc7ae34d257ce76f5dc37 inherit pub_types_structrapidjson_1_1_u_t_f16"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a439e1dc4701cc7ae34d257ce76f5dc37"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
+<tr class="memitem:a439e1dc4701cc7ae34d257ce76f5dc37 inherit pub_types_structrapidjson_1_1_u_t_f16"><td class="memItemLeft" align="right" valign="top"><a id="a439e1dc4701cc7ae34d257ce76f5dc37"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
}</td></tr>
<tr class="separator:a439e1dc4701cc7ae34d257ce76f5dc37 inherit pub_types_structrapidjson_1_1_u_t_f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acb67f53501b796b55996352a6080da54 inherit pub_types_structrapidjson_1_1_u_t_f16"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb67f53501b796b55996352a6080da54"></a>
+<tr class="memitem:acb67f53501b796b55996352a6080da54 inherit pub_types_structrapidjson_1_1_u_t_f16"><td class="memItemLeft" align="right" valign="top"><a id="acb67f53501b796b55996352a6080da54"></a>
typedef CharType&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:acb67f53501b796b55996352a6080da54 inherit pub_types_structrapidjson_1_1_u_t_f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_structrapidjson_1_1_u_t_f16"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_structrapidjson_1_1_u_t_f16')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="structrapidjson_1_1_u_t_f16.html">rapidjson::UTF16&lt; CharType &gt;</a></td></tr>
-<tr class="memitem:a97a1141d35742ceeedc0da87538b8790 inherit pub_methods_structrapidjson_1_1_u_t_f16"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97a1141d35742ceeedc0da87538b8790"></a>
+<tr class="memitem:a97a1141d35742ceeedc0da87538b8790 inherit pub_methods_structrapidjson_1_1_u_t_f16"><td class="memItemLeft" align="right" valign="top"><a id="a97a1141d35742ceeedc0da87538b8790"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>RAPIDJSON_STATIC_ASSERT</b> (sizeof(Ch) &gt;=2)</td></tr>
<tr class="separator:a97a1141d35742ceeedc0da87538b8790 inherit pub_methods_structrapidjson_1_1_u_t_f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
diff --git a/zh-cn/structrapidjson_1_1_u_t_f16_l_e-members.html b/zh-cn/structrapidjson_1_1_u_t_f16_l_e-members.html
index b8628255..ee53c30f 100644
--- a/zh-cn/structrapidjson_1_1_u_t_f16_l_e-members.html
+++ b/zh-cn/structrapidjson_1_1_u_t_f16_l_e-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f16_l_e.html',
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_u_t_f16_l_e.html b/zh-cn/structrapidjson_1_1_u_t_f16_l_e.html
index f136255f..3d6de624 100644
--- a/zh-cn/structrapidjson_1_1_u_t_f16_l_e.html
+++ b/zh-cn/structrapidjson_1_1_u_t_f16_l_e.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::UTF16LE&lt; CharType &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f16_l_e.html',
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,44 +93,44 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f16_l_e.html',
类 rapidjson::UTF16LE&lt; CharType &gt; 继承关系图:</div>
<div class="dyncontent">
<div class="center">
- <img src="structrapidjson_1_1_u_t_f16_l_e.png" usemap="#rapidjson::UTF16LE&lt; CharType &gt;_map" alt=""/>
- <map id="rapidjson::UTF16LE&lt; CharType &gt;_map" name="rapidjson::UTF16LE&lt; CharType &gt;_map">
+ <img src="structrapidjson_1_1_u_t_f16_l_e.png" usemap="#rapidjson::UTF16LE_3C_20CharType_20_3E_map" alt=""/>
+ <map id="rapidjson::UTF16LE_3C_20CharType_20_3E_map" name="rapidjson::UTF16LE_3C_20CharType_20_3E_map">
<area href="structrapidjson_1_1_u_t_f16.html" title="UTF-16 encoding. " alt="rapidjson::UTF16&lt; CharType &gt;" shape="rect" coords="0,0,202,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
-<tr class="memitem:a4d3a271692803a71bc26f004e0505c18"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4d3a271692803a71bc26f004e0505c18"></a>
+<tr class="memitem:a4d3a271692803a71bc26f004e0505c18"><td class="memTemplParams" colspan="2"><a id="a4d3a271692803a71bc26f004e0505c18"></a>
template&lt;typename InputByteStream &gt; </td></tr>
<tr class="memitem:a4d3a271692803a71bc26f004e0505c18"><td class="memTemplItemLeft" align="right" valign="top">static CharType&#160;</td><td class="memTemplItemRight" valign="bottom"><b>TakeBOM</b> (InputByteStream &amp;is)</td></tr>
<tr class="separator:a4d3a271692803a71bc26f004e0505c18"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:afae56fc8dfd1bf27b27608ee41415d8c"><td class="memTemplParams" colspan="2"><a class="anchor" id="afae56fc8dfd1bf27b27608ee41415d8c"></a>
+<tr class="memitem:afae56fc8dfd1bf27b27608ee41415d8c"><td class="memTemplParams" colspan="2"><a id="afae56fc8dfd1bf27b27608ee41415d8c"></a>
template&lt;typename InputByteStream &gt; </td></tr>
<tr class="memitem:afae56fc8dfd1bf27b27608ee41415d8c"><td class="memTemplItemLeft" align="right" valign="top">static CharType&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Take</b> (InputByteStream &amp;is)</td></tr>
<tr class="separator:afae56fc8dfd1bf27b27608ee41415d8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a56d0c0242802d60e74ecc38b5843cdc6"><td class="memTemplParams" colspan="2"><a class="anchor" id="a56d0c0242802d60e74ecc38b5843cdc6"></a>
+<tr class="memitem:a56d0c0242802d60e74ecc38b5843cdc6"><td class="memTemplParams" colspan="2"><a id="a56d0c0242802d60e74ecc38b5843cdc6"></a>
template&lt;typename OutputByteStream &gt; </td></tr>
<tr class="memitem:a56d0c0242802d60e74ecc38b5843cdc6"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>PutBOM</b> (OutputByteStream &amp;os)</td></tr>
<tr class="separator:a56d0c0242802d60e74ecc38b5843cdc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae3ecd38c70fe23a0a5d8a31866cf9228"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae3ecd38c70fe23a0a5d8a31866cf9228"></a>
+<tr class="memitem:ae3ecd38c70fe23a0a5d8a31866cf9228"><td class="memTemplParams" colspan="2"><a id="ae3ecd38c70fe23a0a5d8a31866cf9228"></a>
template&lt;typename OutputByteStream &gt; </td></tr>
<tr class="memitem:ae3ecd38c70fe23a0a5d8a31866cf9228"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Put</b> (OutputByteStream &amp;os, CharType c)</td></tr>
<tr class="separator:ae3ecd38c70fe23a0a5d8a31866cf9228"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_methods_structrapidjson_1_1_u_t_f16"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_structrapidjson_1_1_u_t_f16')"><img src="closed.png" alt="-"/>&#160;静态 Public 成员函数 继承自 <a class="el" href="structrapidjson_1_1_u_t_f16.html">rapidjson::UTF16&lt; CharType &gt;</a></td></tr>
-<tr class="memitem:a7f15344b8f35e341a723fa25d22e59d2 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a class="anchor" id="a7f15344b8f35e341a723fa25d22e59d2"></a>
+<tr class="memitem:a7f15344b8f35e341a723fa25d22e59d2 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a id="a7f15344b8f35e341a723fa25d22e59d2"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:a7f15344b8f35e341a723fa25d22e59d2 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Encode</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:a7f15344b8f35e341a723fa25d22e59d2 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aac8a8cdff51c647b3c3a9d7df5c2ce62 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a class="anchor" id="aac8a8cdff51c647b3c3a9d7df5c2ce62"></a>
+<tr class="memitem:aac8a8cdff51c647b3c3a9d7df5c2ce62 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a id="aac8a8cdff51c647b3c3a9d7df5c2ce62"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:aac8a8cdff51c647b3c3a9d7df5c2ce62 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>EncodeUnsafe</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:aac8a8cdff51c647b3c3a9d7df5c2ce62 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2665394536a32c9ea76d0cc7184e52fe inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2665394536a32c9ea76d0cc7184e52fe"></a>
+<tr class="memitem:a2665394536a32c9ea76d0cc7184e52fe inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a id="a2665394536a32c9ea76d0cc7184e52fe"></a>
template&lt;typename InputStream &gt; </td></tr>
<tr class="memitem:a2665394536a32c9ea76d0cc7184e52fe inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Decode</b> (InputStream &amp;is, unsigned *codepoint)</td></tr>
<tr class="separator:a2665394536a32c9ea76d0cc7184e52fe inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9bfa2e9096b1596e0b3a2cc2be6c9477 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9bfa2e9096b1596e0b3a2cc2be6c9477"></a>
+<tr class="memitem:a9bfa2e9096b1596e0b3a2cc2be6c9477 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplParams" colspan="2"><a id="a9bfa2e9096b1596e0b3a2cc2be6c9477"></a>
template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="memitem:a9bfa2e9096b1596e0b3a2cc2be6c9477 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Validate</b> (InputStream &amp;is, OutputStream &amp;os)</td></tr>
<tr class="separator:a9bfa2e9096b1596e0b3a2cc2be6c9477 inherit pub_static_methods_structrapidjson_1_1_u_t_f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -137,14 +138,14 @@ template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
额外继承的成员函数</h2></td></tr>
<tr class="inherit_header pub_types_structrapidjson_1_1_u_t_f16"><td colspan="2" onclick="javascript:toggleInherit('pub_types_structrapidjson_1_1_u_t_f16')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="structrapidjson_1_1_u_t_f16.html">rapidjson::UTF16&lt; CharType &gt;</a></td></tr>
-<tr class="memitem:a439e1dc4701cc7ae34d257ce76f5dc37 inherit pub_types_structrapidjson_1_1_u_t_f16"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a439e1dc4701cc7ae34d257ce76f5dc37"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
+<tr class="memitem:a439e1dc4701cc7ae34d257ce76f5dc37 inherit pub_types_structrapidjson_1_1_u_t_f16"><td class="memItemLeft" align="right" valign="top"><a id="a439e1dc4701cc7ae34d257ce76f5dc37"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
}</td></tr>
<tr class="separator:a439e1dc4701cc7ae34d257ce76f5dc37 inherit pub_types_structrapidjson_1_1_u_t_f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acb67f53501b796b55996352a6080da54 inherit pub_types_structrapidjson_1_1_u_t_f16"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb67f53501b796b55996352a6080da54"></a>
+<tr class="memitem:acb67f53501b796b55996352a6080da54 inherit pub_types_structrapidjson_1_1_u_t_f16"><td class="memItemLeft" align="right" valign="top"><a id="acb67f53501b796b55996352a6080da54"></a>
typedef CharType&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:acb67f53501b796b55996352a6080da54 inherit pub_types_structrapidjson_1_1_u_t_f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_structrapidjson_1_1_u_t_f16"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_structrapidjson_1_1_u_t_f16')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="structrapidjson_1_1_u_t_f16.html">rapidjson::UTF16&lt; CharType &gt;</a></td></tr>
-<tr class="memitem:a97a1141d35742ceeedc0da87538b8790 inherit pub_methods_structrapidjson_1_1_u_t_f16"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97a1141d35742ceeedc0da87538b8790"></a>
+<tr class="memitem:a97a1141d35742ceeedc0da87538b8790 inherit pub_methods_structrapidjson_1_1_u_t_f16"><td class="memItemLeft" align="right" valign="top"><a id="a97a1141d35742ceeedc0da87538b8790"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>RAPIDJSON_STATIC_ASSERT</b> (sizeof(Ch) &gt;=2)</td></tr>
<tr class="separator:a97a1141d35742ceeedc0da87538b8790 inherit pub_methods_structrapidjson_1_1_u_t_f16"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
diff --git a/zh-cn/structrapidjson_1_1_u_t_f32-members.html b/zh-cn/structrapidjson_1_1_u_t_f32-members.html
index a05ba287..77c3d715 100644
--- a/zh-cn/structrapidjson_1_1_u_t_f32-members.html
+++ b/zh-cn/structrapidjson_1_1_u_t_f32-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f32.html','');
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_u_t_f32.html b/zh-cn/structrapidjson_1_1_u_t_f32.html
index d769644f..7fc49db6 100644
--- a/zh-cn/structrapidjson_1_1_u_t_f32.html
+++ b/zh-cn/structrapidjson_1_1_u_t_f32.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::UTF32&lt; CharType &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f32.html','');
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -94,8 +95,8 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f32.html','');
类 rapidjson::UTF32&lt; CharType &gt; 继承关系图:</div>
<div class="dyncontent">
<div class="center">
- <img src="structrapidjson_1_1_u_t_f32.png" usemap="#rapidjson::UTF32&lt; CharType &gt;_map" alt=""/>
- <map id="rapidjson::UTF32&lt; CharType &gt;_map" name="rapidjson::UTF32&lt; CharType &gt;_map">
+ <img src="structrapidjson_1_1_u_t_f32.png" usemap="#rapidjson::UTF32_3C_20CharType_20_3E_map" alt=""/>
+ <map id="rapidjson::UTF32_3C_20CharType_20_3E_map" name="rapidjson::UTF32_3C_20CharType_20_3E_map">
<area href="structrapidjson_1_1_u_t_f32_b_e.html" title="UTF-32 big endian encoding. " alt="rapidjson::UTF32BE&lt; CharType &gt;" shape="rect" coords="0,56,203,80"/>
<area href="structrapidjson_1_1_u_t_f32_l_e.html" title="UTF-32 little endian enocoding. " alt="rapidjson::UTF32LE&lt; CharType &gt;" shape="rect" coords="213,56,416,80"/>
</map>
@@ -103,34 +104,34 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f32.html','');
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a65443b00cba1bb95baf55025108d6a54"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65443b00cba1bb95baf55025108d6a54"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
+<tr class="memitem:a65443b00cba1bb95baf55025108d6a54"><td class="memItemLeft" align="right" valign="top"><a id="a65443b00cba1bb95baf55025108d6a54"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
}</td></tr>
<tr class="separator:a65443b00cba1bb95baf55025108d6a54"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acea97ff3d1b722b88c5faa72cfd4385e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acea97ff3d1b722b88c5faa72cfd4385e"></a>
+<tr class="memitem:acea97ff3d1b722b88c5faa72cfd4385e"><td class="memItemLeft" align="right" valign="top"><a id="acea97ff3d1b722b88c5faa72cfd4385e"></a>
typedef CharType&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:acea97ff3d1b722b88c5faa72cfd4385e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:ac297f89fdab70c22b19f7db769affe05"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac297f89fdab70c22b19f7db769affe05"></a>
+<tr class="memitem:ac297f89fdab70c22b19f7db769affe05"><td class="memItemLeft" align="right" valign="top"><a id="ac297f89fdab70c22b19f7db769affe05"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>RAPIDJSON_STATIC_ASSERT</b> (sizeof(Ch) &gt;=4)</td></tr>
<tr class="separator:ac297f89fdab70c22b19f7db769affe05"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
-<tr class="memitem:a3b0052772242f79904a11c1fd69ba7a8"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3b0052772242f79904a11c1fd69ba7a8"></a>
+<tr class="memitem:a3b0052772242f79904a11c1fd69ba7a8"><td class="memTemplParams" colspan="2"><a id="a3b0052772242f79904a11c1fd69ba7a8"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:a3b0052772242f79904a11c1fd69ba7a8"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Encode</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:a3b0052772242f79904a11c1fd69ba7a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af6bd3135243287cb9d8cb26401cddfed"><td class="memTemplParams" colspan="2"><a class="anchor" id="af6bd3135243287cb9d8cb26401cddfed"></a>
+<tr class="memitem:af6bd3135243287cb9d8cb26401cddfed"><td class="memTemplParams" colspan="2"><a id="af6bd3135243287cb9d8cb26401cddfed"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:af6bd3135243287cb9d8cb26401cddfed"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>EncodeUnsafe</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:af6bd3135243287cb9d8cb26401cddfed"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a196e9da00366c3fce8ca5b56634d110a"><td class="memTemplParams" colspan="2"><a class="anchor" id="a196e9da00366c3fce8ca5b56634d110a"></a>
+<tr class="memitem:a196e9da00366c3fce8ca5b56634d110a"><td class="memTemplParams" colspan="2"><a id="a196e9da00366c3fce8ca5b56634d110a"></a>
template&lt;typename InputStream &gt; </td></tr>
<tr class="memitem:a196e9da00366c3fce8ca5b56634d110a"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Decode</b> (InputStream &amp;is, unsigned *codepoint)</td></tr>
<tr class="separator:a196e9da00366c3fce8ca5b56634d110a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a51a4dccb78915bba67217ace12d294db"><td class="memTemplParams" colspan="2"><a class="anchor" id="a51a4dccb78915bba67217ace12d294db"></a>
+<tr class="memitem:a51a4dccb78915bba67217ace12d294db"><td class="memTemplParams" colspan="2"><a id="a51a4dccb78915bba67217ace12d294db"></a>
template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="memitem:a51a4dccb78915bba67217ace12d294db"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Validate</b> (InputStream &amp;is, OutputStream &amp;os)</td></tr>
<tr class="separator:a51a4dccb78915bba67217ace12d294db"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/zh-cn/structrapidjson_1_1_u_t_f32_b_e-members.html b/zh-cn/structrapidjson_1_1_u_t_f32_b_e-members.html
index 1262ed09..518235e5 100644
--- a/zh-cn/structrapidjson_1_1_u_t_f32_b_e-members.html
+++ b/zh-cn/structrapidjson_1_1_u_t_f32_b_e-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f32_b_e.html',
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_u_t_f32_b_e.html b/zh-cn/structrapidjson_1_1_u_t_f32_b_e.html
index 0086361f..44e987ea 100644
--- a/zh-cn/structrapidjson_1_1_u_t_f32_b_e.html
+++ b/zh-cn/structrapidjson_1_1_u_t_f32_b_e.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::UTF32BE&lt; CharType &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f32_b_e.html',
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,44 +93,44 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f32_b_e.html',
类 rapidjson::UTF32BE&lt; CharType &gt; 继承关系图:</div>
<div class="dyncontent">
<div class="center">
- <img src="structrapidjson_1_1_u_t_f32_b_e.png" usemap="#rapidjson::UTF32BE&lt; CharType &gt;_map" alt=""/>
- <map id="rapidjson::UTF32BE&lt; CharType &gt;_map" name="rapidjson::UTF32BE&lt; CharType &gt;_map">
+ <img src="structrapidjson_1_1_u_t_f32_b_e.png" usemap="#rapidjson::UTF32BE_3C_20CharType_20_3E_map" alt=""/>
+ <map id="rapidjson::UTF32BE_3C_20CharType_20_3E_map" name="rapidjson::UTF32BE_3C_20CharType_20_3E_map">
<area href="structrapidjson_1_1_u_t_f32.html" title="UTF-32 encoding. " alt="rapidjson::UTF32&lt; CharType &gt;" shape="rect" coords="0,0,203,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
-<tr class="memitem:a36bca05acf96452fdebb12ba36b17c63"><td class="memTemplParams" colspan="2"><a class="anchor" id="a36bca05acf96452fdebb12ba36b17c63"></a>
+<tr class="memitem:a36bca05acf96452fdebb12ba36b17c63"><td class="memTemplParams" colspan="2"><a id="a36bca05acf96452fdebb12ba36b17c63"></a>
template&lt;typename InputByteStream &gt; </td></tr>
<tr class="memitem:a36bca05acf96452fdebb12ba36b17c63"><td class="memTemplItemLeft" align="right" valign="top">static CharType&#160;</td><td class="memTemplItemRight" valign="bottom"><b>TakeBOM</b> (InputByteStream &amp;is)</td></tr>
<tr class="separator:a36bca05acf96452fdebb12ba36b17c63"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af92223e22d792426cc2e296ffa8c2464"><td class="memTemplParams" colspan="2"><a class="anchor" id="af92223e22d792426cc2e296ffa8c2464"></a>
+<tr class="memitem:af92223e22d792426cc2e296ffa8c2464"><td class="memTemplParams" colspan="2"><a id="af92223e22d792426cc2e296ffa8c2464"></a>
template&lt;typename InputByteStream &gt; </td></tr>
<tr class="memitem:af92223e22d792426cc2e296ffa8c2464"><td class="memTemplItemLeft" align="right" valign="top">static CharType&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Take</b> (InputByteStream &amp;is)</td></tr>
<tr class="separator:af92223e22d792426cc2e296ffa8c2464"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2b3bd7fde8445fa7cf4260a22a1886bd"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2b3bd7fde8445fa7cf4260a22a1886bd"></a>
+<tr class="memitem:a2b3bd7fde8445fa7cf4260a22a1886bd"><td class="memTemplParams" colspan="2"><a id="a2b3bd7fde8445fa7cf4260a22a1886bd"></a>
template&lt;typename OutputByteStream &gt; </td></tr>
<tr class="memitem:a2b3bd7fde8445fa7cf4260a22a1886bd"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>PutBOM</b> (OutputByteStream &amp;os)</td></tr>
<tr class="separator:a2b3bd7fde8445fa7cf4260a22a1886bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab9a9ff04ee3e835839fffd99037d4615"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab9a9ff04ee3e835839fffd99037d4615"></a>
+<tr class="memitem:ab9a9ff04ee3e835839fffd99037d4615"><td class="memTemplParams" colspan="2"><a id="ab9a9ff04ee3e835839fffd99037d4615"></a>
template&lt;typename OutputByteStream &gt; </td></tr>
<tr class="memitem:ab9a9ff04ee3e835839fffd99037d4615"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Put</b> (OutputByteStream &amp;os, CharType c)</td></tr>
<tr class="separator:ab9a9ff04ee3e835839fffd99037d4615"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_methods_structrapidjson_1_1_u_t_f32"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_structrapidjson_1_1_u_t_f32')"><img src="closed.png" alt="-"/>&#160;静态 Public 成员函数 继承自 <a class="el" href="structrapidjson_1_1_u_t_f32.html">rapidjson::UTF32&lt; CharType &gt;</a></td></tr>
-<tr class="memitem:a3b0052772242f79904a11c1fd69ba7a8 inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3b0052772242f79904a11c1fd69ba7a8"></a>
+<tr class="memitem:a3b0052772242f79904a11c1fd69ba7a8 inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a id="a3b0052772242f79904a11c1fd69ba7a8"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:a3b0052772242f79904a11c1fd69ba7a8 inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Encode</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:a3b0052772242f79904a11c1fd69ba7a8 inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af6bd3135243287cb9d8cb26401cddfed inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a class="anchor" id="af6bd3135243287cb9d8cb26401cddfed"></a>
+<tr class="memitem:af6bd3135243287cb9d8cb26401cddfed inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a id="af6bd3135243287cb9d8cb26401cddfed"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:af6bd3135243287cb9d8cb26401cddfed inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>EncodeUnsafe</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:af6bd3135243287cb9d8cb26401cddfed inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a196e9da00366c3fce8ca5b56634d110a inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a class="anchor" id="a196e9da00366c3fce8ca5b56634d110a"></a>
+<tr class="memitem:a196e9da00366c3fce8ca5b56634d110a inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a id="a196e9da00366c3fce8ca5b56634d110a"></a>
template&lt;typename InputStream &gt; </td></tr>
<tr class="memitem:a196e9da00366c3fce8ca5b56634d110a inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Decode</b> (InputStream &amp;is, unsigned *codepoint)</td></tr>
<tr class="separator:a196e9da00366c3fce8ca5b56634d110a inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a51a4dccb78915bba67217ace12d294db inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a class="anchor" id="a51a4dccb78915bba67217ace12d294db"></a>
+<tr class="memitem:a51a4dccb78915bba67217ace12d294db inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a id="a51a4dccb78915bba67217ace12d294db"></a>
template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="memitem:a51a4dccb78915bba67217ace12d294db inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Validate</b> (InputStream &amp;is, OutputStream &amp;os)</td></tr>
<tr class="separator:a51a4dccb78915bba67217ace12d294db inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -137,14 +138,14 @@ template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
额外继承的成员函数</h2></td></tr>
<tr class="inherit_header pub_types_structrapidjson_1_1_u_t_f32"><td colspan="2" onclick="javascript:toggleInherit('pub_types_structrapidjson_1_1_u_t_f32')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="structrapidjson_1_1_u_t_f32.html">rapidjson::UTF32&lt; CharType &gt;</a></td></tr>
-<tr class="memitem:a65443b00cba1bb95baf55025108d6a54 inherit pub_types_structrapidjson_1_1_u_t_f32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65443b00cba1bb95baf55025108d6a54"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
+<tr class="memitem:a65443b00cba1bb95baf55025108d6a54 inherit pub_types_structrapidjson_1_1_u_t_f32"><td class="memItemLeft" align="right" valign="top"><a id="a65443b00cba1bb95baf55025108d6a54"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
}</td></tr>
<tr class="separator:a65443b00cba1bb95baf55025108d6a54 inherit pub_types_structrapidjson_1_1_u_t_f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acea97ff3d1b722b88c5faa72cfd4385e inherit pub_types_structrapidjson_1_1_u_t_f32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acea97ff3d1b722b88c5faa72cfd4385e"></a>
+<tr class="memitem:acea97ff3d1b722b88c5faa72cfd4385e inherit pub_types_structrapidjson_1_1_u_t_f32"><td class="memItemLeft" align="right" valign="top"><a id="acea97ff3d1b722b88c5faa72cfd4385e"></a>
typedef CharType&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:acea97ff3d1b722b88c5faa72cfd4385e inherit pub_types_structrapidjson_1_1_u_t_f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_structrapidjson_1_1_u_t_f32"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_structrapidjson_1_1_u_t_f32')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="structrapidjson_1_1_u_t_f32.html">rapidjson::UTF32&lt; CharType &gt;</a></td></tr>
-<tr class="memitem:ac297f89fdab70c22b19f7db769affe05 inherit pub_methods_structrapidjson_1_1_u_t_f32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac297f89fdab70c22b19f7db769affe05"></a>
+<tr class="memitem:ac297f89fdab70c22b19f7db769affe05 inherit pub_methods_structrapidjson_1_1_u_t_f32"><td class="memItemLeft" align="right" valign="top"><a id="ac297f89fdab70c22b19f7db769affe05"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>RAPIDJSON_STATIC_ASSERT</b> (sizeof(Ch) &gt;=4)</td></tr>
<tr class="separator:ac297f89fdab70c22b19f7db769affe05 inherit pub_methods_structrapidjson_1_1_u_t_f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
diff --git a/zh-cn/structrapidjson_1_1_u_t_f32_l_e-members.html b/zh-cn/structrapidjson_1_1_u_t_f32_l_e-members.html
index 193b6246..bbdda636 100644
--- a/zh-cn/structrapidjson_1_1_u_t_f32_l_e-members.html
+++ b/zh-cn/structrapidjson_1_1_u_t_f32_l_e-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f32_l_e.html',
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_u_t_f32_l_e.html b/zh-cn/structrapidjson_1_1_u_t_f32_l_e.html
index 688547e5..45f514ed 100644
--- a/zh-cn/structrapidjson_1_1_u_t_f32_l_e.html
+++ b/zh-cn/structrapidjson_1_1_u_t_f32_l_e.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::UTF32LE&lt; CharType &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f32_l_e.html',
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,44 +93,44 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f32_l_e.html',
类 rapidjson::UTF32LE&lt; CharType &gt; 继承关系图:</div>
<div class="dyncontent">
<div class="center">
- <img src="structrapidjson_1_1_u_t_f32_l_e.png" usemap="#rapidjson::UTF32LE&lt; CharType &gt;_map" alt=""/>
- <map id="rapidjson::UTF32LE&lt; CharType &gt;_map" name="rapidjson::UTF32LE&lt; CharType &gt;_map">
+ <img src="structrapidjson_1_1_u_t_f32_l_e.png" usemap="#rapidjson::UTF32LE_3C_20CharType_20_3E_map" alt=""/>
+ <map id="rapidjson::UTF32LE_3C_20CharType_20_3E_map" name="rapidjson::UTF32LE_3C_20CharType_20_3E_map">
<area href="structrapidjson_1_1_u_t_f32.html" title="UTF-32 encoding. " alt="rapidjson::UTF32&lt; CharType &gt;" shape="rect" coords="0,0,202,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
-<tr class="memitem:acb8b08dd8eeb7f6afb97121bdb885f1c"><td class="memTemplParams" colspan="2"><a class="anchor" id="acb8b08dd8eeb7f6afb97121bdb885f1c"></a>
+<tr class="memitem:acb8b08dd8eeb7f6afb97121bdb885f1c"><td class="memTemplParams" colspan="2"><a id="acb8b08dd8eeb7f6afb97121bdb885f1c"></a>
template&lt;typename InputByteStream &gt; </td></tr>
<tr class="memitem:acb8b08dd8eeb7f6afb97121bdb885f1c"><td class="memTemplItemLeft" align="right" valign="top">static CharType&#160;</td><td class="memTemplItemRight" valign="bottom"><b>TakeBOM</b> (InputByteStream &amp;is)</td></tr>
<tr class="separator:acb8b08dd8eeb7f6afb97121bdb885f1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af98499035db768f4c90be2d8dcc7a704"><td class="memTemplParams" colspan="2"><a class="anchor" id="af98499035db768f4c90be2d8dcc7a704"></a>
+<tr class="memitem:af98499035db768f4c90be2d8dcc7a704"><td class="memTemplParams" colspan="2"><a id="af98499035db768f4c90be2d8dcc7a704"></a>
template&lt;typename InputByteStream &gt; </td></tr>
<tr class="memitem:af98499035db768f4c90be2d8dcc7a704"><td class="memTemplItemLeft" align="right" valign="top">static CharType&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Take</b> (InputByteStream &amp;is)</td></tr>
<tr class="separator:af98499035db768f4c90be2d8dcc7a704"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a97283ce5030af50eb964f6e5fe46b7ff"><td class="memTemplParams" colspan="2"><a class="anchor" id="a97283ce5030af50eb964f6e5fe46b7ff"></a>
+<tr class="memitem:a97283ce5030af50eb964f6e5fe46b7ff"><td class="memTemplParams" colspan="2"><a id="a97283ce5030af50eb964f6e5fe46b7ff"></a>
template&lt;typename OutputByteStream &gt; </td></tr>
<tr class="memitem:a97283ce5030af50eb964f6e5fe46b7ff"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>PutBOM</b> (OutputByteStream &amp;os)</td></tr>
<tr class="separator:a97283ce5030af50eb964f6e5fe46b7ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae8b1fef6e3bcfe8899f228d7a00ee98c"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae8b1fef6e3bcfe8899f228d7a00ee98c"></a>
+<tr class="memitem:ae8b1fef6e3bcfe8899f228d7a00ee98c"><td class="memTemplParams" colspan="2"><a id="ae8b1fef6e3bcfe8899f228d7a00ee98c"></a>
template&lt;typename OutputByteStream &gt; </td></tr>
<tr class="memitem:ae8b1fef6e3bcfe8899f228d7a00ee98c"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Put</b> (OutputByteStream &amp;os, CharType c)</td></tr>
<tr class="separator:ae8b1fef6e3bcfe8899f228d7a00ee98c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_static_methods_structrapidjson_1_1_u_t_f32"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_structrapidjson_1_1_u_t_f32')"><img src="closed.png" alt="-"/>&#160;静态 Public 成员函数 继承自 <a class="el" href="structrapidjson_1_1_u_t_f32.html">rapidjson::UTF32&lt; CharType &gt;</a></td></tr>
-<tr class="memitem:a3b0052772242f79904a11c1fd69ba7a8 inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a class="anchor" id="a3b0052772242f79904a11c1fd69ba7a8"></a>
+<tr class="memitem:a3b0052772242f79904a11c1fd69ba7a8 inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a id="a3b0052772242f79904a11c1fd69ba7a8"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:a3b0052772242f79904a11c1fd69ba7a8 inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Encode</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:a3b0052772242f79904a11c1fd69ba7a8 inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af6bd3135243287cb9d8cb26401cddfed inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a class="anchor" id="af6bd3135243287cb9d8cb26401cddfed"></a>
+<tr class="memitem:af6bd3135243287cb9d8cb26401cddfed inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a id="af6bd3135243287cb9d8cb26401cddfed"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:af6bd3135243287cb9d8cb26401cddfed inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>EncodeUnsafe</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:af6bd3135243287cb9d8cb26401cddfed inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a196e9da00366c3fce8ca5b56634d110a inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a class="anchor" id="a196e9da00366c3fce8ca5b56634d110a"></a>
+<tr class="memitem:a196e9da00366c3fce8ca5b56634d110a inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a id="a196e9da00366c3fce8ca5b56634d110a"></a>
template&lt;typename InputStream &gt; </td></tr>
<tr class="memitem:a196e9da00366c3fce8ca5b56634d110a inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Decode</b> (InputStream &amp;is, unsigned *codepoint)</td></tr>
<tr class="separator:a196e9da00366c3fce8ca5b56634d110a inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a51a4dccb78915bba67217ace12d294db inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a class="anchor" id="a51a4dccb78915bba67217ace12d294db"></a>
+<tr class="memitem:a51a4dccb78915bba67217ace12d294db inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplParams" colspan="2"><a id="a51a4dccb78915bba67217ace12d294db"></a>
template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="memitem:a51a4dccb78915bba67217ace12d294db inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Validate</b> (InputStream &amp;is, OutputStream &amp;os)</td></tr>
<tr class="separator:a51a4dccb78915bba67217ace12d294db inherit pub_static_methods_structrapidjson_1_1_u_t_f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -137,14 +138,14 @@ template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
额外继承的成员函数</h2></td></tr>
<tr class="inherit_header pub_types_structrapidjson_1_1_u_t_f32"><td colspan="2" onclick="javascript:toggleInherit('pub_types_structrapidjson_1_1_u_t_f32')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="structrapidjson_1_1_u_t_f32.html">rapidjson::UTF32&lt; CharType &gt;</a></td></tr>
-<tr class="memitem:a65443b00cba1bb95baf55025108d6a54 inherit pub_types_structrapidjson_1_1_u_t_f32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a65443b00cba1bb95baf55025108d6a54"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
+<tr class="memitem:a65443b00cba1bb95baf55025108d6a54 inherit pub_types_structrapidjson_1_1_u_t_f32"><td class="memItemLeft" align="right" valign="top"><a id="a65443b00cba1bb95baf55025108d6a54"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
}</td></tr>
<tr class="separator:a65443b00cba1bb95baf55025108d6a54 inherit pub_types_structrapidjson_1_1_u_t_f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:acea97ff3d1b722b88c5faa72cfd4385e inherit pub_types_structrapidjson_1_1_u_t_f32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acea97ff3d1b722b88c5faa72cfd4385e"></a>
+<tr class="memitem:acea97ff3d1b722b88c5faa72cfd4385e inherit pub_types_structrapidjson_1_1_u_t_f32"><td class="memItemLeft" align="right" valign="top"><a id="acea97ff3d1b722b88c5faa72cfd4385e"></a>
typedef CharType&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:acea97ff3d1b722b88c5faa72cfd4385e inherit pub_types_structrapidjson_1_1_u_t_f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_structrapidjson_1_1_u_t_f32"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_structrapidjson_1_1_u_t_f32')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="structrapidjson_1_1_u_t_f32.html">rapidjson::UTF32&lt; CharType &gt;</a></td></tr>
-<tr class="memitem:ac297f89fdab70c22b19f7db769affe05 inherit pub_methods_structrapidjson_1_1_u_t_f32"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac297f89fdab70c22b19f7db769affe05"></a>
+<tr class="memitem:ac297f89fdab70c22b19f7db769affe05 inherit pub_methods_structrapidjson_1_1_u_t_f32"><td class="memItemLeft" align="right" valign="top"><a id="ac297f89fdab70c22b19f7db769affe05"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>RAPIDJSON_STATIC_ASSERT</b> (sizeof(Ch) &gt;=4)</td></tr>
<tr class="separator:ac297f89fdab70c22b19f7db769affe05 inherit pub_methods_structrapidjson_1_1_u_t_f32"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
diff --git a/zh-cn/structrapidjson_1_1_u_t_f8-members.html b/zh-cn/structrapidjson_1_1_u_t_f8-members.html
index ce05fd66..3f70cf2a 100644
--- a/zh-cn/structrapidjson_1_1_u_t_f8-members.html
+++ b/zh-cn/structrapidjson_1_1_u_t_f8-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f8.html','');}
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_u_t_f8.html b/zh-cn/structrapidjson_1_1_u_t_f8.html
index bfcdbcd7..89a84212 100644
--- a/zh-cn/structrapidjson_1_1_u_t_f8.html
+++ b/zh-cn/structrapidjson_1_1_u_t_f8.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::UTF8&lt; CharType &gt; 模板结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f8.html','');}
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -92,47 +93,47 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_u_t_f8.html','');}
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
-<tr class="memitem:a162ec39d1feea956ac7c82ee21bbe037"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a162ec39d1feea956ac7c82ee21bbe037"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
+<tr class="memitem:a162ec39d1feea956ac7c82ee21bbe037"><td class="memItemLeft" align="right" valign="top"><a id="a162ec39d1feea956ac7c82ee21bbe037"></a>enum &#160;</td><td class="memItemRight" valign="bottom">{ <b>supportUnicode</b> = 1
}</td></tr>
<tr class="separator:a162ec39d1feea956ac7c82ee21bbe037"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9f47e775d8306a647a5c9eceac4b52fc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9f47e775d8306a647a5c9eceac4b52fc"></a>
+<tr class="memitem:a9f47e775d8306a647a5c9eceac4b52fc"><td class="memItemLeft" align="right" valign="top"><a id="a9f47e775d8306a647a5c9eceac4b52fc"></a>
typedef CharType&#160;</td><td class="memItemRight" valign="bottom"><b>Ch</b></td></tr>
<tr class="separator:a9f47e775d8306a647a5c9eceac4b52fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
-<tr class="memitem:ae7515b5a30ad9c565fe972e408b38135"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae7515b5a30ad9c565fe972e408b38135"></a>
+<tr class="memitem:ae7515b5a30ad9c565fe972e408b38135"><td class="memTemplParams" colspan="2"><a id="ae7515b5a30ad9c565fe972e408b38135"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:ae7515b5a30ad9c565fe972e408b38135"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Encode</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:ae7515b5a30ad9c565fe972e408b38135"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a2d4607f6c91a06881317382c31a7944d"><td class="memTemplParams" colspan="2"><a class="anchor" id="a2d4607f6c91a06881317382c31a7944d"></a>
+<tr class="memitem:a2d4607f6c91a06881317382c31a7944d"><td class="memTemplParams" colspan="2"><a id="a2d4607f6c91a06881317382c31a7944d"></a>
template&lt;typename OutputStream &gt; </td></tr>
<tr class="memitem:a2d4607f6c91a06881317382c31a7944d"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>EncodeUnsafe</b> (OutputStream &amp;os, unsigned codepoint)</td></tr>
<tr class="separator:a2d4607f6c91a06881317382c31a7944d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a6162dbaf07a21e06ae8e48c0186c9217"><td class="memTemplParams" colspan="2"><a class="anchor" id="a6162dbaf07a21e06ae8e48c0186c9217"></a>
+<tr class="memitem:a6162dbaf07a21e06ae8e48c0186c9217"><td class="memTemplParams" colspan="2"><a id="a6162dbaf07a21e06ae8e48c0186c9217"></a>
template&lt;typename InputStream &gt; </td></tr>
<tr class="memitem:a6162dbaf07a21e06ae8e48c0186c9217"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Decode</b> (InputStream &amp;is, unsigned *codepoint)</td></tr>
<tr class="separator:a6162dbaf07a21e06ae8e48c0186c9217"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4bfabc54daeee1bdbfdbac3ec5f4392d"><td class="memTemplParams" colspan="2"><a class="anchor" id="a4bfabc54daeee1bdbfdbac3ec5f4392d"></a>
+<tr class="memitem:a4bfabc54daeee1bdbfdbac3ec5f4392d"><td class="memTemplParams" colspan="2"><a id="a4bfabc54daeee1bdbfdbac3ec5f4392d"></a>
template&lt;typename InputStream , typename OutputStream &gt; </td></tr>
<tr class="memitem:a4bfabc54daeee1bdbfdbac3ec5f4392d"><td class="memTemplItemLeft" align="right" valign="top">static bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Validate</b> (InputStream &amp;is, OutputStream &amp;os)</td></tr>
<tr class="separator:a4bfabc54daeee1bdbfdbac3ec5f4392d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af3510e51d62eed8e64f5c162003d0c7e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af3510e51d62eed8e64f5c162003d0c7e"></a>
+<tr class="memitem:af3510e51d62eed8e64f5c162003d0c7e"><td class="memItemLeft" align="right" valign="top"><a id="af3510e51d62eed8e64f5c162003d0c7e"></a>
static unsigned char&#160;</td><td class="memItemRight" valign="bottom"><b>GetRange</b> (unsigned char c)</td></tr>
<tr class="separator:af3510e51d62eed8e64f5c162003d0c7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ab5d49ba5bb7948b1b38fdd6ea5fa026e"><td class="memTemplParams" colspan="2"><a class="anchor" id="ab5d49ba5bb7948b1b38fdd6ea5fa026e"></a>
+<tr class="memitem:ab5d49ba5bb7948b1b38fdd6ea5fa026e"><td class="memTemplParams" colspan="2"><a id="ab5d49ba5bb7948b1b38fdd6ea5fa026e"></a>
template&lt;typename InputByteStream &gt; </td></tr>
<tr class="memitem:ab5d49ba5bb7948b1b38fdd6ea5fa026e"><td class="memTemplItemLeft" align="right" valign="top">static CharType&#160;</td><td class="memTemplItemRight" valign="bottom"><b>TakeBOM</b> (InputByteStream &amp;is)</td></tr>
<tr class="separator:ab5d49ba5bb7948b1b38fdd6ea5fa026e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae940f0948417361aab47948b77aba3e3"><td class="memTemplParams" colspan="2"><a class="anchor" id="ae940f0948417361aab47948b77aba3e3"></a>
+<tr class="memitem:ae940f0948417361aab47948b77aba3e3"><td class="memTemplParams" colspan="2"><a id="ae940f0948417361aab47948b77aba3e3"></a>
template&lt;typename InputByteStream &gt; </td></tr>
<tr class="memitem:ae940f0948417361aab47948b77aba3e3"><td class="memTemplItemLeft" align="right" valign="top">static Ch&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Take</b> (InputByteStream &amp;is)</td></tr>
<tr class="separator:ae940f0948417361aab47948b77aba3e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ac5843a8ff5370dd22d8ff631fef1d40e"><td class="memTemplParams" colspan="2"><a class="anchor" id="ac5843a8ff5370dd22d8ff631fef1d40e"></a>
+<tr class="memitem:ac5843a8ff5370dd22d8ff631fef1d40e"><td class="memTemplParams" colspan="2"><a id="ac5843a8ff5370dd22d8ff631fef1d40e"></a>
template&lt;typename OutputByteStream &gt; </td></tr>
<tr class="memitem:ac5843a8ff5370dd22d8ff631fef1d40e"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>PutBOM</b> (OutputByteStream &amp;os)</td></tr>
<tr class="separator:ac5843a8ff5370dd22d8ff631fef1d40e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1bad7130f2c4af05880e92ea61a13aca"><td class="memTemplParams" colspan="2"><a class="anchor" id="a1bad7130f2c4af05880e92ea61a13aca"></a>
+<tr class="memitem:a1bad7130f2c4af05880e92ea61a13aca"><td class="memTemplParams" colspan="2"><a id="a1bad7130f2c4af05880e92ea61a13aca"></a>
template&lt;typename OutputByteStream &gt; </td></tr>
<tr class="memitem:a1bad7130f2c4af05880e92ea61a13aca"><td class="memTemplItemLeft" align="right" valign="top">static void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>Put</b> (OutputByteStream &amp;os, Ch c)</td></tr>
<tr class="separator:a1bad7130f2c4af05880e92ea61a13aca"><td class="memSeparator" colspan="2">&#160;</td></tr>
diff --git a/zh-cn/structrapidjson_1_1_writer_1_1_level-members.html b/zh-cn/structrapidjson_1_1_writer_1_1_level-members.html
index 2dc47d4b..5fd9b6e0 100644
--- a/zh-cn/structrapidjson_1_1_writer_1_1_level-members.html
+++ b/zh-cn/structrapidjson_1_1_writer_1_1_level-members.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: 成员列表</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_writer_1_1_level.h
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
diff --git a/zh-cn/structrapidjson_1_1_writer_1_1_level.html b/zh-cn/structrapidjson_1_1_writer_1_1_level.html
index 99637d4c..8bc78179 100644
--- a/zh-cn/structrapidjson_1_1_writer_1_1_level.html
+++ b/zh-cn/structrapidjson_1_1_writer_1_1_level.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;::Level结构体 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_writer_1_1_level.h
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -85,33 +86,33 @@ $(document).ready(function(){initNavTree('structrapidjson_1_1_writer_1_1_level.h
</div><!--header-->
<div class="contents">
-<p>Information for each nested level.
+<p>Information for each nested level
<a href="structrapidjson_1_1_writer_1_1_level.html#details">更多...</a></p>
<p><code>#include &lt;<a class="el" href="writer_8h_source.html">writer.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
-<tr class="memitem:aa12b98bd13c621e6a19cdb67d118f510"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa12b98bd13c621e6a19cdb67d118f510"></a>
+<tr class="memitem:aa12b98bd13c621e6a19cdb67d118f510"><td class="memItemLeft" align="right" valign="top"><a id="aa12b98bd13c621e6a19cdb67d118f510"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>Level</b> (bool inArray_)</td></tr>
<tr class="separator:aa12b98bd13c621e6a19cdb67d118f510"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public 属性</h2></td></tr>
-<tr class="memitem:a5d17bdfa9ded5de72f5f91175cc3e36b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d17bdfa9ded5de72f5f91175cc3e36b"></a>
+<tr class="memitem:a5d17bdfa9ded5de72f5f91175cc3e36b"><td class="memItemLeft" align="right" valign="top"><a id="a5d17bdfa9ded5de72f5f91175cc3e36b"></a>
size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b">valueCount</a></td></tr>
<tr class="memdesc:a5d17bdfa9ded5de72f5f91175cc3e36b"><td class="mdescLeft">&#160;</td><td class="mdescRight">number of values in this level <br /></td></tr>
<tr class="separator:a5d17bdfa9ded5de72f5f91175cc3e36b"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a59255e3b1d371161f7c894503cfd6bec"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59255e3b1d371161f7c894503cfd6bec"></a>
+<tr class="memitem:a59255e3b1d371161f7c894503cfd6bec"><td class="memItemLeft" align="right" valign="top"><a id="a59255e3b1d371161f7c894503cfd6bec"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrapidjson_1_1_writer_1_1_level.html#a59255e3b1d371161f7c894503cfd6bec">inArray</a></td></tr>
<tr class="memdesc:a59255e3b1d371161f7c894503cfd6bec"><td class="mdescLeft">&#160;</td><td class="mdescRight">true if in array, otherwise in object <br /></td></tr>
<tr class="separator:a59255e3b1d371161f7c894503cfd6bec"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
-<div class="textblock"><h3>template&lt;typename OutputStream, typename SourceEncoding, typename TargetEncoding, typename StackAllocator, unsigned writeFlags&gt;<br />
+<div class="textblock"><h3>template&lt;typename OutputStream, typename SourceEncoding = UTF8&lt;&gt;, typename TargetEncoding = UTF8&lt;&gt;, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags&gt;<br />
struct rapidjson::Writer&lt; OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags &gt;::Level</h3>
-<p>Information for each nested level. </p>
+<p>Information for each nested level </p>
</div><hr/>该结构体的文档由以下文件生成:<ul>
<li>include/rapidjson/<a class="el" href="writer_8h_source.html">writer.h</a></li>
</ul>
diff --git a/zh-cn/swap_8h_source.html b/zh-cn/swap_8h_source.html
index 9bc667f3..f836dbfa 100644
--- a/zh-cn/swap_8h_source.html
+++ b/zh-cn/swap_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/internal/swap.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('swap_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,59 +81,13 @@ $(document).ready(function(){initNavTree('swap_8h_source.html','');});
<div class="title">swap.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed</span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR</span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the</span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_INTERNAL_SWAP_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_INTERNAL_SWAP_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_OFF(c++98-compat)</div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">namespace </span>internal {</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">//! Custom swap() to avoid dependency on C++ &lt;algorithm&gt; header</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span><span class="comment">/*! \tparam T Type of the arguments to swap, should be instantiated with primitive C++ types only.</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> \note This has the same semantics as std::swap().</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> Swap(T&amp; a, T&amp; b) RAPIDJSON_NOEXCEPT {</div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; T tmp = a;</div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; a = b;</div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; b = tmp;</div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;} <span class="comment">// namespace internal</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_INTERNAL_SWAP_H_</span></div>
-</div><!-- fragment --></div><!-- contents -->
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_INTERNAL_SWAP_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_INTERNAL_SWAP_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../rapidjson.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;RAPIDJSON_DIAG_OFF(c++98-compat)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">namespace </span>internal {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">//! Custom swap() to avoid dependency on C++ &lt;algorithm&gt; header</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"></span><span class="comment">/*! \tparam T Type of the arguments to swap, should be instantiated with primitive C++ types only.</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> \note This has the same semantics as std::swap().</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> Swap(T&amp; a, T&amp; b) RAPIDJSON_NOEXCEPT {</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; T tmp = a;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; a = b;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; b = tmp;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;}</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;} <span class="comment">// namespace internal</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#if defined(__clang__)</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_INTERNAL_SWAP_H_</span></div></div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.7-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_5167ae66a3a40cb9e5e46c75b7477e81.html">internal</a></li><li class="navelem"><b>swap.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><a class="el" href="dir_8d7584a8244d286291cd37b99676a43b.html">internal</a></li><li class="navelem"><b>swap.h</b></li>
</ul>
</div>
</body>
diff --git a/zh-cn/tabs.css b/zh-cn/tabs.css
index 9cf578f2..a28614b8 100644
--- a/zh-cn/tabs.css
+++ b/zh-cn/tabs.css
@@ -1,60 +1 @@
-.tabs, .tabs2, .tabs3 {
- background-image: url('tab_b.png');
- width: 100%;
- z-index: 101;
- font-size: 13px;
- font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
-}
-
-.tabs2 {
- font-size: 10px;
-}
-.tabs3 {
- font-size: 9px;
-}
-
-.tablist {
- margin: 0;
- padding: 0;
- display: table;
-}
-
-.tablist li {
- float: left;
- display: table-cell;
- background-image: url('tab_b.png');
- line-height: 36px;
- list-style: none;
-}
-
-.tablist a {
- display: block;
- padding: 0 20px;
- font-weight: bold;
- background-image:url('tab_s.png');
- background-repeat:no-repeat;
- background-position:right;
- color: #283A5D;
- text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
- text-decoration: none;
- outline: none;
-}
-
-.tabs3 .tablist a {
- padding: 0 10px;
-}
-
-.tablist a:hover {
- background-image: url('tab_h.png');
- background-repeat:repeat-x;
- color: #fff;
- text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
- text-decoration: none;
-}
-
-.tablist li.current a {
- background-image: url('tab_a.png');
- background-repeat:repeat-x;
- color: #fff;
- text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-}
+.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file
diff --git a/zh-cn/writer_8h_source.html b/zh-cn/writer_8h_source.html
index dd6c78f2..72b657ba 100644
--- a/zh-cn/writer_8h_source.html
+++ b/zh-cn/writer_8h_source.html
@@ -4,22 +4,23 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.7"/>
+<meta name="generator" content="Doxygen 1.8.13"/>
<title>RapidJSON: include/rapidjson/writer.h 源文件</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
+<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
- $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
- $(document).ready(function() { searchBox.OnSelectItem(0); });
+ $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygenextra.css" rel="stylesheet" type="text/css"/>
@@ -42,7 +43,7 @@
</span>
</div>
<!-- end header part -->
-<!-- 制作者 Doxygen 1.8.7 -->
+<!-- 制作者 Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'搜索');
</script>
@@ -66,7 +67,7 @@ $(document).ready(function(){initNavTree('writer_8h_source.html','');});
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
-<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>全部</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>类</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>命名空间</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>文件</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>函数</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>变量</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>类型定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>枚举</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>枚举值</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>友元</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>宏定义</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>组</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark">&#160;</span>页</a></div>
+</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
@@ -80,745 +81,38 @@ $(document).ready(function(){initNavTree('writer_8h_source.html','');});
<div class="title">writer.h</div> </div>
</div><!--header-->
<div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div>
-<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div>
-<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div>
-<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div>
-<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div>
-<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div>
-<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div>
-<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div>
-<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div>
-<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div>
-<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div>
-<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
-<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_WRITER_H_</span></div>
-<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_WRITER_H_</span></div>
-<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
-<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div>
-<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;internal/meta.h&quot;</span></div>
-<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;internal/stack.h&quot;</span></div>
-<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;internal/strfunc.h&quot;</span></div>
-<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;internal/dtoa.h&quot;</span></div>
-<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;internal/itoa.h&quot;</span></div>
-<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;stringbuffer.h&quot;</span></div>
-<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;new&gt;</span> <span class="comment">// placement new</span></div>
-<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
-<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#if defined(RAPIDJSON_SIMD) &amp;&amp; defined(_MSC_VER)</span></div>
-<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;intrin.h&gt;</span></div>
-<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#pragma intrinsic(_BitScanForward)</span></div>
-<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#ifdef RAPIDJSON_SSE42</span></div>
-<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &lt;nmmintrin.h&gt;</span></div>
-<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_SSE2)</span></div>
-<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;emmintrin.h&gt;</span></div>
-<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_NEON)</span></div>
-<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;arm_neon.h&gt;</span></div>
-<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
-<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
-<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;RAPIDJSON_DIAG_OFF(4127) <span class="comment">// conditional expression is constant</span></div>
-<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
-<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;RAPIDJSON_DIAG_PUSH</div>
-<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div>
-<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;RAPIDJSON_DIAG_OFF(unreachable-code)</div>
-<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;RAPIDJSON_DIAG_OFF(c++98-compat)</div>
-<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
-<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div>
-<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div>
-<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"></span><span class="comment">// WriteFlag</span></div>
-<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">/*! \def RAPIDJSON_WRITE_DEFAULT_FLAGS </span></div>
-<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div>
-<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> \brief User-defined kWriteDefaultFlags definition.</span></div>
-<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> User can define this as any \c WriteFlag combinations.</span></div>
-<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_WRITE_DEFAULT_FLAGS</span></div>
-<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga1975595e2f1dc20a2d4859f340ac88c6"> 63</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_WRITE_DEFAULT_FLAGS kWriteNoFlags</span></div>
-<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">//! Combination of writeFlags</span></div>
-<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19"> 67</a></span>&#160;<span class="comment"></span><span class="keyword">enum</span> <a class="code" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19">WriteFlag</a> {</div>
-<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19ae971aa1fc0ae64c8f3d2b47fd802846a"> 68</a></span>&#160; <a class="code" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19ae971aa1fc0ae64c8f3d2b47fd802846a">kWriteNoFlags</a> = 0, <span class="comment">//!&lt; No flags are set.</span></div>
-<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19ac1b5e17278b060e9e866df075c104c10"> 69</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19ac1b5e17278b060e9e866df075c104c10">kWriteValidateEncodingFlag</a> = 1, <span class="comment">//!&lt; Validate encoding of JSON strings.</span></div>
-<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19a3adbca1d31ad845ff4e9d742280cce39"> 70</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19a3adbca1d31ad845ff4e9d742280cce39">kWriteNanAndInfFlag</a> = 2, <span class="comment">//!&lt; Allow writing of Infinity, -Infinity and NaN.</span></div>
-<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19a5b5ca665afdfa828a74ae5755c67a226"> 71</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19a5b5ca665afdfa828a74ae5755c67a226">kWriteDefaultFlags</a> = <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga1975595e2f1dc20a2d4859f340ac88c6">RAPIDJSON_WRITE_DEFAULT_FLAGS</a> <span class="comment">//!&lt; Default write flags. Can be customized by defining RAPIDJSON_WRITE_DEFAULT_FLAGS</span></div>
-<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"></span>};</div>
-<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment">//! JSON writer</span></div>
-<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"></span><span class="comment">/*! Writer implements the concept Handler.</span></div>
-<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> It generates JSON text by events to an output os.</span></div>
-<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> User may programmatically calls the functions of a writer to generate JSON text.</span></div>
-<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> On the other side, a writer can also be passed to objects that generates events, </span></div>
-<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> for example Reader::Parse() and Document::Accept().</span></div>
-<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> \tparam OutputStream Type of output stream.</span></div>
-<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> \tparam SourceEncoding Encoding of source string.</span></div>
-<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> \tparam TargetEncoding Encoding of output stream.</span></div>
-<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> \tparam StackAllocator Type of allocator for allocating memory of stack.</span></div>
-<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> \note implements Handler concept</span></div>
-<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">*/</span></div>
-<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream, <span class="keyword">typename</span> SourceEncoding = UTF8&lt;&gt;, <span class="keyword">typename</span> TargetEncoding = UTF8&lt;&gt;, <span class="keyword">typename</span> StackAllocator = CrtAllocator, <span class="keywordtype">unsigned</span> writeFlags = kWriteDefaultFlags&gt;</div>
-<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="keyword">class </span>Writer {</div>
-<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword">public</span>:</div>
-<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SourceEncoding::Ch Ch;</div>
-<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
-<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDefaultMaxDecimalPlaces = 324;</div>
-<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> //! Constructor</span></div>
-<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"></span><span class="comment"> /*! \param os Output stream.</span></div>
-<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> \param stackAllocator User supplied allocator. If it is null, it will create a private one.</span></div>
-<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> \param levelDepth Initial capacity of stack.</span></div>
-<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">explicit</span></div>
-<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2"> 103</a></span>&#160; <a class="code" href="classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2">Writer</a>(OutputStream&amp; os, StackAllocator* stackAllocator = 0, <span class="keywordtype">size_t</span> levelDepth = kDefaultLevelDepth) : </div>
-<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; os_(&amp;os), level_stack_(stackAllocator, levelDepth * sizeof(<a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Level</a>)), maxDecimalPlaces_(kDefaultMaxDecimalPlaces), hasRoot_(false) {}</div>
-<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div>
-<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">explicit</span></div>
-<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="classrapidjson_1_1_writer.html">Writer</a>(StackAllocator* allocator = 0, <span class="keywordtype">size_t</span> levelDepth = kDefaultLevelDepth) :</div>
-<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; os_(0), level_stack_(allocator, levelDepth * sizeof(Level)), maxDecimalPlaces_(kDefaultMaxDecimalPlaces), hasRoot_(false) {}</div>
-<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div>
-<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div>
-<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; Writer(Writer&amp;&amp; rhs) :</div>
-<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; os_(rhs.os_), level_stack_(std::move(rhs.level_stack_)), maxDecimalPlaces_(rhs.maxDecimalPlaces_), hasRoot_(rhs.hasRoot_) {</div>
-<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; rhs.os_ = 0;</div>
-<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div>
-<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> //! Reset the writer with a new stream.</span></div>
-<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"> This function reset the writer with a new stream and default settings,</span></div>
-<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> in order to make a Writer object reusable for output multiple JSONs.</span></div>
-<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> \param os New output stream.</span></div>
-<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> \code</span></div>
-<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> Writer&lt;OutputStream&gt; writer(os1);</span></div>
-<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> writer.StartObject();</span></div>
-<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> // ...</span></div>
-<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"> writer.EndObject();</span></div>
-<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> writer.Reset(os2);</span></div>
-<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> writer.StartObject();</span></div>
-<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> // ...</span></div>
-<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> writer.EndObject();</span></div>
-<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> \endcode</span></div>
-<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#ac4026d3f14b80d6d7fc10004b1972722"> 135</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_writer.html#ac4026d3f14b80d6d7fc10004b1972722">Reset</a>(OutputStream&amp; os) {</div>
-<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; os_ = &amp;os;</div>
-<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; hasRoot_ = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; level_stack_.Clear();</div>
-<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div>
-<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> //! Checks whether the output is a complete JSON.</span></div>
-<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> A complete JSON has a complete root object or array.</span></div>
-<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#a0cde8037db76f887cd9c557fd68630c5"> 145</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_writer.html#a0cde8037db76f887cd9c557fd68630c5">IsComplete</a>()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> hasRoot_ &amp;&amp; level_stack_.Empty();</div>
-<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
-<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
-<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordtype">int</span> GetMaxDecimalPlaces()<span class="keyword"> const </span>{</div>
-<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> maxDecimalPlaces_;</div>
-<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div>
-<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment"> //! Sets the maximum number of decimal places for double output.</span></div>
-<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"> This setting truncates the output with specified number of decimal places.</span></div>
-<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"> For example, </span></div>
-<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"> \code</span></div>
-<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"> writer.SetMaxDecimalPlaces(3);</span></div>
-<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"> writer.StartArray();</span></div>
-<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"> writer.Double(0.12345); // &quot;0.123&quot;</span></div>
-<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> writer.Double(0.0001); // &quot;0.0&quot;</span></div>
-<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"> writer.Double(1.234567890123456e30); // &quot;1.234567890123456e30&quot; (do not truncate significand for positive exponent)</span></div>
-<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"> writer.Double(1.23e-4); // &quot;0.0&quot; (do truncate significand for negative exponent)</span></div>
-<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"> writer.EndArray();</span></div>
-<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> \endcode</span></div>
-<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment"> The default setting does not truncate any decimal places. You can restore to this setting by calling</span></div>
-<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> \code</span></div>
-<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"> writer.SetMaxDecimalPlaces(Writer::kDefaultMaxDecimalPlaces);</span></div>
-<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> \endcode</span></div>
-<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#aa7b6967dc237519e2a6d8b3939fb9634"> 174</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_writer.html#aa7b6967dc237519e2a6d8b3939fb9634">SetMaxDecimalPlaces</a>(<span class="keywordtype">int</span> maxDecimalPlaces) {</div>
-<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; maxDecimalPlaces_ = maxDecimalPlaces;</div>
-<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div>
-<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"> /*!@name Implementation of Handler</span></div>
-<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"> \see Handler</span></div>
-<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"> */</span><span class="comment"></span></div>
-<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment"> //@{</span></div>
-<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordtype">bool</span> Null() { Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">kNullType</a>); <span class="keywordflow">return</span> EndValue(WriteNull()); }</div>
-<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b) { Prefix(b ? <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">kTrueType</a> : <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">kFalseType</a>); <span class="keywordflow">return</span> EndValue(WriteBool(b)); }</div>
-<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i) { Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> EndValue(WriteInt(i)); }</div>
-<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> u) { Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> EndValue(WriteUint(u)); }</div>
-<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordtype">bool</span> Int64(int64_t i64) { Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> EndValue(WriteInt64(i64)); }</div>
-<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordtype">bool</span> Uint64(uint64_t u64) { Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> EndValue(WriteUint64(u64)); }</div>
-<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment"> //! Writes the given \c double value to the stream</span></div>
-<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"> \param d The value to be written.</span></div>
-<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"> \return Whether it is succeed.</span></div>
-<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#aff66881798d01e932a0b8b8ef97b0373"> 195</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_writer.html#aff66881798d01e932a0b8b8ef97b0373">Double</a>(<span class="keywordtype">double</span> d) { Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> EndValue(WriteDouble(d)); }</div>
-<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div>
-<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">bool</span> RawNumber(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy = <span class="keyword">false</span>) {</div>
-<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(str != 0);</div>
-<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; (void)copy;</div>
-<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>);</div>
-<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> EndValue(WriteString(str, length));</div>
-<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div>
-<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div>
-<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy = <span class="keyword">false</span>) {</div>
-<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(str != 0);</div>
-<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; (void)copy;</div>
-<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>);</div>
-<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> EndValue(WriteString(str, length));</div>
-<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div>
-<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div>
-<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; str) {</div>
-<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> String(str.data(), <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(str.size()));</div>
-<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div>
-<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div>
-<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordtype">bool</span> StartObject() {</div>
-<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>);</div>
-<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keyword">new</span> (level_stack_.template Push&lt;Level&gt;()) Level(<span class="keyword">false</span>);</div>
-<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> WriteStartObject();</div>
-<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div>
-<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div>
-<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy = <span class="keyword">false</span>) { <span class="keywordflow">return</span> String(str, length, copy); }</div>
-<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div>
-<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div>
-<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; str)</div>
-<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div>
-<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> Key(str.data(), <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(str.size()));</div>
-<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div>
-<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; </div>
-<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount = 0) {</div>
-<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; (void)memberCount;</div>
-<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(level_stack_.GetSize() &gt;= <span class="keyword">sizeof</span>(Level)); <span class="comment">// not inside an Object</span></div>
-<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!level_stack_.template Top&lt;Level&gt;()-&gt;inArray); <span class="comment">// currently inside an Array, not Object</span></div>
-<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(0 == level_stack_.template Top&lt;Level&gt;()-&gt;valueCount % 2); <span class="comment">// Object has a Key without a Value</span></div>
-<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; level_stack_.template Pop&lt;Level&gt;(1);</div>
-<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> EndValue(WriteEndObject());</div>
-<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div>
-<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div>
-<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordtype">bool</span> StartArray() {</div>
-<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div>
-<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keyword">new</span> (level_stack_.template Push&lt;Level&gt;()) Level(<span class="keyword">true</span>);</div>
-<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> WriteStartArray();</div>
-<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div>
-<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div>
-<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount = 0) {</div>
-<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; (void)elementCount;</div>
-<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(level_stack_.GetSize() &gt;= <span class="keyword">sizeof</span>(Level));</div>
-<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(level_stack_.template Top&lt;Level&gt;()-&gt;inArray);</div>
-<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; level_stack_.template Pop&lt;Level&gt;(1);</div>
-<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> EndValue(WriteEndArray());</div>
-<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }<span class="comment"></span></div>
-<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment"> /*! @name Convenience extensions */</span><span class="comment"></span></div>
-<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment"> //@{</span></div>
-<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"> //! Simpler but slower overload.</span></div>
-<div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#a849e2b675a2b868699a14d45c7396f24"> 260</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_writer.html#a849e2b675a2b868699a14d45c7396f24">String</a>(<span class="keyword">const</span> Ch* <span class="keyword">const</span>&amp; str) { <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_writer.html#a849e2b675a2b868699a14d45c7396f24">String</a>(str, internal::StrLen(str)); }</div>
-<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* <span class="keyword">const</span>&amp; str) { <span class="keywordflow">return</span> Key(str, internal::StrLen(str)); }</div>
-<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="comment"></span></div>
-<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> //@}</span></div>
-<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"></span><span class="comment"></span></div>
-<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"> //! Write a raw JSON value.</span></div>
-<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"> For user to write a stringified JSON as a value.</span></div>
-<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment"> \param json A well-formed JSON value. It should not contain null character within [0, length - 1] range.</span></div>
-<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment"> \param length Length of the json.</span></div>
-<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment"> \param type Type of the root of json.</span></div>
-<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#a8acb89b2bbb1e5f384e6076b65044dbe"> 273</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_writer.html#a8acb89b2bbb1e5f384e6076b65044dbe">RawValue</a>(<span class="keyword">const</span> Ch* json, <span class="keywordtype">size_t</span> length, <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type) {</div>
-<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(json != 0);</div>
-<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; Prefix(type);</div>
-<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> EndValue(WriteRawValue(json, length));</div>
-<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div>
-<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"></span></div>
-<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment"> //! Flush the output stream.</span></div>
-<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div>
-<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="comment"> Allows the user to flush the output stream immediately.</span></div>
-<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment"> */</span></div>
-<div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#a72cefd18d176bc12a53adb3185c51ca7"> 283</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_writer.html#a72cefd18d176bc12a53adb3185c51ca7">Flush</a>() {</div>
-<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; os_-&gt;Flush();</div>
-<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div>
-<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div>
-<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="keyword">protected</span>:<span class="comment"></span></div>
-<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment"> //! Information for each nested level</span></div>
-<div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_writer_1_1_level.html"> 289</a></span>&#160;<span class="comment"></span> <span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Level</a> {</div>
-<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Level</a>(<span class="keywordtype">bool</span> inArray_) : valueCount(0), inArray(inArray_) {}</div>
-<div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b"> 291</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b">valueCount</a>; <span class="comment">//!&lt; number of values in this level</span></div>
-<div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_writer_1_1_level.html#a59255e3b1d371161f7c894503cfd6bec"> 292</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a59255e3b1d371161f7c894503cfd6bec">inArray</a>; <span class="comment">//!&lt; true if in array, otherwise in object</span></div>
-<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="comment"></span> };</div>
-<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div>
-<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultLevelDepth = 32;</div>
-<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;</div>
-<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordtype">bool</span> WriteNull() {</div>
-<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 4);</div>
-<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;n&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;u&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;l&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;l&#39;</span>); <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div>
-<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div>
-<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordtype">bool</span> WriteBool(<span class="keywordtype">bool</span> b) {</div>
-<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span> (b) {</div>
-<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 4);</div>
-<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;t&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;r&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;u&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;e&#39;</span>);</div>
-<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div>
-<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; PutReserve(*os_, 5);</div>
-<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; PutUnsafe(*os_, <span class="charliteral">&#39;f&#39;</span>); PutUnsafe(*os_, <span class="charliteral">&#39;a&#39;</span>); PutUnsafe(*os_, <span class="charliteral">&#39;l&#39;</span>); PutUnsafe(*os_, <span class="charliteral">&#39;s&#39;</span>); PutUnsafe(*os_, <span class="charliteral">&#39;e&#39;</span>);</div>
-<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div>
-<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div>
-<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div>
-<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordtype">bool</span> WriteInt(<span class="keywordtype">int</span> i) {</div>
-<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordtype">char</span> buffer[11];</div>
-<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::i32toa(i, buffer);</div>
-<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, static_cast&lt;size_t&gt;(end - buffer));</div>
-<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>* p = buffer; p != end; ++p)</div>
-<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, static_cast&lt;typename OutputStream::Ch&gt;(*p));</div>
-<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div>
-<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div>
-<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordtype">bool</span> WriteUint(<span class="keywordtype">unsigned</span> u) {</div>
-<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordtype">char</span> buffer[10];</div>
-<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::u32toa(u, buffer);</div>
-<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, static_cast&lt;size_t&gt;(end - buffer));</div>
-<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>* p = buffer; p != end; ++p)</div>
-<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, static_cast&lt;typename OutputStream::Ch&gt;(*p));</div>
-<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div>
-<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div>
-<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordtype">bool</span> WriteInt64(int64_t i64) {</div>
-<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordtype">char</span> buffer[21];</div>
-<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::i64toa(i64, buffer);</div>
-<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, static_cast&lt;size_t&gt;(end - buffer));</div>
-<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>* p = buffer; p != end; ++p)</div>
-<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, static_cast&lt;typename OutputStream::Ch&gt;(*p));</div>
-<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div>
-<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div>
-<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordtype">bool</span> WriteUint64(uint64_t u64) {</div>
-<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordtype">char</span> buffer[20];</div>
-<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordtype">char</span>* end = internal::u64toa(u64, buffer);</div>
-<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, static_cast&lt;size_t&gt;(end - buffer));</div>
-<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">char</span>* p = buffer; p != end; ++p)</div>
-<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, static_cast&lt;typename OutputStream::Ch&gt;(*p));</div>
-<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div>
-<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div>
-<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordtype">bool</span> WriteDouble(<span class="keywordtype">double</span> d) {</div>
-<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">if</span> (internal::Double(d).IsNanOrInf()) {</div>
-<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">if</span> (!(writeFlags &amp; kWriteNanAndInfFlag))</div>
-<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span> (internal::Double(d).IsNan()) {</div>
-<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 3);</div>
-<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;N&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;a&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;N&#39;</span>);</div>
-<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div>
-<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">if</span> (internal::Double(d).Sign()) {</div>
-<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 9);</div>
-<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;-&#39;</span>);</div>
-<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div>
-<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 8);</div>
-<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;I&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;n&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;f&#39;</span>);</div>
-<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;i&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;n&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;i&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;t&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;y&#39;</span>);</div>
-<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div>
-<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;</div>
-<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordtype">char</span> buffer[25];</div>
-<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordtype">char</span>* end = internal::dtoa(d, buffer, maxDecimalPlaces_);</div>
-<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, static_cast&lt;size_t&gt;(end - buffer));</div>
-<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">char</span>* p = buffer; p != end; ++p)</div>
-<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, static_cast&lt;typename OutputStream::Ch&gt;(*p));</div>
-<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div>
-<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div>
-<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordtype">bool</span> WriteString(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length) {</div>
-<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">typename</span> OutputStream::Ch hexDigits[16] = { <span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;3&#39;</span>, <span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;6&#39;</span>, <span class="charliteral">&#39;7&#39;</span>, <span class="charliteral">&#39;8&#39;</span>, <span class="charliteral">&#39;9&#39;</span>, <span class="charliteral">&#39;A&#39;</span>, <span class="charliteral">&#39;B&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39;D&#39;</span>, <span class="charliteral">&#39;E&#39;</span>, <span class="charliteral">&#39;F&#39;</span> };</div>
-<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> escape[256] = {</div>
-<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="preprocessor">#define Z16 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</span></div>
-<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="comment">//0 1 2 3 4 5 6 7 8 9 A B C D E F</span></div>
-<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;b&#39;</span>, <span class="charliteral">&#39;t&#39;</span>, <span class="charliteral">&#39;n&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;f&#39;</span>, <span class="charliteral">&#39;r&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="comment">// 00</span></div>
-<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="comment">// 10</span></div>
-<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; 0, 0, <span class="charliteral">&#39;&quot;&#39;</span>, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, <span class="comment">// 20</span></div>
-<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; Z16, Z16, <span class="comment">// 30~4F</span></div>
-<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<span class="charliteral">&#39;\\&#39;</span>, 0, 0, 0, <span class="comment">// 50</span></div>
-<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16 <span class="comment">// 60~FF</span></div>
-<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="preprocessor">#undef Z16</span></div>
-<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; };</div>
-<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div>
-<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> (TargetEncoding::supportUnicode)</div>
-<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 2 + length * 6); <span class="comment">// &quot;\uxxxx...&quot;</span></div>
-<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 2 + length * 12); <span class="comment">// &quot;\uxxxx\uyyyy...&quot;</span></div>
-<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div>
-<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;\&quot;&#39;</span>);</div>
-<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; GenericStringStream&lt;SourceEncoding&gt; is(str);</div>
-<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">while</span> (ScanWriteUnescapedString(is, length)) {</div>
-<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keyword">const</span> Ch c = is.Peek();</div>
-<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">if</span> (!TargetEncoding::supportUnicode &amp;&amp; static_cast&lt;unsigned&gt;(c) &gt;= 0x80) {</div>
-<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="comment">// Unicode escaping</span></div>
-<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div>
-<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!SourceEncoding::Decode(is, &amp;codepoint)))</div>
-<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;\\&#39;</span>);</div>
-<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;u&#39;</span>);</div>
-<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (codepoint &lt;= 0xD7FF || (codepoint &gt;= 0xE000 &amp;&amp; codepoint &lt;= 0xFFFF)) {</div>
-<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(codepoint &gt;&gt; 12) &amp; 15]);</div>
-<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(codepoint &gt;&gt; 8) &amp; 15]);</div>
-<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(codepoint &gt;&gt; 4) &amp; 15]);</div>
-<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(codepoint ) &amp; 15]);</div>
-<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; }</div>
-<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &gt;= 0x010000 &amp;&amp; codepoint &lt;= 0x10FFFF);</div>
-<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="comment">// Surrogate pair</span></div>
-<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordtype">unsigned</span> s = codepoint - 0x010000;</div>
-<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordtype">unsigned</span> lead = (s &gt;&gt; 10) + 0xD800;</div>
-<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordtype">unsigned</span> trail = (s &amp; 0x3FF) + 0xDC00;</div>
-<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(lead &gt;&gt; 12) &amp; 15]);</div>
-<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(lead &gt;&gt; 8) &amp; 15]);</div>
-<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(lead &gt;&gt; 4) &amp; 15]);</div>
-<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(lead ) &amp; 15]);</div>
-<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;\\&#39;</span>);</div>
-<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;u&#39;</span>);</div>
-<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(trail &gt;&gt; 12) &amp; 15]);</div>
-<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(trail &gt;&gt; 8) &amp; 15]);</div>
-<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(trail &gt;&gt; 4) &amp; 15]);</div>
-<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(trail ) &amp; 15]); </div>
-<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div>
-<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div>
-<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((<span class="keyword">sizeof</span>(Ch) == 1 || static_cast&lt;unsigned&gt;(c) &lt; 256) &amp;&amp; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(escape[static_cast&lt;unsigned char&gt;(c)])) {</div>
-<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; is.Take();</div>
-<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;\\&#39;</span>);</div>
-<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, static_cast&lt;typename OutputStream::Ch&gt;(escape[static_cast&lt;unsigned char&gt;(c)]));</div>
-<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">if</span> (escape[static_cast&lt;unsigned char&gt;(c)] == <span class="charliteral">&#39;u&#39;</span>) {</div>
-<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;0&#39;</span>);</div>
-<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[static_cast&lt;unsigned char&gt;(c) &gt;&gt; 4]);</div>
-<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[static_cast&lt;unsigned char&gt;(c) &amp; 0xF]);</div>
-<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div>
-<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div>
-<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!(writeFlags &amp; kWriteValidateEncodingFlag ? </div>
-<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; Transcoder&lt;SourceEncoding, TargetEncoding&gt;::Validate(is, *os_) :</div>
-<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; Transcoder&lt;SourceEncoding, TargetEncoding&gt;::TranscodeUnsafe(is, *os_))))</div>
-<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div>
-<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;\&quot;&#39;</span>);</div>
-<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div>
-<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;</div>
-<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordtype">bool</span> ScanWriteUnescapedString(GenericStringStream&lt;SourceEncoding&gt;&amp; is, <span class="keywordtype">size_t</span> length) {</div>
-<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length);</div>
-<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div>
-<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div>
-<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordtype">bool</span> WriteStartObject() { os_-&gt;Put(<span class="charliteral">&#39;{&#39;</span>); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordtype">bool</span> WriteEndObject() { os_-&gt;Put(<span class="charliteral">&#39;}&#39;</span>); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordtype">bool</span> WriteStartArray() { os_-&gt;Put(<span class="charliteral">&#39;[&#39;</span>); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordtype">bool</span> WriteEndArray() { os_-&gt;Put(<span class="charliteral">&#39;]&#39;</span>); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
-<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;</div>
-<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordtype">bool</span> WriteRawValue(<span class="keyword">const</span> Ch* json, <span class="keywordtype">size_t</span> length) {</div>
-<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, length);</div>
-<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; length; i++) {</div>
-<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(json[i] != <span class="charliteral">&#39;\0&#39;</span>);</div>
-<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, json[i]);</div>
-<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div>
-<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; }</div>
-<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;</div>
-<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordtype">void</span> Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type) {</div>
-<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; (void)type;</div>
-<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(level_stack_.GetSize() != 0)) { <span class="comment">// this value is not at root</span></div>
-<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; Level* level = level_stack_.template Top&lt;Level&gt;();</div>
-<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">if</span> (level-&gt;valueCount &gt; 0) {</div>
-<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">if</span> (level-&gt;inArray) </div>
-<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; os_-&gt;Put(<span class="charliteral">&#39;,&#39;</span>); <span class="comment">// add comma if it is not the first element in array</span></div>
-<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">else</span> <span class="comment">// in object</span></div>
-<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; os_-&gt;Put((level-&gt;valueCount % 2 == 0) ? <span class="charliteral">&#39;,&#39;</span> : <span class="charliteral">&#39;:&#39;</span>);</div>
-<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; }</div>
-<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">if</span> (!level-&gt;inArray &amp;&amp; level-&gt;valueCount % 2 == 0)</div>
-<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(type == <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>); <span class="comment">// if it&#39;s in object, then even number should be a name</span></div>
-<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; level-&gt;valueCount++;</div>
-<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; }</div>
-<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!hasRoot_); <span class="comment">// Should only has one and only one root.</span></div>
-<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; hasRoot_ = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div>
-<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div>
-<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div>
-<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="comment">// Flush the value if it is the top level one.</span></div>
-<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordtype">bool</span> EndValue(<span class="keywordtype">bool</span> ret) {</div>
-<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(level_stack_.Empty())) <span class="comment">// end of json text</span></div>
-<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; Flush();</div>
-<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">return</span> ret;</div>
-<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div>
-<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;</div>
-<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; OutputStream* os_;</div>
-<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; internal::Stack&lt;StackAllocator&gt; level_stack_;</div>
-<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordtype">int</span> maxDecimalPlaces_;</div>
-<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordtype">bool</span> hasRoot_;</div>
-<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div>
-<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="keyword">private</span>:</div>
-<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="comment">// Prohibit copy constructor &amp; assignment operator.</span></div>
-<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; Writer(<span class="keyword">const</span> Writer&amp;);</div>
-<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; Writer&amp; operator=(<span class="keyword">const</span> Writer&amp;);</div>
-<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;};</div>
-<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div>
-<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="comment">// Full specialization for StringStream to prevent memory copying</span></div>
-<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div>
-<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
-<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> Writer&lt;StringBuffer&gt;::WriteInt(<span class="keywordtype">int</span> i) {</div>
-<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordtype">char</span> *buffer = os_-&gt;Push(11);</div>
-<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::i32toa(i, buffer);</div>
-<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; os_-&gt;Pop(static_cast&lt;size_t&gt;(11 - (end - buffer)));</div>
-<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;}</div>
-<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;</div>
-<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
-<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> Writer&lt;StringBuffer&gt;::WriteUint(<span class="keywordtype">unsigned</span> u) {</div>
-<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordtype">char</span> *buffer = os_-&gt;Push(10);</div>
-<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::u32toa(u, buffer);</div>
-<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; os_-&gt;Pop(static_cast&lt;size_t&gt;(10 - (end - buffer)));</div>
-<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;}</div>
-<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div>
-<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
-<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> Writer&lt;StringBuffer&gt;::WriteInt64(int64_t i64) {</div>
-<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordtype">char</span> *buffer = os_-&gt;Push(21);</div>
-<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::i64toa(i64, buffer);</div>
-<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; os_-&gt;Pop(static_cast&lt;size_t&gt;(21 - (end - buffer)));</div>
-<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;}</div>
-<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;</div>
-<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
-<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> Writer&lt;StringBuffer&gt;::WriteUint64(uint64_t u) {</div>
-<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordtype">char</span> *buffer = os_-&gt;Push(20);</div>
-<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::u64toa(u, buffer);</div>
-<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; os_-&gt;Pop(static_cast&lt;size_t&gt;(20 - (end - buffer)));</div>
-<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;}</div>
-<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;</div>
-<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
-<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> Writer&lt;StringBuffer&gt;::WriteDouble(<span class="keywordtype">double</span> d) {</div>
-<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">if</span> (internal::Double(d).IsNanOrInf()) {</div>
-<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="comment">// Note: This code path can only be reached if (RAPIDJSON_WRITE_DEFAULT_FLAGS &amp; kWriteNanAndInfFlag).</span></div>
-<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">if</span> (!(kWriteDefaultFlags &amp; kWriteNanAndInfFlag))</div>
-<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">if</span> (internal::Double(d).IsNan()) {</div>
-<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 3);</div>
-<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;N&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;a&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;N&#39;</span>);</div>
-<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; }</div>
-<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">if</span> (internal::Double(d).Sign()) {</div>
-<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 9);</div>
-<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;-&#39;</span>);</div>
-<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div>
-<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 8);</div>
-<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;I&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;n&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;f&#39;</span>);</div>
-<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;i&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;n&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;i&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;t&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;y&#39;</span>);</div>
-<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; }</div>
-<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; </div>
-<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordtype">char</span> *buffer = os_-&gt;Push(25);</div>
-<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordtype">char</span>* end = internal::dtoa(d, buffer, maxDecimalPlaces_);</div>
-<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; os_-&gt;Pop(static_cast&lt;size_t&gt;(25 - (end - buffer)));</div>
-<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;}</div>
-<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div>
-<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="preprocessor">#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42)</span></div>
-<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
-<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> Writer&lt;StringBuffer&gt;::ScanWriteUnescapedString(StringStream&amp; is, <span class="keywordtype">size_t</span> length) {</div>
-<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">if</span> (length &lt; 16)</div>
-<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length);</div>
-<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;</div>
-<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length))</div>
-<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div>
-<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* p = is.src_;</div>
-<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = is.head_ + length;</div>
-<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div>
-<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* endAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(end) &amp; static_cast&lt;size_t&gt;(~15));</div>
-<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span> (nextAligned &gt; end)</div>
-<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;</div>
-<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div>
-<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">if</span> (*p &lt; 0x20 || *p == <span class="charliteral">&#39;\&quot;&#39;</span> || *p == <span class="charliteral">&#39;\\&#39;</span>) {</div>
-<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; is.src_ = p;</div>
-<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length);</div>
-<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; }</div>
-<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; os_-&gt;PutUnsafe(*p++);</div>
-<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;</div>
-<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="comment">// The rest of string using SIMD</span></div>
-<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> dquote[16] = { <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span> };</div>
-<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> bslash[16] = { <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span> };</div>
-<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> space[16] = { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F };</div>
-<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keyword">const</span> __m128i dq = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;dquote[0]));</div>
-<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keyword">const</span> __m128i bs = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;bslash[0]));</div>
-<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keyword">const</span> __m128i sp = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;space[0]));</div>
-<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;</div>
-<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">for</span> (; p != endAligned; p += 16) {</div>
-<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keyword">const</span> __m128i s = _mm_load_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div>
-<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keyword">const</span> __m128i t1 = _mm_cmpeq_epi8(s, dq);</div>
-<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keyword">const</span> __m128i t2 = _mm_cmpeq_epi8(s, bs);</div>
-<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keyword">const</span> __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); <span class="comment">// s &lt; 0x20 &lt;=&gt; max(s, 0x1F) == 0x1F</span></div>
-<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keyword">const</span> __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3);</div>
-<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> r = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">&gt;</span>(_mm_movemask_epi8(x));</div>
-<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(r != 0)) { <span class="comment">// some of characters is escaped</span></div>
-<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len;</div>
-<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="preprocessor">#ifdef _MSC_VER // Find the index of first escaped</span></div>
-<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offset;</div>
-<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; _BitScanForward(&amp;offset, r);</div>
-<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; len = offset;</div>
-<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="preprocessor">#else</span></div>
-<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; len = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(__builtin_ffs(r) - 1);</div>
-<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordtype">char</span>* q = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(os_-&gt;PushUnsafe(len));</div>
-<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; len; i++)</div>
-<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; q[i] = p[i];</div>
-<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div>
-<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; p += len;</div>
-<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div>
-<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; _mm_storeu_si128(reinterpret_cast&lt;__m128i *&gt;(os_-&gt;PushUnsafe(16)), s);</div>
-<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div>
-<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div>
-<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; is.src_ = p;</div>
-<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length);</div>
-<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;}</div>
-<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_NEON)</span></div>
-<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;<span class="keyword">template</span>&lt;&gt;</div>
-<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> Writer&lt;StringBuffer&gt;::ScanWriteUnescapedString(StringStream&amp; is, <span class="keywordtype">size_t</span> length) {</div>
-<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">if</span> (length &lt; 16)</div>
-<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length);</div>
-<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;</div>
-<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length))</div>
-<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;</div>
-<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* p = is.src_;</div>
-<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = is.head_ + length;</div>
-<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div>
-<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* endAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(end) &amp; static_cast&lt;size_t&gt;(~15));</div>
-<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">if</span> (nextAligned &gt; end)</div>
-<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;</div>
-<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div>
-<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">if</span> (*p &lt; 0x20 || *p == <span class="charliteral">&#39;\&quot;&#39;</span> || *p == <span class="charliteral">&#39;\\&#39;</span>) {</div>
-<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; is.src_ = p;</div>
-<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length);</div>
-<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; }</div>
-<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">else</span></div>
-<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; os_-&gt;PutUnsafe(*p++);</div>
-<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;</div>
-<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="comment">// The rest of string using SIMD</span></div>
-<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keyword">const</span> uint8x16_t s0 = vmovq_n_u8(<span class="charliteral">&#39;&quot;&#39;</span>);</div>
-<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keyword">const</span> uint8x16_t s1 = vmovq_n_u8(<span class="charliteral">&#39;\\&#39;</span>);</div>
-<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keyword">const</span> uint8x16_t s2 = vmovq_n_u8(<span class="charliteral">&#39;\b&#39;</span>);</div>
-<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keyword">const</span> uint8x16_t s3 = vmovq_n_u8(32);</div>
-<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;</div>
-<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">for</span> (; p != endAligned; p += 16) {</div>
-<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keyword">const</span> uint8x16_t s = vld1q_u8(reinterpret_cast&lt;const uint8_t *&gt;(p));</div>
-<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; uint8x16_t x = vceqq_u8(s, s0);</div>
-<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s1));</div>
-<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s2));</div>
-<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; x = vorrq_u8(x, vcltq_u8(s, s3));</div>
-<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;</div>
-<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; x = vrev64q_u8(x); <span class="comment">// Rev in 64</span></div>
-<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; uint64_t low = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 0); <span class="comment">// extract</span></div>
-<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; uint64_t high = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 1); <span class="comment">// extract</span></div>
-<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;</div>
-<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len = 0;</div>
-<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordtype">bool</span> escaped = <span class="keyword">false</span>;</div>
-<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">if</span> (low == 0) {</div>
-<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">if</span> (high != 0) {</div>
-<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordtype">unsigned</span> lz = (unsigned)__builtin_clzll(high);</div>
-<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; len = 8 + (lz &gt;&gt; 3);</div>
-<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; escaped = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; }</div>
-<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; } <span class="keywordflow">else</span> {</div>
-<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordtype">unsigned</span> lz = (unsigned)__builtin_clzll(low);</div>
-<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; len = lz &gt;&gt; 3;</div>
-<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; escaped = <span class="keyword">true</span>;</div>
-<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div>
-<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(escaped)) { <span class="comment">// some of characters is escaped</span></div>
-<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordtype">char</span>* q = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(os_-&gt;PushUnsafe(len));</div>
-<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; len; i++)</div>
-<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; q[i] = p[i];</div>
-<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;</div>
-<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; p += len;</div>
-<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">break</span>;</div>
-<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; }</div>
-<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; vst1q_u8(reinterpret_cast&lt;uint8_t *&gt;(os_-&gt;PushUnsafe(16)), s);</div>
-<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; }</div>
-<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;</div>
-<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; is.src_ = p;</div>
-<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length);</div>
-<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;}</div>
-<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_NEON</span></div>
-<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;</div>
-<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;RAPIDJSON_NAMESPACE_END</div>
-<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;</div>
-<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div>
-<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;</div>
-<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div>
-<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;RAPIDJSON_DIAG_POP</div>
-<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;<span class="preprocessor">#endif</span></div>
-<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;</div>
-<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_RAPIDJSON_H_</span></div>
-<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">rapidjson::kTrueType</a></div><div class="ttdoc">true </div><div class="ttdef"><b>Definition:</b> rapidjson.h:619</div></div>
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Tencent is pleased to support the open source community by making RapidJSON available.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Licensed under the MIT License (the &quot;License&quot;); you may not use this file except</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// in compliance with the License. You may obtain a copy of the License at</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://opensource.org/licenses/MIT</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Unless required by applicable law or agreed to in writing, software distributed </span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// under the License is distributed on an &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR </span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// CONDITIONS OF ANY KIND, either express or implied. See the License for the </span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// specific language governing permissions and limitations under the License.</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_WRITER_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#define RAPIDJSON_WRITER_H_</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;stream.h&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;internal/meta.h&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;internal/stack.h&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;internal/strfunc.h&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;internal/dtoa.h&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;internal/itoa.h&quot;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;stringbuffer.h&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;new&gt;</span> <span class="comment">// placement new</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#if defined(RAPIDJSON_SIMD) &amp;&amp; defined(_MSC_VER)</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;intrin.h&gt;</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#pragma intrinsic(_BitScanForward)</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#ifdef RAPIDJSON_SSE42</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &lt;nmmintrin.h&gt;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_SSE2)</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;emmintrin.h&gt;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_NEON)</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;arm_neon.h&gt;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;RAPIDJSON_DIAG_OFF(4127) <span class="comment">// conditional expression is constant</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;RAPIDJSON_DIAG_PUSH</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;RAPIDJSON_DIAG_OFF(padded)</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;RAPIDJSON_DIAG_OFF(unreachable-code)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;RAPIDJSON_DIAG_OFF(c++98-compat)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;RAPIDJSON_NAMESPACE_BEGIN</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">///////////////////////////////////////////////////////////////////////////////</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"></span><span class="comment">// WriteFlag</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">/*! \def RAPIDJSON_WRITE_DEFAULT_FLAGS </span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> \ingroup RAPIDJSON_CONFIG</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> \brief User-defined kWriteDefaultFlags definition.</span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment"> User can define this as any \c WriteFlag combinations.</span></div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#ifndef RAPIDJSON_WRITE_DEFAULT_FLAGS</span></div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga1975595e2f1dc20a2d4859f340ac88c6"> 63</a></span>&#160;<span class="preprocessor">#define RAPIDJSON_WRITE_DEFAULT_FLAGS kWriteNoFlags</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">//! Combination of writeFlags</span></div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19"> 67</a></span>&#160;<span class="comment"></span><span class="keyword">enum</span> <a class="code" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19">WriteFlag</a> {</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19ae971aa1fc0ae64c8f3d2b47fd802846a"> 68</a></span>&#160; <a class="code" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19ae971aa1fc0ae64c8f3d2b47fd802846a">kWriteNoFlags</a> = 0, <span class="comment">//!&lt; No flags are set.</span></div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19ac1b5e17278b060e9e866df075c104c10"> 69</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19ac1b5e17278b060e9e866df075c104c10">kWriteValidateEncodingFlag</a> = 1, <span class="comment">//!&lt; Validate encoding of JSON strings.</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19a3adbca1d31ad845ff4e9d742280cce39"> 70</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19a3adbca1d31ad845ff4e9d742280cce39">kWriteNanAndInfFlag</a> = 2, <span class="comment">//!&lt; Allow writing of Infinity, -Infinity and NaN.</span></div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19a5b5ca665afdfa828a74ae5755c67a226"> 71</a></span>&#160;<span class="comment"></span> <a class="code" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19a5b5ca665afdfa828a74ae5755c67a226">kWriteDefaultFlags</a> = <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga1975595e2f1dc20a2d4859f340ac88c6">RAPIDJSON_WRITE_DEFAULT_FLAGS</a> <span class="comment">//!&lt; Default write flags. Can be customized by defining RAPIDJSON_WRITE_DEFAULT_FLAGS</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"></span>};</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment">//! JSON writer</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"></span><span class="comment">/*! Writer implements the concept Handler.</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> It generates JSON text by events to an output os.</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> User may programmatically calls the functions of a writer to generate JSON text.</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment"> On the other side, a writer can also be passed to objects that generates events, </span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment"> for example Reader::Parse() and Document::Accept().</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment"> \tparam OutputStream Type of output stream.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment"> \tparam SourceEncoding Encoding of source string.</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment"> \tparam TargetEncoding Encoding of output stream.</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment"> \tparam StackAllocator Type of allocator for allocating memory of stack.</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment"> \note implements Handler concept</span></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword">template</span>&lt;<span class="keyword">typename</span> OutputStream, <span class="keyword">typename</span> SourceEncoding = UTF8&lt;&gt;, <span class="keyword">typename</span> TargetEncoding = UTF8&lt;&gt;, <span class="keyword">typename</span> StackAllocator = CrtAllocator, <span class="keywordtype">unsigned</span> writeFlags = kWriteDefaultFlags&gt;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="keyword">class </span><a class="code" href="classrapidjson_1_1_writer.html">Writer</a> {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> SourceEncoding::Ch Ch;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> kDefaultMaxDecimalPlaces = 324;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment"> //! Constructor</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment"></span><span class="comment"> /*! \param os Output stream.</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> \param stackAllocator User supplied allocator. If it is null, it will create a private one.</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> \param levelDepth Initial capacity of stack.</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">explicit</span></div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2"> 103</a></span>&#160; <a class="code" href="classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2">Writer</a>(OutputStream&amp; os, StackAllocator* stackAllocator = 0, <span class="keywordtype">size_t</span> levelDepth = kDefaultLevelDepth) : </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; os_(&amp;os), level_stack_(stackAllocator, levelDepth * sizeof(<a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Level</a>)), maxDecimalPlaces_(kDefaultMaxDecimalPlaces), hasRoot_(false) {}</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">explicit</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="classrapidjson_1_1_writer.html">Writer</a>(StackAllocator* allocator = 0, <span class="keywordtype">size_t</span> levelDepth = kDefaultLevelDepth) :</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; os_(0), level_stack_(allocator, levelDepth * <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Level</a>)), maxDecimalPlaces_(kDefaultMaxDecimalPlaces), hasRoot_(<span class="keyword">false</span>) {}</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_CXX11_RVALUE_REFS</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classrapidjson_1_1_writer.html">Writer</a>(<a class="code" href="classrapidjson_1_1_writer.html">Writer</a>&amp;&amp; rhs) :</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; os_(rhs.os_), level_stack_(std::move(rhs.level_stack_)), maxDecimalPlaces_(rhs.maxDecimalPlaces_), hasRoot_(rhs.hasRoot_) {</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; rhs.os_ = 0;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> //! Reset the writer with a new stream.</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"> This function reset the writer with a new stream and default settings,</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment"> in order to make a Writer object reusable for output multiple JSONs.</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"> \param os New output stream.</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment"> \code</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> Writer&lt;OutputStream&gt; writer(os1);</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"> writer.StartObject();</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment"> // ...</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"> writer.EndObject();</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment"> writer.Reset(os2);</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment"> writer.StartObject();</span></div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment"> // ...</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"> writer.EndObject();</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"> \endcode</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#ac4026d3f14b80d6d7fc10004b1972722"> 135</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_writer.html#ac4026d3f14b80d6d7fc10004b1972722">Reset</a>(OutputStream&amp; os) {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; os_ = &amp;os;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; hasRoot_ = <span class="keyword">false</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; level_stack_.Clear();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> //! Checks whether the output is a complete JSON.</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"> A complete JSON has a complete root object or array.</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#a190d964d3e62155e87153e858a0b04da"> 145</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_writer.html#a190d964d3e62155e87153e858a0b04da">IsComplete</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> hasRoot_ &amp;&amp; level_stack_.Empty();</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordtype">int</span> GetMaxDecimalPlaces()<span class="keyword"> const </span>{</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">return</span> maxDecimalPlaces_;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment"> //! Sets the maximum number of decimal places for double output.</span></div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment"> This setting truncates the output with specified number of decimal places.</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment"> For example, </span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment"> \code</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment"> writer.SetMaxDecimalPlaces(3);</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment"> writer.StartArray();</span></div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment"> writer.Double(0.12345); // &quot;0.123&quot;</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment"> writer.Double(0.0001); // &quot;0.0&quot;</span></div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment"> writer.Double(1.234567890123456e30); // &quot;1.234567890123456e30&quot; (do not truncate significand for positive exponent)</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment"> writer.Double(1.23e-4); // &quot;0.0&quot; (do truncate significand for negative exponent)</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment"> writer.EndArray();</span></div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment"> \endcode</span></div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment"> The default setting does not truncate any decimal places. You can restore to this setting by calling</span></div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment"> \code</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment"> writer.SetMaxDecimalPlaces(Writer::kDefaultMaxDecimalPlaces);</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment"> \endcode</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#aa7b6967dc237519e2a6d8b3939fb9634"> 174</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_writer.html#aa7b6967dc237519e2a6d8b3939fb9634">SetMaxDecimalPlaces</a>(<span class="keywordtype">int</span> maxDecimalPlaces) {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; maxDecimalPlaces_ = maxDecimalPlaces;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment"> /*!@name Implementation of Handler</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment"> \see Handler</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment"> */</span><span class="comment"></span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment"> //@{</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordtype">bool</span> Null() { Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">kNullType</a>); <span class="keywordflow">return</span> EndValue(WriteNull()); }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordtype">bool</span> Bool(<span class="keywordtype">bool</span> b) { Prefix(b ? <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">kTrueType</a> : <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">kFalseType</a>); <span class="keywordflow">return</span> EndValue(WriteBool(b)); }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordtype">bool</span> Int(<span class="keywordtype">int</span> i) { Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> EndValue(WriteInt(i)); }</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordtype">bool</span> Uint(<span class="keywordtype">unsigned</span> u) { Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> EndValue(WriteUint(u)); }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordtype">bool</span> Int64(int64_t i64) { Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> EndValue(WriteInt64(i64)); }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordtype">bool</span> Uint64(uint64_t u64) { Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> EndValue(WriteUint64(u64)); }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment"> //! Writes the given \c double value to the stream</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment"> \param d The value to be written.</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"> \return Whether it is succeed.</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#aff66881798d01e932a0b8b8ef97b0373"> 195</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_writer.html#aff66881798d01e932a0b8b8ef97b0373">Double</a>(<span class="keywordtype">double</span> d) { Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>); <span class="keywordflow">return</span> EndValue(WriteDouble(d)); }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">bool</span> RawNumber(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy = <span class="keyword">false</span>) {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(str != 0);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; (void)copy;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">kNumberType</a>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> EndValue(WriteString(str, length));</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy = <span class="keyword">false</span>) {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(str != 0);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; (void)copy;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> EndValue(WriteString(str, length));</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordtype">bool</span> String(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; str) {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> String(str.data(), <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(str.size()));</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordtype">bool</span> StartObject() {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">kObjectType</a>);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keyword">new</span> (level_stack_.template Push&lt;Level&gt;()) <a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Level</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> WriteStartObject();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length, <span class="keywordtype">bool</span> copy = <span class="keyword">false</span>) { <span class="keywordflow">return</span> String(str, length, copy); }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="preprocessor">#if RAPIDJSON_HAS_STDSTRING</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> std::basic_string&lt;Ch&gt;&amp; str)</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> Key(str.data(), <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a>(str.size()));</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordtype">bool</span> EndObject(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> memberCount = 0) {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; (void)memberCount;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(level_stack_.GetSize() &gt;= <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Level</a>)); <span class="comment">// not inside an Object</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!level_stack_.template Top&lt;Level&gt;()-&gt;inArray); <span class="comment">// currently inside an Array, not Object</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(0 == level_stack_.template Top&lt;Level&gt;()-&gt;valueCount % 2); <span class="comment">// Object has a Key without a Value</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; level_stack_.template Pop&lt;Level&gt;(1);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">return</span> EndValue(WriteEndObject());</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordtype">bool</span> StartArray() {</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">kArrayType</a>);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keyword">new</span> (level_stack_.template Push&lt;Level&gt;()) <a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Level</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">return</span> WriteStartArray();</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordtype">bool</span> EndArray(<a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> elementCount = 0) {</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; (void)elementCount;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(level_stack_.GetSize() &gt;= <span class="keyword">sizeof</span>(<a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Level</a>));</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(level_stack_.template Top&lt;Level&gt;()-&gt;inArray);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; level_stack_.template Pop&lt;Level&gt;(1);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> EndValue(WriteEndArray());</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }<span class="comment"></span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment"> /*! @name Convenience extensions */</span><span class="comment"></span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment"> //@{</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment"> //! Simpler but slower overload.</span></div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#a849e2b675a2b868699a14d45c7396f24"> 260</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_writer.html#a849e2b675a2b868699a14d45c7396f24">String</a>(<span class="keyword">const</span> Ch* <span class="keyword">const</span>&amp; str) { <span class="keywordflow">return</span> <a class="code" href="classrapidjson_1_1_writer.html#a849e2b675a2b868699a14d45c7396f24">String</a>(str, internal::StrLen(str)); }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordtype">bool</span> Key(<span class="keyword">const</span> Ch* <span class="keyword">const</span>&amp; str) { <span class="keywordflow">return</span> Key(str, internal::StrLen(str)); }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="comment"></span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"> //@}</span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment"></span><span class="comment"></span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"> //! Write a raw JSON value.</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"> For user to write a stringified JSON as a value.</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment"> \param json A well-formed JSON value. It should not contain null character within [0, length - 1] range.</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment"> \param length Length of the json.</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment"> \param type Type of the root of json.</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#a8acb89b2bbb1e5f384e6076b65044dbe"> 273</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_writer.html#a8acb89b2bbb1e5f384e6076b65044dbe">RawValue</a>(<span class="keyword">const</span> Ch* json, <span class="keywordtype">size_t</span> length, <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type) {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(json != 0);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; Prefix(type);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> EndValue(WriteRawValue(json, length));</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="comment"> //! Flush the output stream.</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment"></span><span class="comment"> /*!</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="comment"> Allows the user to flush the output stream immediately.</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="classrapidjson_1_1_writer.html#a72cefd18d176bc12a53adb3185c51ca7"> 283</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classrapidjson_1_1_writer.html#a72cefd18d176bc12a53adb3185c51ca7">Flush</a>() {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; os_-&gt;Flush();</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="keyword">protected</span>:<span class="comment"></span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment"> //! Information for each nested level</span></div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_writer_1_1_level.html"> 289</a></span>&#160;<span class="comment"></span> <span class="keyword">struct </span><a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Level</a> {</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Level</a>(<span class="keywordtype">bool</span> inArray_) : valueCount(0), inArray(inArray_) {}</div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b"> 291</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b">valueCount</a>; <span class="comment">//!&lt; number of values in this level</span></div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="structrapidjson_1_1_writer_1_1_level.html#a59255e3b1d371161f7c894503cfd6bec"> 292</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a59255e3b1d371161f7c894503cfd6bec">inArray</a>; <span class="comment">//!&lt; true if in array, otherwise in object</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="comment"></span> };</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">size_t</span> kDefaultLevelDepth = 32;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordtype">bool</span> WriteNull() {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 4);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;n&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;u&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;l&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;l&#39;</span>); <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordtype">bool</span> WriteBool(<span class="keywordtype">bool</span> b) {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span> (b) {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 4);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;t&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;r&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;u&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;e&#39;</span>);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 5);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;f&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;a&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;l&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;s&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;e&#39;</span>);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordtype">bool</span> WriteInt(<span class="keywordtype">int</span> i) {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keywordtype">char</span> buffer[11];</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::i32toa(i, buffer);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, static_cast&lt;size_t&gt;(end - buffer));</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>* p = buffer; p != end; ++p)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, static_cast&lt;typename OutputStream::Ch&gt;(*p));</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordtype">bool</span> WriteUint(<span class="keywordtype">unsigned</span> u) {</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keywordtype">char</span> buffer[10];</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::u32toa(u, buffer);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, static_cast&lt;size_t&gt;(end - buffer));</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>* p = buffer; p != end; ++p)</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, static_cast&lt;typename OutputStream::Ch&gt;(*p));</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordtype">bool</span> WriteInt64(int64_t i64) {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordtype">char</span> buffer[21];</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::i64toa(i64, buffer);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, static_cast&lt;size_t&gt;(end - buffer));</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">char</span>* p = buffer; p != end; ++p)</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, static_cast&lt;typename OutputStream::Ch&gt;(*p));</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordtype">bool</span> WriteUint64(uint64_t u64) {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordtype">char</span> buffer[20];</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordtype">char</span>* end = internal::u64toa(u64, buffer);</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, static_cast&lt;size_t&gt;(end - buffer));</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">char</span>* p = buffer; p != end; ++p)</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, static_cast&lt;typename OutputStream::Ch&gt;(*p));</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordtype">bool</span> WriteDouble(<span class="keywordtype">double</span> d) {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">if</span> (internal::Double(d).IsNanOrInf()) {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">if</span> (!(writeFlags &amp; <a class="code" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19a3adbca1d31ad845ff4e9d742280cce39">kWriteNanAndInfFlag</a>))</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span> (internal::Double(d).IsNan()) {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 3);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;N&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;a&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;N&#39;</span>);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; }</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">if</span> (internal::Double(d).Sign()) {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 9);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;-&#39;</span>);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 8);</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;I&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;n&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;f&#39;</span>);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;i&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;n&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;i&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;t&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;y&#39;</span>);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; }</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordtype">char</span> buffer[25];</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordtype">char</span>* end = internal::dtoa(d, buffer, maxDecimalPlaces_);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, static_cast&lt;size_t&gt;(end - buffer));</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">char</span>* p = buffer; p != end; ++p)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, static_cast&lt;typename OutputStream::Ch&gt;(*p));</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordtype">bool</span> WriteString(<span class="keyword">const</span> Ch* str, <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> length) {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">typename</span> OutputStream::Ch hexDigits[16] = { <span class="charliteral">&#39;0&#39;</span>, <span class="charliteral">&#39;1&#39;</span>, <span class="charliteral">&#39;2&#39;</span>, <span class="charliteral">&#39;3&#39;</span>, <span class="charliteral">&#39;4&#39;</span>, <span class="charliteral">&#39;5&#39;</span>, <span class="charliteral">&#39;6&#39;</span>, <span class="charliteral">&#39;7&#39;</span>, <span class="charliteral">&#39;8&#39;</span>, <span class="charliteral">&#39;9&#39;</span>, <span class="charliteral">&#39;A&#39;</span>, <span class="charliteral">&#39;B&#39;</span>, <span class="charliteral">&#39;C&#39;</span>, <span class="charliteral">&#39;D&#39;</span>, <span class="charliteral">&#39;E&#39;</span>, <span class="charliteral">&#39;F&#39;</span> };</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> escape[256] = {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="preprocessor">#define Z16 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="comment">//0 1 2 3 4 5 6 7 8 9 A B C D E F</span></div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;b&#39;</span>, <span class="charliteral">&#39;t&#39;</span>, <span class="charliteral">&#39;n&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;f&#39;</span>, <span class="charliteral">&#39;r&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="comment">// 00</span></div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="charliteral">&#39;u&#39;</span>, <span class="comment">// 10</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; 0, 0, <span class="charliteral">&#39;&quot;&#39;</span>, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, <span class="comment">// 20</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; Z16, Z16, <span class="comment">// 30~4F</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,<span class="charliteral">&#39;\\&#39;</span>, 0, 0, 0, <span class="comment">// 50</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16 <span class="comment">// 60~FF</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="preprocessor">#undef Z16</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; };</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> (TargetEncoding::supportUnicode)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 2 + length * 6); <span class="comment">// &quot;\uxxxx...&quot;</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 2 + length * 12); <span class="comment">// &quot;\uxxxx\uyyyy...&quot;</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;\&quot;&#39;</span>);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <a class="code" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream&lt;SourceEncoding&gt;</a> is(str);</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">while</span> (ScanWriteUnescapedString(is, length)) {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <span class="keyword">const</span> Ch c = is.Peek();</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">if</span> (!TargetEncoding::supportUnicode &amp;&amp; static_cast&lt;unsigned&gt;(c) &gt;= 0x80) {</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="comment">// Unicode escaping</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordtype">unsigned</span> codepoint;</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!SourceEncoding::Decode(is, &amp;codepoint)))</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;\\&#39;</span>);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;u&#39;</span>);</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (codepoint &lt;= 0xD7FF || (codepoint &gt;= 0xE000 &amp;&amp; codepoint &lt;= 0xFFFF)) {</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(codepoint &gt;&gt; 12) &amp; 15]);</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(codepoint &gt;&gt; 8) &amp; 15]);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(codepoint &gt;&gt; 4) &amp; 15]);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(codepoint ) &amp; 15]);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(codepoint &gt;= 0x010000 &amp;&amp; codepoint &lt;= 0x10FFFF);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="comment">// Surrogate pair</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordtype">unsigned</span> s = codepoint - 0x010000;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keywordtype">unsigned</span> lead = (s &gt;&gt; 10) + 0xD800;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordtype">unsigned</span> trail = (s &amp; 0x3FF) + 0xDC00;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(lead &gt;&gt; 12) &amp; 15]);</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(lead &gt;&gt; 8) &amp; 15]);</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(lead &gt;&gt; 4) &amp; 15]);</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(lead ) &amp; 15]);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;\\&#39;</span>);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;u&#39;</span>);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(trail &gt;&gt; 12) &amp; 15]);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(trail &gt;&gt; 8) &amp; 15]);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(trail &gt;&gt; 4) &amp; 15]);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[(trail ) &amp; 15]); </div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; }</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((<span class="keyword">sizeof</span>(Ch) == 1 || static_cast&lt;unsigned&gt;(c) &lt; 256) &amp;&amp; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(escape[static_cast&lt;unsigned char&gt;(c)])) {</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; is.Take();</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;\\&#39;</span>);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, static_cast&lt;typename OutputStream::Ch&gt;(escape[static_cast&lt;unsigned char&gt;(c)]));</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">if</span> (escape[static_cast&lt;unsigned char&gt;(c)] == <span class="charliteral">&#39;u&#39;</span>) {</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;0&#39;</span>);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[static_cast&lt;unsigned char&gt;(c) &gt;&gt; 4]);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, hexDigits[static_cast&lt;unsigned char&gt;(c) &amp; 0xF]);</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(!(writeFlags &amp; <a class="code" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19ac1b5e17278b060e9e866df075c104c10">kWriteValidateEncodingFlag</a> ? </div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <a class="code" href="structrapidjson_1_1_transcoder.html">Transcoder&lt;SourceEncoding, TargetEncoding&gt;::Validate</a>(is, *os_) :</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <a class="code" href="structrapidjson_1_1_transcoder.html">Transcoder&lt;SourceEncoding, TargetEncoding&gt;::TranscodeUnsafe</a>(is, *os_))))</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; }</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;\&quot;&#39;</span>);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keywordtype">bool</span> ScanWriteUnescapedString(<a class="code" href="structrapidjson_1_1_generic_string_stream.html">GenericStringStream&lt;SourceEncoding&gt;</a>&amp; is, <span class="keywordtype">size_t</span> length) {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keywordtype">bool</span> WriteStartObject() { os_-&gt;Put(<span class="charliteral">&#39;{&#39;</span>); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordtype">bool</span> WriteEndObject() { os_-&gt;Put(<span class="charliteral">&#39;}&#39;</span>); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; <span class="keywordtype">bool</span> WriteStartArray() { os_-&gt;Put(<span class="charliteral">&#39;[&#39;</span>); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordtype">bool</span> WriteEndArray() { os_-&gt;Put(<span class="charliteral">&#39;]&#39;</span>); <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordtype">bool</span> WriteRawValue(<span class="keyword">const</span> Ch* json, <span class="keywordtype">size_t</span> length) {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, length);</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; length; i++) {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(json[i] != <span class="charliteral">&#39;\0&#39;</span>);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, json[i]);</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; }</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; }</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordtype">void</span> Prefix(<a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">Type</a> type) {</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; (void)type;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(level_stack_.GetSize() != 0)) { <span class="comment">// this value is not at root</span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <a class="code" href="structrapidjson_1_1_writer_1_1_level.html">Level</a>* level = level_stack_.template Top&lt;Level&gt;();</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; <span class="keywordflow">if</span> (level-&gt;<a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b">valueCount</a> &gt; 0) {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">if</span> (level-&gt;<a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a59255e3b1d371161f7c894503cfd6bec">inArray</a>) </div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; os_-&gt;Put(<span class="charliteral">&#39;,&#39;</span>); <span class="comment">// add comma if it is not the first element in array</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">else</span> <span class="comment">// in object</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; os_-&gt;Put((level-&gt;<a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b">valueCount</a> % 2 == 0) ? <span class="charliteral">&#39;,&#39;</span> : <span class="charliteral">&#39;:&#39;</span>);</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; }</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; <span class="keywordflow">if</span> (!level-&gt;<a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a59255e3b1d371161f7c894503cfd6bec">inArray</a> &amp;&amp; level-&gt;<a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b">valueCount</a> % 2 == 0)</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(type == <a class="code" href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">kStringType</a>); <span class="comment">// if it&#39;s in object, then even number should be a name</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; level-&gt;<a class="code" href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b">valueCount</a>++;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; }</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a>(!hasRoot_); <span class="comment">// Should only has one and only one root.</span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; hasRoot_ = <span class="keyword">true</span>;</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; }</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="comment">// Flush the value if it is the top level one.</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; <span class="keywordtype">bool</span> EndValue(<span class="keywordtype">bool</span> ret) {</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(level_stack_.Empty())) <span class="comment">// end of json text</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; Flush();</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; }</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; OutputStream* os_;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; internal::Stack&lt;StackAllocator&gt; level_stack_;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordtype">int</span> maxDecimalPlaces_;</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordtype">bool</span> hasRoot_;</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="comment">// Prohibit copy constructor &amp; assignment operator.</span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="classrapidjson_1_1_writer.html">Writer</a>(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_writer.html">Writer</a>&amp;);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="classrapidjson_1_1_writer.html">Writer</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classrapidjson_1_1_writer.html">Writer</a>&amp;);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;};</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="comment">// Full specialization for StringStream to prevent memory copying</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;StringBuffer&gt;::WriteInt</a>(<span class="keywordtype">int</span> i) {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordtype">char</span> *buffer = os_-&gt;Push(11);</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::i32toa(i, buffer);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; os_-&gt;Pop(static_cast&lt;size_t&gt;(11 - (end - buffer)));</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;}</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;StringBuffer&gt;::WriteUint</a>(<span class="keywordtype">unsigned</span> u) {</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordtype">char</span> *buffer = os_-&gt;Push(10);</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::u32toa(u, buffer);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; os_-&gt;Pop(static_cast&lt;size_t&gt;(10 - (end - buffer)));</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;}</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;StringBuffer&gt;::WriteInt64</a>(int64_t i64) {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordtype">char</span> *buffer = os_-&gt;Push(21);</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::i64toa(i64, buffer);</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; os_-&gt;Pop(static_cast&lt;size_t&gt;(21 - (end - buffer)));</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;}</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;StringBuffer&gt;::WriteUint64</a>(uint64_t u) {</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordtype">char</span> *buffer = os_-&gt;Push(20);</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = internal::u64toa(u, buffer);</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; os_-&gt;Pop(static_cast&lt;size_t&gt;(20 - (end - buffer)));</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;}</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;StringBuffer&gt;::WriteDouble</a>(<span class="keywordtype">double</span> d) {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">if</span> (internal::Double(d).IsNanOrInf()) {</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="comment">// Note: This code path can only be reached if (RAPIDJSON_WRITE_DEFAULT_FLAGS &amp; kWriteNanAndInfFlag).</span></div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">if</span> (!(<a class="code" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19a5b5ca665afdfa828a74ae5755c67a226">kWriteDefaultFlags</a> &amp; <a class="code" href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19a3adbca1d31ad845ff4e9d742280cce39">kWriteNanAndInfFlag</a>))</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">if</span> (internal::Double(d).IsNan()) {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 3);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;N&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;a&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;N&#39;</span>);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; }</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">if</span> (internal::Double(d).Sign()) {</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 9);</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;-&#39;</span>);</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; }</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <a class="code" href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">PutReserve</a>(*os_, 8);</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;I&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;n&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;f&#39;</span>);</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;i&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;n&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;i&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;t&#39;</span>); <a class="code" href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">PutUnsafe</a>(*os_, <span class="charliteral">&#39;y&#39;</span>);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; }</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; </div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordtype">char</span> *buffer = os_-&gt;Push(25);</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; <span class="keywordtype">char</span>* end = internal::dtoa(d, buffer, maxDecimalPlaces_);</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; os_-&gt;Pop(static_cast&lt;size_t&gt;(25 - (end - buffer)));</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;}</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="preprocessor">#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42)</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;StringBuffer&gt;::ScanWriteUnescapedString</a>(<a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a>&amp; is, <span class="keywordtype">size_t</span> length) {</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">if</span> (length &lt; 16)</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length);</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length))</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* p = is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a>;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a2556705b0a0fd6393862efe6db025b32">head_</a> + length;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* endAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(end) &amp; static_cast&lt;size_t&gt;(~15));</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span> (nextAligned &gt; end)</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; <span class="keywordflow">if</span> (*p &lt; 0x20 || *p == <span class="charliteral">&#39;\&quot;&#39;</span> || *p == <span class="charliteral">&#39;\\&#39;</span>) {</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a> = p;</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; }</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; os_-&gt;PutUnsafe(*p++);</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="comment">// The rest of string using SIMD</span></div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> dquote[16] = { <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span>, <span class="charliteral">&#39;\&quot;&#39;</span> };</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> bslash[16] = { <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span>, <span class="charliteral">&#39;\\&#39;</span> };</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> space[16] = { 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F };</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keyword">const</span> __m128i dq = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;dquote[0]));</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keyword">const</span> __m128i bs = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;bslash[0]));</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keyword">const</span> __m128i sp = _mm_loadu_si128(reinterpret_cast&lt;const __m128i *&gt;(&amp;space[0]));</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">for</span> (; p != endAligned; p += 16) {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keyword">const</span> __m128i s = _mm_load_si128(reinterpret_cast&lt;const __m128i *&gt;(p));</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keyword">const</span> __m128i t1 = _mm_cmpeq_epi8(s, dq);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keyword">const</span> __m128i t2 = _mm_cmpeq_epi8(s, bs);</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <span class="keyword">const</span> __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); <span class="comment">// s &lt; 0x20 &lt;=&gt; max(s, 0x1F) == 0x1F</span></div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keyword">const</span> __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> r = <span class="keyword">static_cast&lt;</span><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span><span class="keyword">&gt;</span>(_mm_movemask_epi8(x));</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(r != 0)) { <span class="comment">// some of characters is escaped</span></div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="preprocessor">#ifdef _MSC_VER // Find the index of first escaped</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> offset;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; _BitScanForward(&amp;offset, r);</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; len = offset;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; len = <span class="keyword">static_cast&lt;</span><a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a><span class="keyword">&gt;</span>(__builtin_ffs(r) - 1);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordtype">char</span>* q = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(os_-&gt;PushUnsafe(len));</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; len; i++)</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; q[i] = p[i];</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; p += len;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; }</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; _mm_storeu_si128(reinterpret_cast&lt;__m128i *&gt;(os_-&gt;PushUnsafe(16)), s);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a> = p;</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length);</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;}</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;<span class="preprocessor">#elif defined(RAPIDJSON_NEON)</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classrapidjson_1_1_writer.html">Writer&lt;StringBuffer&gt;::ScanWriteUnescapedString</a>(<a class="code" href="structrapidjson_1_1_generic_string_stream.html">StringStream</a>&amp; is, <span class="keywordtype">size_t</span> length) {</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">if</span> (length &lt; 16)</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length))</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* p = is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a>;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* end = is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a2556705b0a0fd6393862efe6db025b32">head_</a> + length;</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* nextAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>((<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(p) + 15) &amp; <span class="keyword">static_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(~15));</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span>* endAligned = <span class="keyword">reinterpret_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(<span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">size_t</span><span class="keyword">&gt;</span>(end) &amp; static_cast&lt;size_t&gt;(~15));</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">if</span> (nextAligned &gt; end)</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">while</span> (p != nextAligned)</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keywordflow">if</span> (*p &lt; 0x20 || *p == <span class="charliteral">&#39;\&quot;&#39;</span> || *p == <span class="charliteral">&#39;\\&#39;</span>) {</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a> = p;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length);</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; }</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; os_-&gt;PutUnsafe(*p++);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="comment">// The rest of string using SIMD</span></div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keyword">const</span> uint8x16_t s0 = vmovq_n_u8(<span class="charliteral">&#39;&quot;&#39;</span>);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keyword">const</span> uint8x16_t s1 = vmovq_n_u8(<span class="charliteral">&#39;\\&#39;</span>);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keyword">const</span> uint8x16_t s2 = vmovq_n_u8(<span class="charliteral">&#39;\b&#39;</span>);</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keyword">const</span> uint8x16_t s3 = vmovq_n_u8(32);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">for</span> (; p != endAligned; p += 16) {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keyword">const</span> uint8x16_t s = vld1q_u8(reinterpret_cast&lt;const uint8_t *&gt;(p));</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; uint8x16_t x = vceqq_u8(s, s0);</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s1));</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; x = vorrq_u8(x, vceqq_u8(s, s2));</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; x = vorrq_u8(x, vcltq_u8(s, s3));</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; x = vrev64q_u8(x); <span class="comment">// Rev in 64</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; uint64_t low = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 0); <span class="comment">// extract</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; uint64_t high = vgetq_lane_u64(reinterpret_cast&lt;uint64x2_t&gt;(x), 1); <span class="comment">// extract</span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; <a class="code" href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">SizeType</a> len = 0;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordtype">bool</span> escaped = <span class="keyword">false</span>;</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="keywordflow">if</span> (low == 0) {</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">if</span> (high != 0) {</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordtype">unsigned</span> lz = (unsigned)__builtin_clzll(high);</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; len = 8 + (lz &gt;&gt; 3);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; escaped = <span class="keyword">true</span>;</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; }</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordtype">unsigned</span> lz = (unsigned)__builtin_clzll(low);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; len = lz &gt;&gt; 3;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; escaped = <span class="keyword">true</span>;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a>(escaped)) { <span class="comment">// some of characters is escaped</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordtype">char</span>* q = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span>(os_-&gt;PushUnsafe(len));</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; len; i++)</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; q[i] = p[i];</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; p += len;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; }</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; vst1q_u8(reinterpret_cast&lt;uint8_t *&gt;(os_-&gt;PushUnsafe(16)), s);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; }</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; is.<a class="code" href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">src_</a> = p;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a>(is.Tell() &lt; length);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;}</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_NEON</span></div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;RAPIDJSON_NAMESPACE_END</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="preprocessor">#ifdef _MSC_VER</span></div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;<span class="preprocessor">#ifdef __clang__</span></div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;RAPIDJSON_DIAG_POP</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;<span class="preprocessor">#endif // RAPIDJSON_RAPIDJSON_H_</span></div><div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a80d9f25b083abce45edbfdd3ba006c8e">rapidjson::kTrueType</a></div><div class="ttdoc">true </div><div class="ttdef"><b>Definition:</b> rapidjson.h:619</div></div>
<div class="ttc" id="structrapidjson_1_1_writer_1_1_level_html_a59255e3b1d371161f7c894503cfd6bec"><div class="ttname"><a href="structrapidjson_1_1_writer_1_1_level.html#a59255e3b1d371161f7c894503cfd6bec">rapidjson::Writer::Level::inArray</a></div><div class="ttdeci">bool inArray</div><div class="ttdoc">true if in array, otherwise in object </div><div class="ttdef"><b>Definition:</b> writer.h:292</div></div>
<div class="ttc" id="classrapidjson_1_1_writer_html_aa7b6967dc237519e2a6d8b3939fb9634"><div class="ttname"><a href="classrapidjson_1_1_writer.html#aa7b6967dc237519e2a6d8b3939fb9634">rapidjson::Writer::SetMaxDecimalPlaces</a></div><div class="ttdeci">void SetMaxDecimalPlaces(int maxDecimalPlaces)</div><div class="ttdoc">Sets the maximum number of decimal places for double output. </div><div class="ttdef"><b>Definition:</b> writer.h:174</div></div>
+<div class="ttc" id="structrapidjson_1_1_generic_string_stream_html"><div class="ttname"><a href="structrapidjson_1_1_generic_string_stream.html">rapidjson::GenericStringStream</a></div><div class="ttdoc">Read-only string stream. </div><div class="ttdef"><b>Definition:</b> fwd.h:47</div></div>
<div class="ttc" id="namespacerapidjson_html_ad28b1de6aee37e92fc31792dd6dd6b19ae971aa1fc0ae64c8f3d2b47fd802846a"><div class="ttname"><a href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19ae971aa1fc0ae64c8f3d2b47fd802846a">rapidjson::kWriteNoFlags</a></div><div class="ttdoc">No flags are set. </div><div class="ttdef"><b>Definition:</b> writer.h:68</div></div>
+<div class="ttc" id="structrapidjson_1_1_transcoder_html"><div class="ttname"><a href="structrapidjson_1_1_transcoder.html">rapidjson::Transcoder</a></div><div class="ttdoc">Encoding conversion. </div><div class="ttdef"><b>Definition:</b> encodings.h:658</div></div>
+<div class="ttc" id="classrapidjson_1_1_writer_html_a190d964d3e62155e87153e858a0b04da"><div class="ttname"><a href="classrapidjson_1_1_writer.html#a190d964d3e62155e87153e858a0b04da">rapidjson::Writer::IsComplete</a></div><div class="ttdeci">bool IsComplete() const</div><div class="ttdoc">Checks whether the output is a complete JSON. </div><div class="ttdef"><b>Definition:</b> writer.h:145</div></div>
<div class="ttc" id="namespacerapidjson_html_ad28b1de6aee37e92fc31792dd6dd6b19ac1b5e17278b060e9e866df075c104c10"><div class="ttname"><a href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19ac1b5e17278b060e9e866df075c104c10">rapidjson::kWriteValidateEncodingFlag</a></div><div class="ttdoc">Validate encoding of JSON strings. </div><div class="ttdef"><b>Definition:</b> writer.h:69</div></div>
<div class="ttc" id="namespacerapidjson_html_a820f77efccfbb749bd15fe4822d2c740"><div class="ttname"><a href="namespacerapidjson.html#a820f77efccfbb749bd15fe4822d2c740">rapidjson::PutReserve</a></div><div class="ttdeci">void PutReserve(Stream &amp;stream, size_t count)</div><div class="ttdoc">Reserve n characters for writing to a stream. </div><div class="ttdef"><b>Definition:</b> stream.h:84</div></div>
<div class="ttc" id="namespacerapidjson_html_a44eb33eaa523e36d466b1ced64b85c84"><div class="ttname"><a href="namespacerapidjson.html#a44eb33eaa523e36d466b1ced64b85c84">rapidjson::SizeType</a></div><div class="ttdeci">unsigned SizeType</div><div class="ttdoc">Size type (for string lengths, array sizes, etc.) </div><div class="ttdef"><b>Definition:</b> rapidjson.h:389</div></div>
<div class="ttc" id="classrapidjson_1_1_writer_html_a849e2b675a2b868699a14d45c7396f24"><div class="ttname"><a href="classrapidjson_1_1_writer.html#a849e2b675a2b868699a14d45c7396f24">rapidjson::Writer::String</a></div><div class="ttdeci">bool String(const Ch *const &amp;str)</div><div class="ttdoc">Simpler but slower overload. </div><div class="ttdef"><b>Definition:</b> writer.h:260</div></div>
-<div class="ttc" id="namespacerapidjson_html_ad28b1de6aee37e92fc31792dd6dd6b19"><div class="ttname"><a href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19">rapidjson::WriteFlag</a></div><div class="ttdeci">WriteFlag</div><div class="ttdoc">Combination of writeFlags. </div><div class="ttdef"><b>Definition:</b> writer.h:67</div></div>
+<div class="ttc" id="namespacerapidjson_html_ad28b1de6aee37e92fc31792dd6dd6b19"><div class="ttname"><a href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19">rapidjson::WriteFlag</a></div><div class="ttdeci">WriteFlag</div><div class="ttdoc">Combination of writeFlags </div><div class="ttdef"><b>Definition:</b> writer.h:67</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a9f2e7047832dce1029551b5de0f05607">rapidjson::kFalseType</a></div><div class="ttdoc">false </div><div class="ttdef"><b>Definition:</b> rapidjson.h:618</div></div>
+<div class="ttc" id="structrapidjson_1_1_generic_string_stream_html_a2556705b0a0fd6393862efe6db025b32"><div class="ttname"><a href="structrapidjson_1_1_generic_string_stream.html#a2556705b0a0fd6393862efe6db025b32">rapidjson::GenericStringStream::head_</a></div><div class="ttdeci">const Ch * head_</div><div class="ttdoc">Original head of the string. </div><div class="ttdef"><b>Definition:</b> stream.h:125</div></div>
<div class="ttc" id="classrapidjson_1_1_writer_html_a8acb89b2bbb1e5f384e6076b65044dbe"><div class="ttname"><a href="classrapidjson_1_1_writer.html#a8acb89b2bbb1e5f384e6076b65044dbe">rapidjson::Writer::RawValue</a></div><div class="ttdeci">bool RawValue(const Ch *json, size_t length, Type type)</div><div class="ttdoc">Write a raw JSON value. </div><div class="ttdef"><b>Definition:</b> writer.h:273</div></div>
+<div class="ttc" id="structrapidjson_1_1_generic_string_stream_html_a9a38a9d5b1ce782cacd4ec1bdf87fc2d"><div class="ttname"><a href="structrapidjson_1_1_generic_string_stream.html#a9a38a9d5b1ce782cacd4ec1bdf87fc2d">rapidjson::GenericStringStream::src_</a></div><div class="ttdeci">const Ch * src_</div><div class="ttdoc">Current read position. </div><div class="ttdef"><b>Definition:</b> stream.h:124</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_ga5dc14176a9e71ace282404b0bcda57a1"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga5dc14176a9e71ace282404b0bcda57a1">RAPIDJSON_LIKELY</a></div><div class="ttdeci">#define RAPIDJSON_LIKELY(x)</div><div class="ttdoc">Compiler branching hint for expression with high probability to be true. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:468</div></div>
-<div class="ttc" id="structrapidjson_1_1_writer_1_1_level_html"><div class="ttname"><a href="structrapidjson_1_1_writer_1_1_level.html">rapidjson::Writer::Level</a></div><div class="ttdoc">Information for each nested level. </div><div class="ttdef"><b>Definition:</b> writer.h:289</div></div>
+<div class="ttc" id="structrapidjson_1_1_writer_1_1_level_html"><div class="ttname"><a href="structrapidjson_1_1_writer_1_1_level.html">rapidjson::Writer::Level</a></div><div class="ttdoc">Information for each nested level </div><div class="ttdef"><b>Definition:</b> writer.h:289</div></div>
<div class="ttc" id="structrapidjson_1_1_writer_1_1_level_html_a5d17bdfa9ded5de72f5f91175cc3e36b"><div class="ttname"><a href="structrapidjson_1_1_writer_1_1_level.html#a5d17bdfa9ded5de72f5f91175cc3e36b">rapidjson::Writer::Level::valueCount</a></div><div class="ttdeci">size_t valueCount</div><div class="ttdoc">number of values in this level </div><div class="ttdef"><b>Definition:</b> writer.h:291</div></div>
-<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
+<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4">rapidjson::Type</a></div><div class="ttdeci">Type</div><div class="ttdoc">Type of JSON value </div><div class="ttdef"><b>Definition:</b> rapidjson.h:616</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4acf030b422a32c3647c7c5973bd4dd0a9">rapidjson::kObjectType</a></div><div class="ttdoc">object </div><div class="ttdef"><b>Definition:</b> rapidjson.h:620</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_ga6a2b1695c13e77ae425e3cbac980ccb5"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga6a2b1695c13e77ae425e3cbac980ccb5">RAPIDJSON_UNLIKELY</a></div><div class="ttdeci">#define RAPIDJSON_UNLIKELY(x)</div><div class="ttdoc">Compiler branching hint for expression with low probability to be true. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:481</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a058c622e1e7d59419ae58b895cbce468">rapidjson::kArrayType</a></div><div class="ttdoc">array </div><div class="ttdef"><b>Definition:</b> rapidjson.h:621</div></div>
-<div class="ttc" id="classrapidjson_1_1_writer_html"><div class="ttname"><a href="classrapidjson_1_1_writer.html">rapidjson::Writer</a></div><div class="ttdoc">JSON writer. </div><div class="ttdef"><b>Definition:</b> fwd.h:95</div></div>
+<div class="ttc" id="classrapidjson_1_1_writer_html"><div class="ttname"><a href="classrapidjson_1_1_writer.html">rapidjson::Writer</a></div><div class="ttdoc">JSON writer </div><div class="ttdef"><b>Definition:</b> fwd.h:95</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4a952871e4326b527154fc8aac1ac1f6ff">rapidjson::kNullType</a></div><div class="ttdoc">null </div><div class="ttdef"><b>Definition:</b> rapidjson.h:617</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4ad6379da3dc04b83a591992bfb9fabba7">rapidjson::kStringType</a></div><div class="ttdoc">string </div><div class="ttdef"><b>Definition:</b> rapidjson.h:622</div></div>
-<div class="ttc" id="namespacerapidjson_html_ad28b1de6aee37e92fc31792dd6dd6b19a5b5ca665afdfa828a74ae5755c67a226"><div class="ttname"><a href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19a5b5ca665afdfa828a74ae5755c67a226">rapidjson::kWriteDefaultFlags</a></div><div class="ttdoc">Default write flags. Can be customized by defining RAPIDJSON_WRITE_DEFAULT_FLAGS. ...</div><div class="ttdef"><b>Definition:</b> writer.h:71</div></div>
+<div class="ttc" id="namespacerapidjson_html_ad28b1de6aee37e92fc31792dd6dd6b19a5b5ca665afdfa828a74ae5755c67a226"><div class="ttname"><a href="namespacerapidjson.html#ad28b1de6aee37e92fc31792dd6dd6b19a5b5ca665afdfa828a74ae5755c67a226">rapidjson::kWriteDefaultFlags</a></div><div class="ttdoc">Default write flags. Can be customized by defining RAPIDJSON_WRITE_DEFAULT_FLAGS </div><div class="ttdef"><b>Definition:</b> writer.h:71</div></div>
<div class="ttc" id="classrapidjson_1_1_writer_html_a72cefd18d176bc12a53adb3185c51ca7"><div class="ttname"><a href="classrapidjson_1_1_writer.html#a72cefd18d176bc12a53adb3185c51ca7">rapidjson::Writer::Flush</a></div><div class="ttdeci">void Flush()</div><div class="ttdoc">Flush the output stream. </div><div class="ttdef"><b>Definition:</b> writer.h:283</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_ga1975595e2f1dc20a2d4859f340ac88c6"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#ga1975595e2f1dc20a2d4859f340ac88c6">RAPIDJSON_WRITE_DEFAULT_FLAGS</a></div><div class="ttdeci">#define RAPIDJSON_WRITE_DEFAULT_FLAGS</div><div class="ttdoc">User-defined kWriteDefaultFlags definition. </div><div class="ttdef"><b>Definition:</b> writer.h:63</div></div>
-<div class="ttc" id="classrapidjson_1_1_writer_html_a0cde8037db76f887cd9c557fd68630c5"><div class="ttname"><a href="classrapidjson_1_1_writer.html#a0cde8037db76f887cd9c557fd68630c5">rapidjson::Writer::IsComplete</a></div><div class="ttdeci">bool IsComplete() const </div><div class="ttdoc">Checks whether the output is a complete JSON. </div><div class="ttdef"><b>Definition:</b> writer.h:145</div></div>
-<div class="ttc" id="classrapidjson_1_1_writer_html_aff66881798d01e932a0b8b8ef97b0373"><div class="ttname"><a href="classrapidjson_1_1_writer.html#aff66881798d01e932a0b8b8ef97b0373">rapidjson::Writer::Double</a></div><div class="ttdeci">bool Double(double d)</div><div class="ttdoc">Writes the given double value to the stream. </div><div class="ttdef"><b>Definition:</b> writer.h:195</div></div>
+<div class="ttc" id="classrapidjson_1_1_writer_html_aff66881798d01e932a0b8b8ef97b0373"><div class="ttname"><a href="classrapidjson_1_1_writer.html#aff66881798d01e932a0b8b8ef97b0373">rapidjson::Writer::Double</a></div><div class="ttdeci">bool Double(double d)</div><div class="ttdoc">Writes the given double value to the stream </div><div class="ttdef"><b>Definition:</b> writer.h:195</div></div>
<div class="ttc" id="namespacerapidjson_html_a0a774dcffe8ae07686f459ae017d2f20"><div class="ttname"><a href="namespacerapidjson.html#a0a774dcffe8ae07686f459ae017d2f20">rapidjson::PutUnsafe</a></div><div class="ttdeci">void PutUnsafe(Stream &amp;stream, typename Stream::Ch c)</div><div class="ttdoc">Write character to a stream, presuming buffer is reserved. </div><div class="ttdef"><b>Definition:</b> stream.h:91</div></div>
-<div class="ttc" id="classrapidjson_1_1_writer_html_a98a421c806b456688874511f64add1f2"><div class="ttname"><a href="classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2">rapidjson::Writer::Writer</a></div><div class="ttdeci">Writer(OutputStream &amp;os, StackAllocator *stackAllocator=0, size_t levelDepth=kDefaultLevelDepth)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> writer.h:103</div></div>
+<div class="ttc" id="classrapidjson_1_1_writer_html_a98a421c806b456688874511f64add1f2"><div class="ttname"><a href="classrapidjson_1_1_writer.html#a98a421c806b456688874511f64add1f2">rapidjson::Writer::Writer</a></div><div class="ttdeci">Writer(OutputStream &amp;os, StackAllocator *stackAllocator=0, size_t levelDepth=kDefaultLevelDepth)</div><div class="ttdoc">Constructor </div><div class="ttdef"><b>Definition:</b> writer.h:103</div></div>
<div class="ttc" id="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g_html_gabeba18d612187bad2ac62aed9276d47c"><div class="ttname"><a href="group___r_a_p_i_d_j_s_o_n___c_o_n_f_i_g.html#gabeba18d612187bad2ac62aed9276d47c">RAPIDJSON_ASSERT</a></div><div class="ttdeci">#define RAPIDJSON_ASSERT(x)</div><div class="ttdoc">Assertion. </div><div class="ttdef"><b>Definition:</b> rapidjson.h:411</div></div>
<div class="ttc" id="classrapidjson_1_1_writer_html_ac4026d3f14b80d6d7fc10004b1972722"><div class="ttname"><a href="classrapidjson_1_1_writer.html#ac4026d3f14b80d6d7fc10004b1972722">rapidjson::Writer::Reset</a></div><div class="ttdeci">void Reset(OutputStream &amp;os)</div><div class="ttdoc">Reset the writer with a new stream. </div><div class="ttdef"><b>Definition:</b> writer.h:135</div></div>
<div class="ttc" id="namespacerapidjson_html_ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a"><div class="ttname"><a href="namespacerapidjson.html#ae79a4751c1c460ff0de5ecc07874f3e4abe572cb44ce198e467ccf9d63d50d82a">rapidjson::kNumberType</a></div><div class="ttdoc">number </div><div class="ttdef"><b>Definition:</b> rapidjson.h:623</div></div>
@@ -829,7 +123,7 @@ $(document).ready(function(){initNavTree('writer_8h_source.html','');});
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
- <li class="navelem"><a class="el" href="dir_2e777bb85672ca91d8484c1593fb1d89.html">include</a></li><li class="navelem"><a class="el" href="dir_0b07344794a20f8375311f92e90cd9a3.html">rapidjson</a></li><li class="navelem"><b>writer.h</b></li>
+ <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_32fb88e4d38e67d524aa70efbc36f66b.html">rapidjson</a></li><li class="navelem"><b>writer.h</b></li>
</ul>
</div>
</body>